Le reti sono ora più veloci dei dischi?


126

Questa è una domanda di progettazione del software

Lavoravo sulla seguente regola per la velocità

cache memory > memory > disk > network

Ogni passaggio è 5-10 volte il passaggio precedente (ad es. La memoria cache è 10 volte più veloce della memoria principale).

Ora, sembra che Gigabit Ethernet abbia una latenza inferiore rispetto al disco locale. Quindi, forse le operazioni per leggere da un grande database in memoria remoto sono più veloci delle letture del disco locale. Sembra un'eresia per un vecchio timer come me. (Ho appena trascorso un po 'di tempo a costruire una cache locale su disco per evitare di dover fare round trip di rete, quindi la mia domanda)

Qualcuno ha esperienza / numeri / consigli in questo settore?

E sì, so che l'unico vero modo per scoprirlo è costruire e misurare, ma mi chiedevo quale fosse la regola generale.

modifica :

Questi sono i dati interessanti dalla risposta in alto:

  • Andata e ritorno all'interno dello stesso datacenter 500.000 ns

  • Il disco cerca 10.000.000 ns

Questo è uno shock per me; il mio modello mentale è che un round trip di rete è intrinsecamente lento. E non è così: è 10 volte più veloce di un "round trip" del disco.

Jeff attwood ha pubblicato questo buon blog sull'argomento http://blog.codinghorror.com/the-infinite-space-between-words/


11
A volte sì, a volte no. Quale rete? Quale disco?
John Gardeniers,

1
Gli altri dati interessanti dalla prima risposta: 1 MB di lettura sequenziale dalla rete rispetto al disco. Sospetto che il tempo di "andata e ritorno" ometta qualsiasi trasferimento di dati significativo.
Paul,

Paul: Dipende dal tuo MTU, ne sono sicuro. (1 MB di MTU? Fantastico!)
Matt Simmons,

Mi piacerebbe vedere alcune di queste risposte riconsiderate alla luce della disponibilità di dispositivi di rete a 10 Gbps.
pulcini

rete gigabit vs raid 5?
SoilSciGuy

Risposte:


137

Ecco alcuni numeri che probabilmente stai cercando, come citato da Jeff Dean, un collega di Google:

Numeri che tutti dovrebbero sapere

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

È dalla sua presentazione intitolata Disegni, lezioni e consigli dalla costruzione di grandi sistemi distribuiti e puoi ottenerli qui:

Il discorso è stato tenuto al Large Distributed Systems and Middleware (LADIS) 2009 .

Altre informazioni


Si dice che gcc -O4 invia il tuo codice a Jeff Dean per una riscrittura.



+1 Molto interessante!
gennaio 2211

1
Alcune presentazioni hanno valori diversi indicati tra parentesi. Presumo che quello tra parentesi non fosse corretto e che abbia aggiornato i valori.
David d C e Freitas,

1
È tutta un'era pre-SSD? vedi qui per ulteriori numeri aggiornati.
matt

In realtà ho usato questi numeri per creare una presentazione che mostra perché le unità SSD si pagano da sole , per convincere il nostro responsabile dell'ufficio che sì, avevamo bisogno di macchine più veloci su cui lavorare. Incluso i numeri per le informazioni tecniche ma orientato il più possibile verso la gestione non tecnologica.
brichins,

19

Ci sono molte variabili quando si tratta di rete rispetto al disco, ma in generale, il disco è più veloce.

I bus SATA 3.0 e SAS sono 6 Gbps, rispetto a un overhead di protocollo meno 1 Gbps di rete. Con RAID-10 15k SAS, la rete sembrerà cane lenta. Inoltre, hai la cache del disco e anche la possibilità di hard disk a stato solido, che a seconda dello scenario, potrebbero anche aumentare la velocità. L'accesso casuale ai dati sequenziali gioca un ruolo, oltre alla dimensione del blocco in cui vengono trasferiti i dati. Tutto dipende dall'applicazione utilizzata per accedere al disco.

Ora, non ho nemmeno toccato il fatto che qualunque cosa tu stia trasportando sulla rete sta andando o proviene comunque dal disco ... quindi ....... di nuovo, il disco è più veloce.


1
Punti per menzionare il RAID che ti dà letture parallele, qualcosa che difficilmente potresti ottenere in una rete in qualsiasi momento presto. Naturalmente, se stiamo parlando di dischi rigidi per laptop locali, la combinazione di SAN veloce e rete veloce potrebbe essere più veloce. Soprattutto con gli SSD in quella SAN.
Michael Dillon,

10
Le reti sono intrinsecamente parallelizzabili - di cosa stai parlando? È incredibilmente banale leggere da più sistemi su una rete in forma aggregata; questo è l'intero punto dietro sistemi come Hadoop e MPI, per non parlare dell'ovvio BitTorrent.
jgoldschrafe,

