Domanda:
Velocità Ethernet / scp
0__
2016-07-13 01:10:27 UTC
view on stackexchange narkive permalink

Sto solo copiando un mucchio di file da RaspPi 3 al mio laptop usando scp su una connessione Ethernet. La velocità è pessima, da 0,5 a 0,6 MB / sec. È normale? Ho letto da qualche parte che con 10/100 Ethernet dovresti ottenere qualcosa come 12 MB / sec. La scheda micro-SD è il collo di bottiglia qui?

enter image description here

Sei risposte:
Jakuje
2016-07-13 02:05:08 UTC
view on stackexchange narkive permalink

SCP è basato su SSH. E SSH stesso ha un certo sovraccarico: wiki

SCP è un protocollo davvero ingenuo con algoritmi davvero ingenui per il trasferimento di alcuni piccoli file. Ha molta sincronizzazione (RTT - Round Trip Time) e piccoli buffer (fondamentalmente 2048 B - sorgente).

Se vuoi prestazioni, usa sftp .SFTP è più avanzato e più pronto per il trasferimento di file. Ha buffer più grandi che diminuiscono la necessità di sincronizzazione e aumentano la velocità. Immagino che potresti ottenere risultati simili con rsync , che è probabilmente lo strumento più appropriato per trasferire i dati. Il buffer ha per impostazione predefinita 32 768 B = 32 kB, ma è configurato sulla riga di comando utilizzando l'opzione -B .

Risposta originale su Unix.SE

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

Ho trovato una domanda / risposta simile su unix.stackexchange.com. Fondamentalmente il collo di bottiglia è la crittografia e le due soluzioni consistono nell'usare un cifrario "economico" o un programma diverso per la copia come rcp .

Direi ancora che è strano. Ottengo tempi di trasferimento di 3-6 MB / s su ethernet usando `scp` o` sshfs` (preferisco di gran lunga quest'ultimo però, che è basato su sftp), senza codici speciali. Il più veloce che ho visto un supporto pi senza crittografia è ~ 10 MB / s.
Non completamente. La colpa è del protocollo stesso. SCP non è fatto per le prestazioni.
@goldilocks 10 MB / s è veloce quanto la porta di rete Raspberry può trasportare i dati. Oggigiorno ssh su una moderna CPU x64 può utilizzare la crittografia hardware che semplifica la saturazione di una connessione gigabit. Il Raspberry non ha questo purtroppo. Esegui top in una sessione parallela per vedere se la cpu è completamente utilizzata da ssh - se sì, è la crittografia.
user400344
2017-01-21 08:32:52 UTC
view on stackexchange narkive permalink

Argh, non usare ssh per il trasferimento dati LAN. In una shell, esegui il cd nella directory che contiene i tuoi file e invoca python -m SimpleHTTPServer 31415 , quindi esegui il mirroring dal tuo laptop su http: // pi_ip: 31415.

Non ho notato che stavi solo copiando su LAN. Su Internet, dovresti usare la compressione, ssh usa gzip / zlib, non rallenta notevolmente il processore.

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

In realtà una soluzione migliore è usare rsync.

Questo presuppone che il tuo laptop lo supporti (tutto Linux e OS X lo fanno), e si adatta al tuo problema. rsync , come suggerisce il nome, è bravo a mantenere sincronizzate le directory e copia solo le modifiche necessarie.

La maggior parte degli usi informali di `rsync` sono fatti su` ssh`, quindi continuerebbero a sostenere i costi generali dell'utilizzo di `ssh`. Puoi modificare `ssh` usato da` rsync` con l'opzione della riga di comando `-e` di quest'ultimo (l'eccezioneèquando` rsync` usa il proprio protocollo per connettersi direttamente a un demone del server * rsync remoto * senza usare `ssh `ma ciò richiede che l'estremità remota sia stata configurata con un daemon del server).
starfry
2016-08-26 15:30:15 UTC
view on stackexchange narkive permalink

Il massimo teorico per l'interfaccia Ethernet è 12,5MiB / s (100Mib / 8 bit), ovvero Megabyte al secondo . Tuttavia, il Pi è in qualche modo vincolato dal fatto che la rete passa attraverso l'interfaccia USB. Come suggeriscono altre risposte, probabilmente puoi ottenere ulteriori miglioramenti non usando ssh ma, se hai bisogno di usarlo, puoi applicare alcuni argomenti della riga di comando per renderlo un po 'più veloce:

1. Non comprimere

Non ha senso comprimere attraverso la LAN, ma le vecchie abitudini sono dure a morire e molte persone lo fanno senza pensare. Rimuovere la compressione e le prestazioni sono più ragionevoli di 1,86 MiB / s. Ma questo può essere migliorato.

2. Usa un codice debole

Non puoi disabilitare la crittografia con ssh ma puoi minimizzarne l'impatto usando un codice debole. Prova il comando con -c arcfour, blowfish-cbc .

Puoi leggere il mio post originale sul forum Raspberry Pi.

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

Utilizza un servizio FTP che consente l'accesso solo a un utente non privilegiato (certamente non il NOPASSWD di sudo) o netcat. Sul lato ricevente eseguire: nc -v -l 9999 | tar -xvf - -C / tmp , e dal lato mittente fai tar -cvf - dir1 file1 dir2 file2 ecc | nc -v yourPiIPHere 9999 . Il mio vecchio pi1b + usava il 100% della CPU con scp. Se è necessario, sovracomprimi l'archivio con 'dd if = archive.tar bs = 512M | xz -e9vfc> archive.tar.xz 'e scp sopra. Usa tar -Jxvf archive.tar.xz per decomprimerlo.

Funziona a 2,7 mb / sec dal mio sistema operativo a Raspberry Pi 3
Il chip ethernet è condiviso con altri dispositivi sul bus USB. Potrebbe essere il tuo problema.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...