Frage Warum ist mein rsync so langsam?


Mein Laptop und meine Workstation sind beide mit einem Gigabit-Switch verbunden. Beide betreiben Linux. Aber wenn ich Dateien mit kopiere rsyncEs funktioniert schlecht.

Ich bekomme ca. 22 MB / s. Sollte ich theoretisch nicht etwa 125 MB / s bekommen? Was ist hier der limitierende Faktor?

BEARBEITEN: Ich habe einige Experimente durchgeführt.

Schreib Leistung auf den Laptop

Der Laptop hat ein xfs-Dateisystem mit voller Festplattenverschlüsselung. Es verwendet aes-cbc-essiv:sha256 Verschlüsselungsmodus mit 256 Bit Schlüssellänge. Festplattenschreibleistung ist 58,8 MB / s.

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

Lesen Sie die Leistung auf der Workstation

Die Dateien, die ich kopiert habe, sind auf einem Software-RAID-5 über 5 HDDs. Über dem Raid ist ein LVM. Das Volume selbst ist mit der gleichen Verschlüsselung verschlüsselt. Die Workstation verfügt über eine FX-8150-CPU mit einem nativen AES-NI-Befehlssatz, der die Verschlüsselung beschleunigt. Disk-Lese-Leistung ist 256 MB / s (Cache war kalt).

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

Netzwerkleistung

Ich lief Iperf zwischen den zwei Klienten. Netzwerkleistung ist 939 Mbit / s

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec

40
2018-04-07 23:04


Ursprung


rsync: // Protokoll oder Tunneling über SSH? Im letzteren Fall gibt es sehr deutliche Leistungseinschränkungen¹. - ephemient


Antworten:


Eine andere Möglichkeit, die hohe CPU-Auslastung zu verringern, aber die Funktionalität von rsync beizubehalten, besteht darin, von rsync / SSH zu rsync / NFS zu wechseln. Sie können die Pfade, von denen Sie kopieren möchten, über NFS exportieren und dann rsync lokal von der NFS-Bereitstellung an Ihren Zielspeicherort verwenden.

Bei einem Test von einer WD MyBook Live-Netzwerkdiskette würden eine oder mehrere rsyncs vom NAS in einem Gigabit-Netzwerk auf 2 lokale USB-Festplatten nach dem Exportieren nicht mehr als 10 MB / s (CPU: 80% usr, 20% sys) kopieren NFS und rsyncing lokal von der NFS-Freigabe auf beide Festplatten habe ich insgesamt 45MB / sec (maxing beide USB2-Festplatten) und wenig CPU-Auslastung. Die Plattenauslastung bei Verwendung von rsync / SSH betrug etwa 6% und die Verwendung von rsync / NFS lag näher bei 24%, während bei beiden USB2-Festplatten fast 100% erreicht wurden.

Wir haben den Flaschenhals von der NAS-CPU auf beide USB2-Festplatten verschoben.


18
2017-08-02 22:50



Seien Sie jedoch gewarnt, dass NFS keine Sicherheit bietet (zB: Verschlüsselung). - WhyNotHugo
Das hat super funktioniert! Jetzt bekam ich fast volle Gigabit-Geschwindigkeit, als ich vorher nur ~ 100 Mb / s bekam. - PHLAK
Kannst du darauf hinweisen, wie man rsync / NFS benutzt? Ich versuche 8Tb zwischen 2 MyCloud-Laufwerken zu übertragen und es dauert ewig mit rsync über ssh (4MB / sec) - FMaz008


Gründe dafür können sein: Komprimierung, Verschlüsselung, Anzahl und Größe der zu kopierenden Dateien, die I / O-Fähigkeiten Ihrer Quell- und Zielsysteme, TCP-Overhead ... Dies sind alles Faktoren, die die Art der übertragenen Daten beeinflussen können.

Bitte veröffentlichen Sie den von Ihnen verwendeten rsync-Befehl und geben Sie Einzelheiten zu den Spezifikationen beider Computer an.


Bearbeiten: Verschlüsselung ist oft ein begrenzender Faktor in Rsync-Geschwindigkeiten. Sie können mit ssh und einer leichteren Verschlüsselungsmethode wie arcfour

So etwas wie: rsync -e "ssh -c arcfour"

Oder Sie können eine modifizierte rsync / ssh verwenden, die die Verschlüsselung deaktivieren kann. Siehe hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Aber wieder, Ihr Laptop hat eine langsame Fahrt im Vergleich zu Ihrer Arbeitsstation. Schreibvorgänge können blockiert werden und warten darauf, dass I / O auf Ihren Laptop geht. Was sind deine wirklichen Leistungserwartungen?


26
2018-04-07 23:12



Laptops haben oft langsamere Festplatten (7200 rpm - 5400 rpm), weil sie weniger Strom verbrauchen. Dies könnte leicht Ihr limitierender Faktor sein, abhängig davon, was genau der rsync tut. - Ladadadada
Vielen Dank. Zum rsyncning von einem dm-Krypta verschlüsselte Festplatte, die an einen Atomprozessor angeschlossen ist Ecryptfs ARM NAS Box, dies änderte meine Übertragungsgeschwindigkeit von 4MB / s auf 6MB / s. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/pics Besser als nichts. - Sebastian
Diese Antwort. Von rsync -azP zu rsync-aPe "ssh -c arcfour" erhöhte die Übertragungsgeschwindigkeit von 4MB / Sek. Auf 25MB / Sek. Zwischen zwei MyCloud Mirror-Laufwerken. Die CPU der empfangenden Einheit ist jetzt ausgereizt. (Ich denke, das bedeutet, ich übertrage so schnell, wie die Einheit Daten schreiben kann) - FMaz008