2
Con SONET / SDH puoi avere 38 Gbps ancora più veloce di SAS. E l'aggregazione della rete può essere fatta con qualcosa come en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici,

10
@Jake Quando si parla di 6 Gbps, si potrebbe voler fare una chiara distinzione tra larghezza di banda dell'interfaccia e la velocità con cui un disco può effettivamente fornire dati.
NPE,

4
ho detto nella mia domanda che stavo parlando di un telecomando nel database di memoria rispetto a un locale sulla cache del disco
pm100

10

Bene, ciò dipende dal fatto che la risorsa di rete abbia i dati che stai richiedendo prontamente disponibili (in memoria o simili) o se, a sua volta, li leggerebbe da un disco.

In ogni caso, in alcuni casi il throughput potrebbe essere più elevato, ma credo che la latenza sarà maggiore.


Vuoi dire che il tempo di ricerca sul disco è maggiore di una richiesta di 10 Gbit / s?
Mircea Vutcovici,

1
@Mircea, significa che la rete 10Gbit deve ottenere i suoi dati da qualche parte, quindi sarà limitata alla latenza di quella fonte, oltre alla latenza della rete.
Chris S,

La memoria potrebbe essere un disco RAM. Vedi: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici

2

IMX il disco è ancora più veloce. La velocità di trasferimento teorica della rete è alta ma in pratica non ci si avvicina.

Circa due anni fa ho avuto problemi con il disco rigido sul mio laptop e il DMA è uscito. Ciò ha reso il disco rigido notevolmente più lento, e in particolare più lento della rete. Ma quando sono passato a un altro computer sono tornato al mio stato originale di HDD più veloce di Internet.


2

La mia esperienza con le reti gigabit è, dato il server giusto, che puoi battere le prestazioni locali in termini di throughput e latenza. Vedi i test di rete: stiamo ottenendo prestazioni Gigabit?

Per tutti gli scopi pratici, consiglierei di trattare la memoria locale e di rete come equivalente e di usare solo cache di memoria.

L'avvertenza standard come hai detto è vera in quanto non esistono regole generali; e che in realtà il più delle volte si dovrebbe lavorare con server ben configurati e usare metriche per valutare il miglior metodo di trasferimento dei dati.

Se si utilizza un computer di fascia bassa con un disco rigido lento, sarà quasi sicuramente più veloce utilizzare una connessione di rete gigabit a un server con un array di archiviazione veloce.

Allo stesso modo se si lavora con due macchine con hardware quasi identico, la latenza e il sovraccarico della rete renderebbero più veloce l'archiviazione locale; è davvero buon senso.


2

Dipende. Se il tuo I / O è principalmente un accesso casuale, probabilmente la sua velocità di trasmissione flat non è eccezionale rispetto alla larghezza di banda della rete che potrebbe essere disponibile. Tuttavia, la maggior parte del traffico di rete è in ultima analisi generata da processi che coinvolgono l'I / O. Se l'insieme funzionante di qualunque processo sta generando il traffico di rete si adatta alla cache, non sarà vincolato dalla larghezza di banda del disco. Se si blocca la cache, il disco diventerà un collo di bottiglia.

Lavoro su sistemi di data warehouse e la query DW canonica è una scansione di tabella. Se la tua query raggiunge più del pochi percento delle righe nella tabella dei fatti (o partizione), una scansione di tabelle o partizioni che utilizza l'I / O sequenziale sarà più efficiente di un piano di query ad accesso casuale che utilizza ricerche e ricerche di indice.

Lo storage in rete (ovvero le SAN) tende a non funzionare bene sui carichi di lavoro in streaming a meno che non sia ottimizzato in modo appropriato. Se la SAN viene utilizzata per un ambiente di consolidamento per scopi generici, sarà quasi sicuramente ottimizzata in modo subottimale per un carico in streaming, appuntito come un data warehouse. Ho visto un white paper del fornitore suggerire che è necessario circa 3 volte il numero di dischi per ottenere lo stesso throughput su una SAN che non è ottimizzata per l'I / O in streaming rispetto a quella esistente.

La mia esperienza ne parla. In realtà, non ho mai distribuito un data warehouse in un ambiente di consolidamento in cui non potevo eseguire lo stesso processo ETL in modo significativamente più veloce sul mio PC desktop. Ho anche avuto rappresentanti di vendita di un importante fornitore di apparecchiature SAN che dichiarano che molti dei loro clienti usano l'archiviazione diretta degli allegati per il sistema DW perché le SAN non sono abbastanza veloci.

