Qual è la configurazione hardware più performante?


35

So che i numeri di riferimento esatti varieranno tra i produttori, ma in generale se si considerano solo unità flash, schede SD e HDD USB di fascia più alta e il Raspberry Pi è collegato a una rete tramite uno switch Ethernet qual è la configurazione più veloce da una rete punto di vista del trasferimento dei dati? Sto solo cercando risposte in cui le persone abbiano effettivamente provato le configurazioni elencate di seguito e abbiano risultati reali, non teoria.

Ovviamente una scheda SD deve essere utilizzata perché è necessaria per almeno una parte del ciclo di avvio, ma supponiamo che tu abbia una partizione dati aggiuntiva su ciascuno dei dispositivi elencati di seguito che ha le più alte velocità di trasferimento di rete sul Raspberry Pi?

  1. La scheda SD
  2. Un'unità flash USB
  3. Un HDD USB

Questa domanda non è banale perché a un certo punto il sovraccarico di elaborazione associato a uno dei dispositivi di archiviazione accoppiato con la comunicazione ethernet può influire sulla velocità di trasferimento, anche la porta ethernet sul Raspberry Pi è controllata dal bus USB, quindi in generale il throughput dovrebbe essere influenzato da il coordinamento del trasferimento di dati Ethernet e del trasferimento di dati multimediali USB. Non so se la scheda SD si trova sullo stesso bus USB condiviso delle porte USB e della porta Ethernet, ma se non lo è, suppongo che sarebbe un vantaggio piuttosto grande in termini di prestazioni.

Modificato per includere il trasferimento di rete come requisito per il benchmark


1
Cordiali saluti, i rispondenti possono utilizzare sudo hdparm -t /dev/sdxcome strumento utile per il benchmarking.
Jivings,

2
Non ho benchmark, ma è risaputo: ssd> hdd> flash> sd> supporti ottici
Alexander - Reinstate Monica

+1 - Buon punto sulla porta SD - è sullo stesso bus dell'USB / Ethernet? La condivisione del carico su SD e archiviazione USB collegata funziona meglio?
Jon Egerton,

@XAleXOwnZX è sicuro che se i bus su cui si trovano questi dispositivi possono eguagliare le massime prestazioni del dispositivo, allora questo è l'ordine ma sto scommettendo che dato che Raspberry Pi ha solo USB il tuo ordine sarà più simile a ssd = hdd = flash> optical e SD può risiedere ovunque in tale elenco in base al fatto che abbia un proprio bus separato dalle porte USB.
Dan B,

Questo è un buon punto, ma HDD> Flash di sicuro. Il mio disco rigido USB ottiene 30 mb / s rispetto al 5-10 del mio flash drive
Alexander - Reinstate Monica

Risposte:


35

Nel benchmarking devi sempre stabilire quali sono i tuoi limiti. Perché se ti aspetti di ottenere 100 Mb da quella lan di quello che stai solo prendendo in giro te stesso!

Guarda questo design a blocchi di RaspberryPI Model-B inserisci qui la descrizione dell'immagine

Quindi stabiliamo un fatto molto importante qui. Ethernet è un collo di bottiglia dal controller USB perché formano il digramma a blocchi stabiliamo è collegato all'hub USB. (Nessuna indicazione chiara utilizza un altro bus o semplicemente USB2?)

Ohh guarda - un altro diagramma a blocchi,

inserisci qui la descrizione dell'immagine

Ora questo fa luce ancora di più sulla situazione. Il controller 10/100 è collegato all'hub USB - purtroppo, ancora una volta, non è possibile sapere dove l'hub comunica con la velocità con cui l'hub comunica con il controller lan - aspettarsi il fatto chiave che dice che la velocità usb e la lan sono negoziate per ambienti USB a velocità mista.

Dov'è la scheda SD?

Si scopre che la scheda SD è direttamente collegata al BCM2835 (pagina 65) e descrivono in modo molto dettagliato l'impatto delle prestazioni da vari livelli di configurazione. Una cosa importante da notare è che se la scheda SD ha un Clock dedicato, può funzionare indipendentemente dalla CPU / GPU principale alla massima velocità (di qualunque scheda e standard venga utilizzata, è possibile vedere che supporta alcuni standard).

inserisci qui la descrizione dell'immagine

Che cosa vuol dire?

Significa che se si confronta la scheda SD più veloce e la pen drive scadente (4 gb / 8 gb) molto probabilmente si otterranno enormi differenze di prestazioni. Quindi ora solleva la domanda, come fa la CPU / GPU a gestire la comunicazione con questo meraviglioso dispositivo incorporato (chip usb / lan) e a quali velocità è in grado di comunicare.

