Ładna rsync na zdalnej maszynie

25

Czy podczas korzystania z rsync + ssh w celu uzyskania dostępu do zdalnego komputera istnieje sposób „miłego” procesu rsync na zdalnym komputerze (aby obniżyć jego priorytet)?

Edycja pytania w celu wyjaśnienia:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(linia rsync została wycięta)

Jest to zadanie kopii zapasowej crona, które normalnie działa o 4 rano, ale kiedy się obudziłem (i popełniałem błąd lub korzystałem z Bugzilli hostowanej na tej samej maszynie), zabija ono wydajność serwera, więc chciałem szybko „zhakować”, aby spróbować naprawić to trochę.

mwalling
źródło

Odpowiedzi:

35

Możesz skorzystać z --rsync-pathopcji, np.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
Hasturkun
źródło
15
Możesz również rozważyć użycie ionice , np. --rsync-path="ionice -c 3 nice rsync"Chociaż nowoczesne Linuxy automatycznie zmniejszają priorytet IO dla ładnych procesów (zobacz stronę podręcznika, którą podłączyłem).
Jo Liss
Próbowałem już tego, ale mój sshd wciąż działa wnice 0
Felipe Alvarez
na systemach takich jak FreeBSD, w których nie masz ionice, ustawienie tej --bwlimitopcji jest dobre dla ładniejszego rsync.
deed02392
1
Miałem też problem z tą opcją, która nie robi żadnej różnicy. Okazało się, że serwer, z którym się łączyłem, został skonfigurowany w uprawnionych kluczach do akceptowania tylko określonej komendy rsync, która przesłaniała podaną --rsync-pathprzeze mnie opcję.
Andy Beverley,
7
  • Wybierając --rsync-pathopcję, którą maszrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Biorąc opcja Plik konfiguracyjny można zmienić lub Odkomentuj w pliku /etc/default/rsyncna RSYNC_NICE='17'wartość i RSYNC_IONICE='-c3'wartość

Zarówno wartość jonice będzie miała priorytet dla twardego dysku

  • 1 -> W czasie rzeczywistym
  • 2 -> Najlepszy wysiłek
  • 3 -> Ildle (gdy jakikolwiek inny proces nie korzysta z HD)

Zauważ, że w przypadku Linuksa tylko cfqharmonogram tak naprawdę implementuje klasy IO i priorytety. Jeśli zdalny administrator systemu zdecydował się na IO scheduler noop, deadlinealbo jakiś bardziej egzotyczny wariant może się okazać, że ionicetak naprawdę nic nie robi. Trzeba być w stanie uzyskać wysoką wydajność cfqi nadal być w stanie korzystać z klas IO i priorytetów poprzez prawidłowe dostrojenie cfq .

za niezłą wartość dla priorytetu procesora

  • -20 (najbardziej sprzyjające procesowi)
  • (domyślnie 10), jeśli nie podano -n
  • 19 (najmniej korzystny dla procesu)
Philippe Gachoud
źródło
Kto jest odpowiedzialny /etc/default/rsync? Czy samo rsync czyta ten plik, czy też robi to linux-flavour / Distribution?
guettli,
... Wydaje mi się, że rozwiązaniem /etc/default/rsyncjest plik domyślny dla trybu demona rsync. Wydaje mi się, że dotyczy to tylko połączenia z demonem rsync za pomocą protokołu rsync. Myślę, że nie dotyczy to połączenia przez ssh.
guettli,
2

Szybkim i brudnym rozwiązaniem byłoby utworzenie małego skryptu otoki o nazwie „rsync”, który przesłania $ PATH przed prawdziwym plikiem binarnym rsync, takim jak:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Lub skonfiguruj plik author_keys, aby wykonywał nicowanie rsync. (Zakładając, że używasz kluczy ssh).

przykład:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Teraz w twoim /home/user/bin/nice-rsync.sh

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH

pyhimys
źródło
2

Możesz wyłączyć kompresję w sieci, nie dołączając -zargumentu, co może zaoszczędzić trochę czasu procesora po obu stronach. Lub zmień sposób, w jaki rsync używa sum kontrolnych, spójrz na--checksum

Rory
źródło
Zaakceptowałem odpowiedź Hasturkuna (skoro odpowiedziała na moje pytanie), ale przywołałeś dobry punkt: porównałem kompresję z kompresją bez kompresji i dodałem tylko 2 minuty do zadania. Właśnie tak przyzwyczaiłem się do używania -avz jako moich flag, że nigdy nie myślałem o upuszczeniu -z.
mwalling
Mam w zwyczaju używać -aPh, rzadko używam -z
Rory
0

Rsync nie powinien zużywać dużo procesora. Wątpię, czy możesz wymusić pewną uprzejmość z drugiego końca, ale to, co możesz zrobić, to ograniczyć przepustowość, którą rsync używa z zaporą ogniową, co ostatecznie zmniejszy ilość przetwarzania, którą może wykonać w X czasie.

Zimmy-DUB-Zongy-Zong-DUBBY
źródło
Dodano dane wyjściowe z „ps aux”, aby pokazać, co robi, jeśli chodzi o procesor. Idę przez powolne łącze, więc mam opcja --compress włączone, ale jest także powodując ilość dobrego dostępu dysku, który miałem nadzieję zbić za pomocą Nicea (niezamierzony skutek uboczny)
mwalling
Ustawienie dobrej wartości zwykle wpływa również na bezpieczeństwo operacji we / wy, czego zwykle chce ktoś.
Bram Schoenmakers
rsyncnie wymaga dużo procesora, ale może się topjednak pojawić w zależności od tego, czy bieżące jądro uzna, że ​​operacje we / wy są zajęte. Ponadto, jeśli jakikolwiek inny proces musi uzyskać dostęp do pamięci i rsyncmoże działać w pełnym tempie, wszystkie inne procesy zostaną spowolnione.
Mikko Rantalainen
-7

Nie sądzę, potrzebujesz do tego niestandardowego rozwiązania ... użyj ftp

ultraman
źródło
6
Wiesz, to dobry pomysł. Kto potrzebuje wszystkich funkcji rsync, takich jak możliwość uruchamiania przez ssh bez potrzeby demona działającego na zdalnej maszynie (i nieodłącznego szyfrowania ssh), kompresja transferu, wznawianie pobierania, tylko przenoszenie różnic ... to wszystko nadąć. Mam zamiar teraz pobiec do domu i użyć mojego PS / 2 System 60 do FTP trochę anime!
mwalling
Usuń tę odpowiedź, ponieważ nie odpowiada ona na pytanie i oferuje alternatywę znacznie gorszą niż przykład w pytaniu.
user1133275