Nizza Rsync auf Remote-Maschine


25

Gibt es eine Möglichkeit, bei Verwendung von rsync + ssh für den Zugriff auf einen Remotecomputer den rsync-Prozess auf dem Remotecomputer zu "netten" (um dessen Priorität zu verringern)?

Bearbeitung der Frage zur Klärung:

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...

(rsync line snipped)

Dies ist ein Backup-Cron-Job, der normalerweise um 4 Uhr morgens ausgeführt wird. Wenn ich jedoch wach bin (und einen Commit durchführe oder Bugzilla auf demselben Computer verwende), wird die Serverleistung beeinträchtigt, und ich wollte einen schnellen "Hack", um dies zu beheben es ein bisschen.

Antworten:


35

Sie können die --rsync-pathOption verwenden, z.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
Sie könnten auch die Verwendung von ionice in Betracht ziehen , z. B. --rsync-path="ionice -c 3 nice rsync"wenn moderne Linuxe die E / A-Priorität für nice'd-Prozesse automatisch verringern (siehe die von mir verlinkte Manpage).
Jo Liss

Ich habe es bereits versucht, aber mein SSHD läuft immer noch umnice 0
Felipe Alvarez

Auf FreeBSD-ähnlichen Systemen, auf denen Sie keine haben ionice, ist die Einstellung der --bwlimitOption für eine bessere Synchronisierung gut.
deed02392

1
Ich hatte auch ein Problem mit dieser Option, das keinen Unterschied machte. Es stellte sich heraus, dass der Server, zu dem ich eine Verbindung herstellte, in authorized_keys so konfiguriert war, dass nur ein bestimmter rsync-Befehl akzeptiert wurde, der die von --rsync-pathmir angegebene Option überschrieb .
Andy Beverley

7
  • Nehmen Sie die --rsync-pathOption, die Sie habenrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Mit der Option Konfigurationsdatei können Sie /etc/default/rsyncden RSYNC_NICE='17'Wert und den RSYNC_IONICE='-c3'Wert in der Datei ändern oder auskommentieren

Für beide gilt der Ionice- Wert für die Festplattenpriorität

  • 1 -> Echtzeit
  • 2 -> Beste Mühe
  • 3 -> Ildle (wenn irgendein anderer Prozess die HD nicht verwendet)

Beachten Sie, dass der cfqScheduler für Linux nur wirklich IO-Klassen und Prioritäten implementiert. Wenn der Remote - Systemadministrator an IO - Scheduler entschieden hat noop, deadlineoder einige exotischere Variante können Sie feststellen , dass ionicewirklich nichts tut. Man sollte in der Lage sein, eine hohe Leistung von cfqIO-Klassen und Prioritäten zu erzielen und diese dennoch nutzen zu können, indem man cfq richtig einstellt .

für einen guten Wert für die Prozessorpriorität

  • -20 (am günstigsten für den Prozess)
  • (Standard 10), wenn -n nicht angegeben ist
  • 19 (am ungünstigsten für den Prozess)

Für wen ist verantwortlich /etc/default/rsync? Liest rsync selbst diese Datei oder wird dies von der Linux-Version / -Distribution durchgeführt?
Guettli

... Ich glaube, die Lösung /etc/default/rsyncist die Standarddatei für den rsync-Daemon-Modus. Ich denke, es gilt nur, wenn Sie über Rsync-Protokoll mit dem Rsync-Daemon verbinden. Ich denke, es gilt nicht, wenn Sie es über ssh aufrufen.
Guettli

2

Eine schnelle und unsaubere Lösung wäre, ein kleines Wrapper-Skript mit dem Namen 'rsync' zu erstellen, das den $ PATH vor der eigentlichen rsync-Binärdatei schattiert:

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

Oder richten Sie die Datei authorized_keys so ein, dass die Synchronisierung von rsync durchgeführt wird. (Angenommen, Sie verwenden SSH-Schlüssel).

Beispiel:

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

Jetzt in deiner /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


2

Sie können die Komprimierung im Netzwerk deaktivieren, indem Sie das -zArgument nicht angeben, wodurch auf beiden Seiten CPU-Zeit gespart wird. Oder ändern Sie, wie rsync Prüfsummen verwendet--checksum


Ich habe Hasturkuns Antwort akzeptiert (da sie meine Frage beantwortet hat), aber Sie haben einen guten Punkt angesprochen: Ich habe mit Komprimierung verglichen und ohne Komprimierung, und es hat nur 2 Minuten zum Job beigetragen. Ich habe mich so sehr daran gewöhnt, -avz als Flag zu verwenden, dass ich nie daran gedacht hätte, -z zu löschen.
Walling

Meine Gewohnheit ist es, -aPh zu verwenden, ich verwende selten -z
Rory

0

Rsync sollte nicht viel CPU verwenden. Ich bezweifle, dass Sie eine gewisse Freundlichkeit vom anderen Ende erzwingen können, aber Sie könnten die Bandbreite, die rsync mit einer Firewall verwendet, begrenzen, was letztendlich dazu führen würde, dass weniger Zeit für die Verarbeitung benötigt wird.


Es wurde eine Ausgabe von 'ps aux' hinzugefügt, um zu zeigen, was die CPU leistet. Ich gehe über eine langsame Verbindung, daher habe ich die Option --compress aktiviert, aber es verursacht auch eine gute Menge an Festplattenzugriff, auf den ich hoffte, durch die Verwendung eines netten (unbeabsichtigten Nebeneffekts)
mwalling

Das Festlegen eines netten Werts wirkt sich normalerweise auch auf die E / A-Genauigkeit aus, die normalerweise von jemandem gewünscht wird.
Bram Schoenmakers

rsyncBenötigt nicht viel CPU, kann aber toptrotzdem auftreten, je nachdem, ob der aktuelle Kernel die E / A-Wartezeit als belegt ansieht. Wenn ein anderer Prozess auf den Speicher zugreifen muss und rsyncmit voller Geschwindigkeit ausgeführt werden kann, werden alle anderen Prozesse dadurch verlangsamt.
Mikko Rantalainen

-7

Ich glaube nicht, dafür brauchst du eine benutzerdefinierte Lösung. Benutze ftp


6
Weißt du, das ist eine gute Idee. Wer alle Funktionen von rsync benötigt, wie das Ausführen von ssh, ohne dass ein Daemon auf dem Remotecomputer ausgeführt werden muss (und die inhärente Verschlüsselung von ssh), die Komprimierung überträgt, das Herunterladen fortsetzt und nur die Unterschiede überträgt ... das ist alles aufblähen. Ich renne jetzt nach Hause und benutze mein PS / 2-System 60, um einen Anime zu FTPen!
Walling

Bitte löschen Sie diese Antwort, da sie die Frage nicht beantwortet und eine Alternative bietet, die erheblich schlechter ist als das Beispiel in der Frage.
user1133275
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.