Frage:
Ethernet Geschwindigkeit / scp
0__
2016-07-13 01:10:27 UTC
view on stackexchange narkive permalink

Ich kopiere nur eine Reihe von Dateien von einem RaspPi 3 auf meinen Laptop mit scp über eine Ethernet-Verbindung. Die Geschwindigkeit ist miserabel und liegt bei 0,5 bis 0,6 MB / s. Ist das normal? Ich habe irgendwo gelesen, dass man mit 10/100 Ethernet ungefähr 12 MB / s bekommen sollte. Ist die Micro-SD-Karte hier der Flaschenhals?

enter image description here

Sechs antworten:
Jakuje
2016-07-13 02:05:08 UTC
view on stackexchange narkive permalink

SCP basiert auf SSH. Und SSH selbst hat einen gewissen Overhead: wiki

SCP ist ein wirklich naives Protokoll mit einem wirklich naiven Algorithmus zum Übertragen einiger kleiner Dateien. Es hat viel Synchronisation (RTT - Round Trip Time) und kleine Puffer (im Grunde 2048 B - Quelle).

Wenn Sie Leistung wünschen, verwenden Sie sftp .SFTP ist fortgeschrittener und bereit für die Übertragung von Dateien. Es hat größere Puffer, die den Synchronisationsbedarf verringern und die Geschwindigkeit erhöhen. Ich denke, Sie würden ähnliche Ergebnisse mit rsync erzielen, was wahrscheinlich das am besten geeignete Werkzeug zum Übertragen von Daten ist. Der Puffer hat standardmäßig 32 768 B = 32 kB, wird jedoch in der Befehlszeile mit dem Schalter -B konfiguriert.

Ursprüngliche Antwort unter Unix.SE sup>

0__
2016-07-13 01:20:31 UTC
view on stackexchange narkive permalink

Ich habe eine ähnliche Frage / Antwort unter unix.stackexchange.com gefunden. Grundsätzlich ist der Flaschenhals die Verschlüsselung, und die beiden Lösungen bestehen entweder darin, eine "billige" Chiffre oder ein anderes Kopierprogramm wie rcp zu verwenden.

Ich würde immer noch sagen, dass es seltsam ist. Ich erhalte Übertragungszeiten von 3-6 MB / s über Ethernet mit "scp" oder "sshfs" (ich bevorzuge jedoch letzteres, das auf SFTP basiert), keine spezielle Verschlüsselung. Die schnellste, die ich je gesehen habe, ist ~ 10 MB / s.
Nicht vollständig. Der Fehler ist das Protokoll selbst. SCP ist nicht für die Leistung gemacht.
@goldilocks 10 MB / s ist ungefähr so ​​schnell, wie der Raspberry-Netzwerkport Daten transportieren kann. Heutzutage kann ssh auf einer modernen x64-CPU Hardwareverschlüsselung verwenden, wodurch es einfach wird, eine Gigabit-Verbindung zu sättigen. Die Himbeere hat das leider nicht. Führen Sie top in einer parallelen Sitzung aus, um festzustellen, ob die CPU von ssh vollständig verwendet wird. Wenn ja, handelt es sich um die Verschlüsselung.
user400344
2017-01-21 08:32:52 UTC
view on stackexchange narkive permalink

Argh, verwenden Sie ssh nicht für die LAN-Datenübertragung. CD in einer Shell in das Verzeichnis, das Ihre Dateien enthält, und rufen Sie python -m SimpleHTTPServer 31415 auf. Spiegeln Sie diese dann von Ihrem Laptop unter http: // pi_ip: 31415.

Ich habe nicht bemerkt, dass Sie nur im LAN kopiert haben. Im Internet sollten Sie die Komprimierung verwenden, ssh verwendet gzip / zlib und verzögert den Prozessor nicht merklich.

Milliways
2016-07-13 04:28:35 UTC
view on stackexchange narkive permalink

Eine bessere Lösung ist die Verwendung von rsync .

Dies setzt voraus, dass Ihr Laptop dies unterstützt (alle Linux- und OS X-Versionen) und es Ihrem Problem entspricht. rsync ist, wie der Name schon sagt, gut darin, Verzeichnisse synchron zu halten und nur die erforderlichen Änderungen zu kopieren.

Die meisten informellen Verwendungen von "rsync" werden über "ssh" durchgeführt, sodass immer noch der Aufwand für die Verwendung von "ssh" anfällt. Sie können das von "rsync" verwendete "ssh" mit dessen Befehlszeilenoption "-e" optimieren (die Ausnahme ist, wenn "rsync" ein eigenes Protokoll verwendet, um eine direkte Verbindung zu einem entfernten * rsync-Server-Daemon * herzustellen, ohne "ssh" zu verwenden `Voraussetzung dafür ist jedoch, dass das Remote-Ende mit einem Server-Daemon konfiguriert wurde).
starfry
2016-08-26 15:30:15 UTC
view on stackexchange narkive permalink

Das theoretische Maximum für die Ethernet-Schnittstelle beträgt 12,5 MB / s (100 MB / 8 Bit) - das sind Megabyte pro Sekunde . Der Pi ist jedoch etwas an die Tatsache gebunden, dass das Netzwerk über die USB-Schnittstelle läuft. Wie andere Antworten vermuten lassen, können Sie wahrscheinlich weitere Verbesserungen erzielen, wenn Sie ssh nicht verwenden. Wenn Sie es jedoch verwenden müssen, können Sie einige Befehlszeilenargumente anwenden, um es etwas schneller zu machen:

1. Nicht komprimieren

Es macht keinen Sinn, über das LAN zu komprimieren, aber alte Gewohnheiten sterben schwer und viele Menschen tun es ohne nachzudenken. Entfernen Sie die Komprimierung und die Leistung ist vernünftiger 1,86 MB / s. Dies kann jedoch verbessert werden.

2. Verwenden einer schwachen Verschlüsselung

Sie können die Verschlüsselung mit ssh nicht deaktivieren, aber Sie können die Auswirkungen minimieren, indem Sie eine schwache Verschlüsselung verwenden. Versuchen Sie den Befehl mit -c arcfour, blowfish-cbc .

Sie können meinen Originalbeitrag im Raspberry Pi Forum lesen.

user400344
2016-08-26 15:53:24 UTC
view on stackexchange narkive permalink

Verwenden Sie entweder einen FTP-Dienst, der nur einem nicht privilegierten Benutzer den Zugriff ermöglicht (sicherlich nicht Sudos NOPASSWD), oder Netcat. Auf der Empfangsseite tun Sie: nc -v -l 9999 | tar -xvf - -C / tmp und auf der sendenden Seite tar -cvf - dir1 file1 dir2 file2 etc | nc -v yourPiIPHere 9999 . Mein altes pi1b + würde 100% CPU mit scp verwenden. Wenn Sie müssen, komprimieren Sie das Archiv mit 'dd if = archive.tar bs = 512M | xz -e9vfc> archive.tar.xz 'und scp das vorbei. Verwenden Sie tar -Jxvf archive.tar.xz , um es zu entpacken.

Dies läuft mit 2,7 MBit / s von meinem Betriebssystem auf Raspberry Pi 3
Der Ethernet-Chip wird mit anderen Geräten am USB-Bus geteilt. Könnte dein Problem sein.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...