Nach einigen weiteren Tests fand ich die Antwort schließlich selbst. rsync verwendet standardmäßig Tunneling über SSH. Das Krypto macht es langsam. Also musste ich das Krypto-Zeug umgehen.

Lösung 1: Einrichten eines Rsync-Servers

Um es über die zu verwenden rsync Protokoll müssen Sie einen rsyncd-Server einrichten. Da war ein /etc/init.d/rsyncSkript auf meinem Laptop, also rate ich, rsyncd lief. Ich hab mich geirrt. /etc/init.d/rsync start existiert stillschweigend, wenn rsync nicht aktiviert ist /etc/default/rsync. Dann müssen Sie es auch konfigurieren /etc/rsyncd.confDas ist ein Schmerz.

Wenn du das alles gemacht hast, musst du es benutzen rsync file.foo user@machine::directory. Bitte beachten Sie, dass es zwei Doppelpunkte.

Lösung 2: Old-School rsh-server

Allerdings war die Konfiguration für mich viel zu kompliziert. Also ich habe gerade installiert und rsh-server Auf meinem Laptop. Aufruf von rsync auf der Workstation mit -e rexec verwendet dann rsh anstelle von ssh. Was dann die Performance fast verdoppelt hat 44,6 MB / s, die immer noch langsam ist. Die Geschwindigkeit springt zwischen 58 MB / s und 33 MB / s, was darauf hinweist, dass es Probleme mit Puffer- oder Überlastungssteuerung geben kann. Aber das geht über den Rahmen dieser Frage hinaus.


9
2018-04-08 13:25



Wir verwenden rsync hier ausgiebig und erhalten normalerweise die volle Schnittstellengeschwindigkeit, es sei denn, es werden Millionen von 4K-Dateien übertragen. Ich glaube nicht, dass das Krypto-Problem das Problem ist, es sei denn, Sie verwenden etwas ernsthaft heruntergekommene Hardware. - Magellan
Gilt ein Intel Core2 Duo T8100 in einem ThinkPad R61 als ernsthaft heruntergekommene Hardware? Wenn nicht, warum ist dann rsync über ssh langsamer als rsync über rsh? - iblue
Die Verschlüsselung ist oft ein limitierender Faktor für die rsync-Geschwindigkeit und die Anzahl der Dateien. Die Standardansätze, um dies zu verbessern, sind entweder rsync mit einer leichteren Verschlüsselung zu betreiben rsync -e "ssh -c arcfour" oder versuchen Sie eine modifizierte rsync / ssh, die Verschlüsselung deaktivieren kann. Sehen hpn-ssh: psc.edu/networking/projects/hpn-ssh - ewwhite


Dies sind eine sehr alte Frage und Antworten, aber eine wichtige Sache fehlt: Wenn Sie bereits komprimierte oder verschlüsselte Daten kopieren, deaktivieren Sie die Komprimierung.

Wenn Ihre Daten weder komprimiert noch verschlüsselt sind, wollen Sie sie nur einmal komprimieren! Rsync komprimiert mit -z, ssh komprimiert mit -C (möglicherweise standardmäßig). Ich habe nicht getestet, was besser ist, da meine Daten komprimiert sind.

Während ich dabei bin, können Sie die X-Weiterleitung und die TTY-Zuweisung deaktivieren, was zu folgenden Ergebnissen führt:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

Zuletzt, stellen Sie sicher (zum Beispiel mit iptraf) dass Sie tatsächlich die Netzwerkschnittstelle verwenden, von der Sie denken, dass Sie sie verwenden. Ich habe zu meiner großen Überraschung festgestellt, dass auf meinem OSX der ausgehende ssh an die IP auf der Standard-Ausgangsschnittstelle statt an die IP an der Schnittstelle gebunden war, an die die Pakete weitergeleitet werden sollten. Meine direkte GB-Verbindung zwischen zwei Laptops, die ebenfalls über WiFi verbunden waren, wurde nicht benutzt. Nach der Untersuchung war dies auf die Verwendung von 169.254 / 16 zurückzuführen, die der Mac an alle Schnittstellen anlegte, und der Zielcomputer reagierte auf ARP-Anfragen, obwohl die Anfrage auf einer anderen Schnittstelle einging.


2
2017-07-22 21:28



Gültige Optionen, aber ich finde, dass -x -T und -o Compression = no hatte nur geringe Auswirkungen auf die Übertragungsgeschwindigkeit. - FMaz008
Erwähnenswert ist auch, dass OpenSSH 6.7 Arcfour deaktiviert. - bparker
Das ist schade @bparker! Wissen wir, welche der verbleibenden verfügbaren Verschlüsselungen am hellsten auf der CPU ist? - Law29