Vedi fino a che punto la teoria può davvero andare avanti prima di fare qualsiasi benchmarking? Un altro punto chiave qui è: come fa la CPU a controllare il flusso di dati. Utilizza il canale di clock separato come raccomandato?

In un mondo ideale potresti pensare che questa LAN / USB lo gestirà. Ma ciò richiede un MCU .. vediamo un MCY ovunque nello schema a blocchi .. NO!

Quindi la CPU deve richiedere IO DATA inviandolo alla porta USB quindi va alla porta LAN (tramite lo stesso HUB USB) Sì .. in modo che causerà alcuni problemi di velocità da qualche parte.

Inoltre, è importante notare cosa succede quando si copia su una chiavetta USB e dalla scheda SD tutto tramite LAN .. causerà un po 'di traffico.

Dobbiamo confrontare vari aspetti

Nello stabilire ciò che stiamo cercando di confrontare possiamo porre una domanda nel mondo reale.

  1. Quanto velocemente l'USB interna gestisce i dati dalla SD?
  2. Quanta CPU viene utilizzata per leggere / scrivere su SD, quindi su LAN?
  3. Quanta CPU viene utilizzata per leggere / scrivere su una penna USB?
  4. La copia di dati influenza direttamente l'utilizzo della CPU?
  5. In che modo il chip USB / LAN incorporato gestisce la lettura dei dati da 2 fonti nella porta LAN e influisce in modo proporzionale sulla CPU?
  6. Non è necessario testare se lan avrà 10 MB / s completi perché è strozzata dallo stato in cui si trova l'hub USB.

Ora che sai per cosa stai combattendo, ti sfido a rispondere a te stesso.

Potresti trovare questo un ottimo punto di partenza.

Riferimenti

Ma soprattutto

le mie conoscenze tecniche e valutazioni che ho fatto sulla base della mia esperienza incorporata. L'OP ha posto un'ottima domanda ma manca di capire che senza la comprensione teorica di un sistema sei condannato a provare a valutare / risolvere i problemi pratici.

risultati

