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.
--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).nice 0
ionice
, ist die Einstellung der--bwlimit
Option für eine bessere Synchronisierung gut.--rsync-path
mir angegebene Option überschrieb .--rsync-path
Option, die Sie habenrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
/etc/default/rsync
denRSYNC_NICE='17'
Wert und denRSYNC_IONICE='-c3'
Wert in der Datei ändern oder auskommentierenFür beide gilt der Ionice- Wert für die Festplattenpriorität
Beachten Sie, dass der
cfq
Scheduler für Linux nur wirklich IO-Klassen und Prioritäten implementiert. Wenn der Remote - Systemadministrator an IO - Scheduler entschieden hatnoop
,deadline
oder einige exotischere Variante können Sie feststellen , dassionice
wirklich nichts tut. Man sollte in der Lage sein, eine hohe Leistung voncfq
IO-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
quelle
/etc/default/rsync
? Liest rsync selbst diese Datei oder wird dies von der Linux-Version / -Distribution durchgeführt?/etc/default/rsync
ist 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.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:
Oder richten Sie die Datei authorized_keys so ein, dass die Synchronisierung von rsync durchgeführt wird. (Angenommen, Sie verwenden SSH-Schlüssel).
Beispiel:
Jetzt in deiner /home/user/bin/nice-rsync.sh
HTH
quelle
Sie können die Komprimierung im Netzwerk deaktivieren, indem Sie das
-z
Argument nicht angeben, wodurch auf beiden Seiten CPU-Zeit gespart wird. Oder ändern Sie, wie rsync Prüfsummen verwendet--checksum
quelle
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.
quelle
rsync
Benötigt nicht viel CPU, kann abertop
trotzdem auftreten, je nachdem, ob der aktuelle Kernel die E / A-Wartezeit als belegt ansieht. Wenn ein anderer Prozess auf den Speicher zugreifen muss undrsync
mit voller Geschwindigkeit ausgeführt werden kann, werden alle anderen Prozesse dadurch verlangsamt.Ich glaube nicht, dafür brauchst du eine benutzerdefinierte Lösung. Benutze ftp
quelle