Wir müssen häufig große Dateien (über 50 GB) zwischen zwei Hosts übertragen, und die Übertragungsrate scheint nie den erwarteten Durchsatz für das Netzwerk zu erreichen. Es gibt mehrere Punkte, die den Engpass darstellen könnten, aber jede ihrer theoretischen Obergrenzen liegt weit über der tatsächlichen Übertragungsrate. Hier ist ein typisches Setup:
Laptop -> 802.11n -> AP -> CAT 6-Kabel -> 10/100 Mbit-Router -> Desktop
In diesem Zusammenhang ist der Engpass eindeutig der Router, der die Übertragungsrate auf 100 Mbit / s begrenzen würde. Selbst dann sehe ich selten eine Übertragungsrate (mit scp) von mehr als 9,5 MB / s, was 76 Mbit / s oder nur 76% der theoretischen Höchstgrenze entspricht.
Kann es am Access Point wirklich einen Overhead von 24% geben, oder gibt es noch etwas, das die Geschwindigkeit begrenzt? Es kann sich um Festplatten-E / A handeln (obwohl SATA mit 1,5 Gbit / s bewertet ist) oder um irgendetwas auf dem Motherboard zwischen Festplatte und Netzwerkkarte (wie kann ich das messen?).
Gibt es eine Möglichkeit, sicher zu wissen (*), wo der Engpass liegt? Wenn ich von einem 100-Mbit / s-Router nicht mehr als 76 Mbit / s erhalten kann, erhöht ein Upgrade des Netzwerks auf Gigabit den Durchsatz oder erhalte ich trotzdem 76 Mbit / s, weil der Engpass anderswo liegt?
(*) oder zumindest in einer Weise, die überzeugend genug ist, dass ein Chef bereit wäre, in die Aufrüstung dieses einen Teils des Netzwerks zu investieren
quelle
Antworten:
Ihr Problem ist, dass Sie zu viele Dinge gleichzeitig testen:
Da Sie SSH erwähnt haben, gehe ich davon aus, dass dies ein Unix-System ist ...
Sie können Probleme mit der Lesegeschwindigkeit der Festplatte mit einem einfachen ausschließen
Auf der Empfangsseite können Sie einen einfachen Disk-Write-Test durchführen
dd ist nicht wirklich ein "Benchmark", aber da scp sequentielle E / A verwendet, ist es nah genug
Sie können SSH auch testen, indem Sie so etwas tun
Um auszuschließen, dass SSH der Engpass ist, können Sie nc verwenden, um die Netzwerkleistung zu testen
Wenn Sie das Netzwerk wirklich richtig testen möchten, installieren und verwenden Sie etwas wie iperf, aber nc ist ein guter Anfang.
Ich würde mit dem NC-Test beginnen, da dies die meisten Dinge ausschließt. Sie sollten die Tests auch unbedingt ausführen, wenn Sie kein WLAN verwenden. 802.11n kann einen 100-MBit-Port problemlos ausschöpfen, jedoch nur, wenn Sie ihn ordnungsgemäß eingerichtet haben.
(Ubuntu> = 12.04 ist standardmäßig netcat-openbsd. Dies ist
nc -l -p 1234 > /dev/null
möglicherweise das, was Sie möchten, wenn Sie netcat-traditional verwenden.)quelle
dd | ssh
lief mit 6,5 MB / s bei 45% CPU-Auslastung über Powerline AV und 10,4 MB / s bei 75% CPU, als ich es auf den 1000BT-Switch umstellte.dd | nc
lief mit 10-15% CPU-Auslastung für beide Netzwerke, aber 6 MB / s (Powerline AV) und 40 MB / s auf dem 1000BT-Router (!).Denk darüber so;
Sie haben eine langsame (Laptop-Festplatten sind langsam) SATA-Festplatte, auf der das eine oder andere Dateisystem ausgeführt wird, die sich dann in ein IP-basiertes Dateifreigabeprotokoll wie SMB verwandelt. Dies wird dann in ein WLAN-Format umgewandelt, das dann auf einen AP trifft, der dann über kabelgebundenes Ethernet (für das eine Neuformulierung erforderlich ist) zu einem ziemlich langsamen Switch übergeht. Wenn der Router dann auf einen wahrscheinlich recht langsamen Desktop wechselt, wird Ihre Datei wieder aufgebrochen Systemformat der Wahl und schließlich auf die Festplatte. All dies geschieht für jedes Paket, wobei die meisten, wenn nicht alle, ein Bestätigungspaket erfordern, das zurückgesendet wird, bevor es das nächste Paket sendet.
Ich bin überrascht, dass Sie so viel Geschwindigkeit sehen wie Sie!
Hier ist ein Hinweis: Verbinden Sie den Laptop mit dem 100-Mbit / s-Switch / Router, wenn Sie die Dateien übertragen müssen - im Ernst, es wird viel, viel schneller gehen. Berücksichtigen Sie auch schnellere Festplatten an jedem Ende und stellen Sie sicher, dass Sie auch einen effizienten Dateiübertragungsmechanismus verwenden.
Hoffe das hilft.
quelle
Versuchen Sie, wie Chopper3 anspielt, auch rsync-over-ssh für Dateien dieser Größe zu verwenden, da die Wahrscheinlichkeit groß ist, dass etwas schief geht. Nichts ist mehr als 45 GB durch eine 50 GB-Übertragung zu bekommen und sie fehlschlagen zu lassen. Es ist möglich, dass es auch Ihren Overhead verringert, aber ich habe es nicht persönlich mit so großen Dateigrößen getestet.
Beim Übertragen von Tausenden kleiner Dateien kann rsync auch den Overhead erheblich verringern - ein Test mit 75 KB Datei / 1500 Verzeichnis / 5,6 KB durchschnittlicher Dateigröße, den ich einmal ausgeführt habe, dauerte 12 Minuten mit FTP und SFTP, 10 Minuten mit SCP, aber nur 1 Minute 50 Sekunden mit rsync-over-ssh aufgrund des verringerten Auf- / Abbauaufwands. Rsync ohne SSH war bei 1 Minute und 33 Sekunden nur 20 Sekunden schneller.
quelle
Mit diesem Befehl können Sie die Lesegeschwindigkeit Ihrer Festplatten messen:
(Ersetzen Sie X durch Laufwerksbuchstaben)
1,5 / 3 / 6gbps ist technisch gesehen die Sata-Übertragungsgeschwindigkeit, aber die meisten Festplatten können nur kontinuierlich mit 50-60 MBit / s lesen.
quelle