(4) Questa risposta mostra alcuni test piratici sulla terra. E dimostra che fare intense transazioni di dati influenza direttamente la CPU (ma non sono sicuro se si tratti della scheda SD o del processo di spostamento dei dati all'interno del chip BCM sul chip USB / LAN)

(6) È stato dimostrato che l'unico collo di bottiglia sarà la fonte (ad esempio una scheda SD lenta) L'hub USB riesce a pompare i dati al 90% + ma la risposta alle domande 4 e 5 può influenzare direttamente questa prestazione.

Quindi, facendo alcune ricerche e contributi di altri utenti, stiamo iniziando a stabilire e ottenere risultati preliminari.

Ecco un bel grafico per aiutare a visualizzare ciò con cui abbiamo a che fare.

inserisci qui la descrizione dell'immagine


1
+1 Ottima risposta. Puoi fornire fonti per le tue immagini?
Jivings

1
Questa risposta fa un ottimo lavoro nell'aggiungere dettagli alla domanda spiegando perché ciascuno dei diversi supporti di archiviazione potrebbe avere numeri di prestazioni molto diversi. Grazie per le informazioni aggiuntive che avrei dovuto aggiungere io stesso alla domanda in primo luogo.
Dan B

1
L'USB è ancora intorno ai 30 MB / s, vale a dire molto da risparmiare per una rete da 100 Mbit.
Thorbjørn Ravn Andersen,

@ ThorbjørnRavnAndersen sì, è vero. Ma una delle mie domande riguarda le prestazioni dell'hub USB incorporato. Haw veloce è davvero? e dipende dalla CPU ARM - anche cosa succede quando si copiano i sorgenti del modulo 2 tramite LAN .. Questo è qualcosa che vale la pena confrontare. Non sto dicendo che non lo farà, ma certamente potrebbe essere un problema in alcune situazioni.
Piotr Kula,

Sembra che tu abbia esperienza nel settore. Potresti fare misurazioni effettive?
Thorbjørn Ravn Andersen,

3

Ovviamente, le massime prestazioni sarebbero con un ramdisk.

Non sarà molto utile per un dispositivo di archiviazione collegato in rete, ma il pi non è necessariamente la scelta migliore per quell'applicazione fissa.

Per alcune cose in cui la flessibilità del pi è adatta in modo univoco, i requisiti di archiviazione effettivi possono essere abbastanza piccoli da essere eseguiti in modo esplicito da un ramdisk, o forse implicitamente dal ram attraverso il meccanismo di cache del disco (i ramdisk Linux sono comunque solo cache del disco senza un disco di backup).

Avresti comunque bisogno di una carta per l'avvio, ma come vantaggio collaterale della corsa da ram potresti mantenere la carta di sola lettura e minimizzare il rischio di corromperla.


Non è necessaria una scheda per l'avvio. Il sistema operativo / boot loader lo richiede! È possibile eseguire l'avvio dall'interfaccia seriale o dalla LAN se è stato modificato il bootloader per farlo. Se tu fossi abbastanza tecnico potresti aggiungere 3 GB di RAM all'RPI, ma questo è assolutamente fuori tema. Il fatto è che tutto passa attraverso uno stupido hub USB! bleeeh
Piotr Kula

Il bootloader, almeno quello che potresti cambiare, non si trova sulla scheda SD? Tuttavia, potresti riuscire a caricare una rom di boot interna da un'altra fonte se cambi alcuni pin di configurazione.
Chris Stratton,

Sono quasi sicuro che il chip BCM .. lo stesso di arduino per esempio ha un bootloader .. (come BIOS su PC) Ci deve essere un programma iniziale per caricare il programma successivo e così via. cambiando il bootlaoder su RPi .. aspetta un anno o due.
Piotr Kula,

ATMEGA di un arduino è un esempio di microcontrollore progettato per funzionare autonomamente, con flash interno. Un booloader è personalizzabile dall'utente. Il SOC del pi d'altra parte sembra appartenere alla classe delle parti di sistema più grandi che richiedono memorie esterne. In genere hanno un caricatore di avvio, ma è una maschera rom che non può essere modificata una volta che lasciano la fabbrica. In un prodotto tradizionale basato su qualcosa del genere, ci sarebbe un chip flash esterno da 4-8 MByte. Ma il pi sembra usare invece la scheda SD rimovibile, evitando il problema di qualcuno che corrompe un flash saldato.
Chris Stratton,

È interessante. Quindi è la partizione FAT che contiene questi dati di avvio? o è memorizzato da qualche altra parte su una parte nascosta della SD? In seguito, potresti in un tentativo ancora più semplice, provare a reindirizzare il processo di caricamento su un altro "hackerato" sul dispositivo ...
Piotr Kula

0

USB HDD o USB SSD dovrebbe offrire le prestazioni più veloci. Le schede SD scrivono circa 12 MB / s per dispositivi class10 e USB può ottenere fino a 30 MB / s.

Non concordo sul fatto che l'hub USB stia rallentando la Ethernet su RPi, perché l'HUB può supportare 400 Mbit / se la Ethernet è 100. Quindi teoricamente può supportare fino a 4 porte Fast Ethernet 100 Mb / s.


OGNI SD di classe 10 che abbia mai testato è> 19mb / s di scrittura. Avevo una classe 6 che faceva 14 mb / s. Le SD SanDisk Extreme che sostengono che 45 Mb / s ottengono 50 MB / s in lettura e 47 MB ​​/ s in scrittura, il che è stata una sorpresa. Le Lexar 400x SD sono le più veloci che ho testato a 70 mb / s in lettura, ma circa 30 mb / s in scrittura. Su USB 2.0, non c'è praticamente alcuna differenza tra schede SD, HDD e SSD veloci. Tutte le interfacce USB 2.0 che ho rovinato a circa 35mb / s. Ho visto chiavette USB 2.0 che si chiudono intorno a 10 mb / se alcune addirittura inferiori. Molte chiavette USB 3.0 hanno una velocità di scrittura limitata a 10-20 mb / s, anche su porte USB 3.0!
Therealstubot,

0

Ottengo massimo 4 Mb / s utilizzando un'unità flash USB e lo stesso per l'HDD USD. Questo semplicemente facendo cadere i file attraverso il "gruppo home" della rete Windows verso il dispositivo collegato a Raspberry.

Mi aspettavo almeno 10 volte, ma non sono riuscito a velocizzare il trasferimento. Ho provato a trasferire FTP direttamente su un HDD USB (questo dispositivo si trasferisce a + 60 Mb / s quando è collegato al mio laptop) ma i risultati sono molto scarsi. 100KiB / s! Ne risultano ore di traffico per soli 100 MB.

Ora sposto l'HDD tra laptop e Raspberry Pi per il trasferimento dei dati :-(


Penso che tu abbia un problema di configurazione / rete perché posso caricare un file direttamente sulla mia chiavetta USB fino a 24 Mbps. E penso che potrei fare di meglio con Ethernet invece del Wi-Fi. Sto usando vsftpd.
Morgan Courbet,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.