Lo storage in rete è almeno un ordine di grandezza più costoso per IOPS rispetto allo storage ad attacco diretto per carichi di lavoro ad accesso casuale e più vicino a due ordini di grandezza più costoso per lo streaming.


1

L'esperienza che ho con questo è che quando sei su una connessione da 1 Gbit e provi a scaricare un file, il tuo hard disk è di solito il collo di bottiglia. Una cosa che devi tenere a mente è che devi prima impostare una connessione, che richiede anche tempo. Quindi, per inviare grossi blocchi di rete di dati potrebbe effettivamente essere più veloce del disco.


1
A meno che il disco non sia anche il collo di bottiglia sull'altro lato della connessione di rete ...

@Argote: vero, ma se il software del server è stato scritto correttamente, verrà bufferizzato in memoria prima di scrivere sul disco.
anfetamachina,

1

Sì, in generale, le reti ora sono più veloci dei dischi rigidi, ma ciò potrebbe rallentare nel tempo.

Penso quindi sono

Quando un'applicazione è in esecuzione significa che il computer host funziona, mentre il lavoro in rete richiede un protocollo comune, verifica la disponibilità dei peer, la sicurezza dei canali ... e se i peer utilizzano piattaforme diverse, è più difficile ottenere ciò che si può fare su un macchina singola.

Preferisco guardare questo in termini di compromessi piuttosto che chi è il più forte ...


4
Dubito, quindi potrei essere.
John Gardeniers,

1

Devi descrivere un caso d'uso esatto per questo confronto. Gli hard disk hanno tempo di ricerca + velocità di trasferimento e cache. Le reti hanno latenza, velocità di trasferimento e sovraccarico del protocollo ...

Penso che la tua memoria cache originale> memoria> disco> sia ancora vera in generale


0

Il disco è collegato alla CPU tramite bus SCSI, SAS o IDE. Che è una rete interna che esegue un protocollo specifico - SCSI o ATAPI. Ethernet è progettata per funzionare su lunghe distanze e può essere molto più lenta di SAS / SCSI / IDE. Quindi quale è più veloce, dipende da quali tecnologie stai confrontando. Se si confronta un HDD portatile di 20 anni con un 10Gbps di memoria RAM, il vincitore sarà sempre la rete. E quando acquisti uno spazio di archiviazione devi confrontarlo con il prezzo e la gestibilità.


0

Bene, c'è Light Peak che punta a una velocità di rete di 100 GBps, che si avvicina alla velocità della RAM. Naturalmente, la rete può fornire i dati solo alla velocità con cui il mittente può generare i dati, cioè se il mittente sta leggendo i dati da un disco rigido, il destinatario otterrà i dati solo alla stessa velocità del disco letto, anche con una rete superveloce.


0

Una cosa da tenere a mente è che dipende dalla rete. Ad esempio, supponiamo che tu sia responsabile delle prestazioni su un sito web. Questo sito Web è ovviamente collegato a un server di database su una rete locale ed è anche collegato ai navigatori del Web su Internet, che è anche una specie di rete.

In molti casi, è possibile impostare un collegamento dedicato tra il server Web e il server di database tramite IP statici e un cavo crossover o automdx per mantenere bassa la latenza e fornire un collegamento dedicato per il traffico, poiché si desidera che sia molto veloce. Il server di database fa tutti i tipi di lavoro per conservare il maggior numero possibile di db nella memoria e in molti casi spesso riesce per l'intero contenuto più alcuni indici. Le query su questo database saranno altrettanto veloci o persino più veloci delle query su disco.

D'altra parte, alcune tecnologie web (asp.net webforms viewstate, ti sto guardando) amano trasferire molte informazioni da e verso il browser Web client come una sorta di cache (di sorta). Se questa è una connessione LAN locale (e nella difesa di webform asp.net questo è vero per la maggior parte del tempo) non è poi così male, ma su internet pubblico questo può assolutamente uccidere le prestazioni, in modo che spesso sei molto meglio spingerlo invece su un database o un disco locale.


0

Personalmente, penso che ci siano diversi fattori da considerare. Ad esempio, quanto è veloce la memoria o il disco a cui si accede localmente rispetto a quello a cui si accede tramite la rete? Se i dati remoti si trovavano su un SSD molto veloce e più veloce della rete Gigabit installata end-to-end, il telecomando potrebbe essere più veloce per file di streaming di grandi dimensioni.

Tuttavia, se accedessi in modo casuale a piccole unità di dati e la rete non fosse perfetta o avessi molti hop e più di un semplice accesso, scommetterei che una cache locale è più veloce anche di essa su un'unità disco totalmente meccanica quasi 100 % del tempo. Ma fai emergere un punto interessante e per quanto tempo sarà necessario l'archiviazione locale di qualsiasi cosa se le velocità della rete continuano a crescere?

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.