Möglichkeiten zur Leistungsoptimierung in Pipelines über Netzwerk (RSH und SSH)

Möglichkeiten zur Leistungsoptimierung in Pipelines über Netzwerk (RSH und SSH)

Stellen Sie sich eine Datenübertragung über ein Pipeline-Netzwerk in Legacy-Systemen mit Remote Shell (RSH) vor, wie:

rsh host -l user tar -cf - /home/dir \| compress | uncompress | tar -xvf -

und dieses in „modernen“ Systemen:

ssh user@host tar -cf - /home/dir \| gzip | ungzip | tar -xvf -

PERFORMANCE-PROBLEME:

Bei einer Übertragung zwischen AIX 4.3 und AIX 5.3 mit RSH war die Leistung sehr schlecht. Selbst wenn ich inaktive Karten (10/100) über einen inaktiven Switch angeschlossen hatte, erreichte ich eine Leistung von etwa 350 Kbit/s bei der Übertragung von 5,4 GB.

Wenn diese Übertragung zwischen AIX 5.3 und Linux ausgeführt wird, jetzt aber SSH und gzip verwendet, ist die Leistung wesentlich besser, erreicht aber nie die Netzwerkkapazität (in einem 1-Gigabit-LAN ​​erreichte ich durchschnittlich etwa 400 Mbit/s).

Gibt es Möglichkeiten, die Leistung der Netzwerkpipeline zu optimieren, vielleicht durch Anpassen von Pipe-Puffer oder Netzwerkblöcken/-puffern oder was?

Antwort1

Ich denke, dass es, zumindest beim SSH-Teil, eher zu einer CPU-Beschränkung als einer Bandbreitenbeschränkung kommt.

Ich erreiche etwa 45-50 MB/s mit scp (ssh cp) zwischen zwei ansonsten inaktiven Servern, da die Verschlüsselung/Entschlüsselung auf den Servern der limitierende Faktor ist. Wenn Sie gzip/ungzip hinzufügen, kann die Geschwindigkeit je nach der Anzahl der verfügbaren Kerne noch weiter sinken.

Unkomprimierte und unverschlüsselte Übertragungen liefern bessere Werte. Sie können es ohne die Komprimierungsbefehle versuchen und sehen, wie es läuft.

Antwort2

Haben Sie bereits einen grundlegenden Geschwindigkeitstest durchgeführt, um Komprimierung und Festplatten-E/A auszuschließen?

Das ist ziemlich einfach: Verbinden Sie sich per FTP von einem der betroffenen Hosts mit einem anderen und führen Sie es aus,
put "|dd if=/dev/zero bs=1M count=1000″ /dev/null
wodurch 1 GB von /dev/zero auf der einen Seite gelesen und auf /dev/null auf der anderen Seite geschrieben wird. Dies testet die reine Netzwerkbandbreite. Dies wird ausführlicher beschrieben, z. B. unter
AIXChange-Blog: Zwei Möglichkeiten zur Messung der Netzwerkleistung

-o Cipher=arcfour ...Bei der Übertragung per scp könnte man versuchen, die Verschlüsselung zu reduzieren, indem man alternativ zu scp einen weniger anspruchsvollen Stromchiffre (RC4) verwendet .

Siehe aucheine verwandte FrageIch schlage vor, die -CKomprimierung zu aktivieren, obwohl, soweit ich verstanden habe, in Ihrem Fall die CPU-Leistung und nicht die Netzwerkbandbreite der begrenzende Faktor ist, sodass die Komprimierung die Dinge wahrscheinlich verschlimmern würde.

verwandte Informationen