Test della velocità del disco Linux. Controllo del disco rigido in Linux. Test di falsi SSD di alcuni hoster

Richiede la lettura del manuale (man fio) ma ti darà risultati accurati. Nota che per qualsiasi accuratezza, devi specificare esattamente cosa vuoi misurare. Qualche esempio:

Velocità di LETTURA sequenziale con blocchi grandi

Fio --name TEST --eta-newline = 5s --filename = fio-tempfile.dat --rw = lettura --size = 500m --io_size = 10g --blocksize = 1024k --ioengine = libaio --fsync = 10000 --iodepth = 32 --direct = 1 --numjobs = 1 --runtime = 60 --group_reporting

Velocità di SCRITTURA sequenziale con blocchi grandi(dovrebbe essere vicino al numero che vedi nelle specifiche del tuo disco):

Fio --name TEST --eta-newline = 5s --filename = fio-tempfile.dat --rw = write --size = 500m --io_size = 10g --blocksize = 1024k --ioengine = libaio --fsync = 10000 --iodepth = 32 --direct = 1 --numjobs = 1 --runtime = 60 --group_reporting

Lettura 4K casuale QD1(questo è il numero che conta davvero per le prestazioni nel mondo reale a meno che tu non lo sappia per certo):

Fio --name TEST --eta-newline = 5s --filename = fio-tempfile.dat --rw = randread --size = 500m --io_size = 10g --blocksize = 4k --ioengine = libaio --fsync = 1 --iodepth = 1 --direct = 1 --numjobs = 1 --runtime = 60 --group_reporting

Lettura e scrittura 4K casuali miste QD1 con sincronizzazione(questo è il numero del caso peggiore che dovresti mai aspettarti dal tuo disco, di solito meno dell'1% dei numeri elencati nel foglio delle specifiche):

Fio --name TEST --eta-newline = 5s --filename = fio-tempfile.dat --rw = randrw --size = 500m --io_size = 10g --blocksize = 4k --ioengine = libaio --fsync = 1 --iodepth = 1 --direct = 1 --numjobs = 1 --runtime = 60 --group_reporting

Aumenta l'argomento --size per aumentare la dimensione del file. L'utilizzo di file più grandi può ridurre i numeri ottenuti a seconda della tecnologia dell'unità e del firmware. File piccoli daranno risultati "troppo buoni" per i supporti rotazionali perché la testina di lettura non ha bisogno di muoversi così tanto. Se il tuo dispositivo è quasi vuoto, l'utilizzo di file abbastanza grandi da riempire quasi l'unità ti consentirà di ottenere il comportamento peggiore per ogni test. In caso di SSD, la dimensione del file non ha molta importanza.

Tuttavia, tieni presente che per alcuni supporti di memorizzazione la dimensione del file non è importante quanto i byte totali scritti durante un breve periodo di tempo. Ad esempio, alcuni SSD potrebbero avere prestazioni significativamente più veloci con blocchi pre-cancellati o potrebbero avere una piccola area flash SLC che viene utilizzata come cache di scrittura e le prestazioni cambiano una volta che la cache SLC è piena. Come altro esempio, gli HDD SMR di Seagate hanno circa Area cache PMR da 20 GB che ha prestazioni piuttosto elevate ma una volta che si riempie, scrivere direttamente nell'area SMR può ridurre le prestazioni al 10% rispetto all'originale.E l'unico modo per vedere questo degrado delle prestazioni è scrivere prima 20+ GB più velocemente possibile.Naturalmente, tutto dipende dal carico di lavoro: se l'accesso in scrittura è pieno di ritardi lunghi che consentono al dispositivo di pulire la cache interna, sequenze di test più brevi rifletteranno meglio le prestazioni del mondo reale.Se è necessario eseguire molte operazioni IO, è necessario aumentare entrambi i parametri --io_size e --runtime.Si noti che alcuni supporti (ad esempio la maggior parte dei dispositivi flash) subiranno un'usura extra da tali test.Secondo me, se un dispositivo è abbastanza povero da non gestire questo tipo di test, non dovrebbe essere utilizzato per contenere dati di valore in ogni caso.

Inoltre, alcuni dispositivi SSD di alta qualità possono avere algoritmi di livellamento dell'usura ancora più intelligenti in cui la cache SLC interna ha abbastanza intelligenza per sostituire i dati sul posto che vengono riscritti durante il test se colpisce lo stesso spazio di indirizzo (ovvero, file di test è inferiore alla cache SLC totale). Per tali dispositivi, la dimensione del file ricomincia ad avere importanza. Se hai bisogno del tuo carico di lavoro effettivo, "è meglio testare con le dimensioni dei file che" vedrai nella vita reale. Altrimenti i tuoi numeri potrebbero sembrare troppo buoni.

Nota che fio creerà il file temporaneo richiesto alla prima esecuzione. Verrà riempito con dati casuali per evitare di ottenere numeri troppo buoni da dispositivi che imbrogliano comprimendo i dati prima di scriverli nella memoria permanente. Il file temporaneo si chiamerà fio-tempfile.dat negli esempi precedenti e sarà memorizzato nella directory di lavoro corrente. Quindi dovresti prima passare alla directory montata sul dispositivo che vuoi testare.

Se hai un buon SSD e vuoi vedere numeri ancora più alti, aumenta --numjobs sopra. Che definisce la concorrenza per le letture e le scritture. Gli esempi precedenti hanno tutti numjobs impostato su 1, quindi il test riguarda la lettura e la scrittura di processi a thread singolo (possibilmente con una coda impostata con iodepth). Gli SSD di fascia alta (ad es. Intel Optane) dovrebbero ottenere numeri elevati anche senza aumentare molto numjobs (ad es. 4 dovrebbe essere sufficiente per ottenere i numeri di specifica più alti) ma alcuni SSD "Enterprise" richiedono di andare a 32 - 128 per ottenere i numeri di specifica perché il la latenza interna di questi dispositivi è maggiore, ma il throughput complessivo è folle.

A volte vuoi capire rapidamente come funziona il sottosistema del disco o confrontare 2 dischi rigidi. Ovviamente è quasi impossibile misurare la reale velocità dei dischi, dipende da troppi parametri. Ma puoi avere un'idea della velocità dei dischi.

Se desideri imparare a lavorare con i router microtici e diventare uno specialista in questo settore, ti consiglio di utilizzare il programma basato sulle informazioni del corso ufficiale Associato di rete certificato MikroTik... Il corso vale la pena, leggi tutti i dettagli qui. Ci sono corsi gratuiti.

Il modo più semplice per misurare la velocità di un disco utilizzando il programma hdparm... Installarlo è molto semplice:

# yum -y install hdparm

# apt-get -y install hdparm

Ora devi visualizzare un elenco di dischi e partizioni nel sistema:

# fdisk -l

Seleziona la sezione desiderata e verifica la velocità di lettura:

# hdparm -t / dev / sda2

Vorrei richiamare ancora una volta la vostra attenzione sul fatto che vediamo cifre molto approssimative che contano solo rispetto ad altre cifre ottenute in condizioni simili. hdparm esegue una lettura sequenziale dal disco. Nel lavoro reale, la velocità di lettura del disco sarà diversa.

Controllo della velocità di scrittura su un disco

Per misurare la velocità di scrittura su un disco, puoi usare l'utility standard di Linux - dd... Con il suo aiuto, creeremo un file da 1 Gb sul disco in porzioni da 1 Mb.

Misuriamo la velocità di scrittura su disco:

# sincronizzazione; dd if = / dev / zero of = filetemp bs = 1M count = 1024; sincronizzare

Ho misurato la velocità su una macchina virtuale, il cui disco è stato posizionato su RAID5, assemblato da 5 dischi SAS 10k. In linea di principio, non un cattivo risultato. È possibile modificare la dimensione del file e i blocchi da cui è scritto. Se ingrandisci il file, il risultato della velocità del disco potrebbe essere più realistico.

Ed ecco la velocità del disco sul VDS, che noleggio. Il risultato è molte volte peggiore:

Velocità del disco in una macchina virtuale situata sulla seconda unità SATA del mio laptop di lavoro:

Il risultato non è molto buono, devi capire qual è il problema. Ci sono stati a lungo sospetti che qualcosa non andasse con il disco, le macchine virtuali stanno notevolmente rallentando, anche se questo non era evidente prima. È un peccato che i risultati dei test precedenti non siano stati conservati.

Sarebbe interessante vedere i risultati del tuo test. Se vuoi misurare seriamente la velocità dei dischi, allora a te qui - Come misurare correttamente le prestazioni di un disco.

Corso online Nozioni di base sul networking

Corso teorico con i più conoscenze di rete di base... Il corso è adatto sia a principianti che a persone esperte. Per gli amministratori di sistema pratici, il corso aiuterà a organizzare le conoscenze e a colmare le lacune. E coloro che stanno appena entrando nella professione riceveranno conoscenze e abilità di base sul corso, senza acqua e teoria eccessiva. Dopo la formazione, sarai in grado di rispondere alle domande:
  • A quale livello del modello OSI possono funzionare gli switch;
  • Come organizzare al meglio il lavoro della rete di un'organizzazione con molti reparti;
  • Perché e come utilizzare la tecnologia VLAN;
  • Perché il server dovrebbe essere spostato nella DMZ;
  • Come organizzare il consolidamento delle filiali e l'accesso remoto dei dipendenti tramite vpn;
  • e altro ancora.
Conosci già le risposte alle domande di cui sopra? O sei in dubbio? Prova il test Fondamenti di rete. Ci sono 53 domande in totale, un ciclo di test include 10 domande in ordine casuale. Pertanto, il test può essere ripetuto più volte senza perdere interesse. Gratuito e senza registrazione. Tutti i dettagli nella pagina.

Originale: prova la velocità di lettura/scrittura delle unità USB e SSD con il comando dd su Linux
Autore: Silver Moon
Data di pubblicazione: 12 luglio 2014
Traduzione: N. Romodanov
Data di trasferimento: ottobre 2014

Velocità del dispositivo

La velocità di un dispositivo viene misurata in unità che indicano la quantità di dati che può leggere o scrivere per unità di tempo. Il comando dd è un semplice strumento da riga di comando che puoi utilizzare per leggere e scrivere blocchi arbitrari di dati su disco e misurare la velocità con cui i dati vengono trasferiti.

In questo tutorial, utilizzeremo il comando dd per testare la velocità di lettura e scrittura dei dispositivi USB e SSD.

La velocità di trasferimento dei dati dipende non solo dal disco, ma anche dall'interfaccia attraverso la quale è connesso. Ad esempio, la porta USB 2.0 ha un limite massimo di velocità funzionale di 35 MB/s, quindi anche se hai collegato un'unità flash USB 3 ad alta velocità a USB 2, la velocità sarà limitata a un valore inferiore.

Lo stesso vale per un dispositivo SSD. Il dispositivo SSD si collega tramite porte SATA, che sono di diverse versioni. Sata 2.0 ha un limite di velocità massimo teorico di 3Gb/s, che è di circa 375 MB/s. Mentre SATA 3.0 supporta il doppio della velocità.

Metodo di prova

Montare il disco e accedervi da una finestra di terminale. Quindi utilizzare il comando dd per scrivere prima un file di blocco di dimensioni fisse. Quindi leggi lo stesso file usando la stessa dimensione del blocco.

La sintassi generale per il comando dd è la seguente

Dd if = percorso / a / file_input di = / percorso / a / file_output bs = dimensione_blocco count = numero_di_blocchi

Quando scriviamo su disco, leggiamo semplicemente da /dev/zero, che è la sorgente di un numero infinito di byte. Quando si verifica la lettura dal disco, leggiamo il file scritto in precedenza e lo inviamo al dispositivo /dev/null, che in realtà non è presente. Durante l'intero processo, il comando dd monitora e segnala la velocità di trasferimento.

dispositivo SSD

L'SSD che stiamo utilizzando è un SSD "Samsung Evo 120GB". Questo è un SSD entry-level, un'unità economica e anche il mio primo SSD. È anche uno dei dischi a stato solido più potenti sul mercato.

In questo test, l'unità SSD è collegata alla porta sata 2.0.

Velocità di registrazione

Scriviamo prima su ssd

$ dd if = / dev / zero of =. / largefile bs = 1M count = 1024 1024 + 0 record in 1024 + 0 record out 1073741824 byte (1,1 GB) copiati, 4.82364 s, 223 MB/s

La dimensione del blocco è in realtà piuttosto grande. Puoi provare a utilizzare una dimensione più piccola come 64k o anche 4k.

Velocità di lettura

Ora, al contrario, leggi lo stesso file. Ma prima, cancella la cache di memoria per assicurarti che il file venga effettivamente letto dal disco.

Per cancellare la cache di memoria, esegui il seguente comando

$ sudo sh -c "sync && echo 3> / proc / sys / vm / drop_caches"

Ora leggi il file

$ dd if =. / largefile of = / dev / null bs = 4k 165118 + 0 record in 165118 + 0 record out 676323328 byte (676 MB) copiati, 3.0114 s, 225 MB / s

Dispositivo USB

In questo test, misureremo la velocità di lettura delle normali unità flash USB. I dispositivi si collegano alle porte USB standard 2. Il primo dispositivo è un'unità USB Sony da 4 GB e il secondo è uno stronzio da 16 GB.

Innanzitutto, collega il dispositivo e montalo in modo che sia leggibile. Quindi, dalla riga di comando, passare alla directory montata.

Dispositivo Sony da 4 GB - registrazione

In questo test, il comando dd viene utilizzato per scrivere 10.000 blocchi di dati, 8 KB ciascuno, in un singolo file su disco.

# dd if = / dev / zero of =. / largefile bs = 8k count = 10000 10000 + 0 record in 10000 + 0 record out 81920000 byte (82 MB) copiati, 11.0626 s, 7,4 MB / s

La velocità di scrittura è di circa 7,5 MB/s. Questa è una cifra bassa.

Dispositivo Sony da 4 GB - leggi

Lo stesso file viene letto per testare la velocità di lettura. Per cancellare la cache di memoria, esegui il seguente comando

$ sudo sh -c "sync && echo 3> / proc / sys / vm / drop_caches"

Ora leggi il file usando il comando dd

# dd if =. / largefile of = / dev / null bs = 8k 8000 + 0 record in 8000 + 0 record out 65536000 byte (66 MB) copiati, 2.65218 s, 24,7 MB/s

La velocità di lettura è di circa 25 MB/s, che è più o meno standard per le chiavette USB economiche.

USB 2.0 ha una velocità di trasferimento del segnale massima teorica di 480 Mbps o 60 Mbps. Tuttavia, a causa di varie restrizioni, la larghezza di banda massima è limitata a circa 280 Mbps o 35 Mbps. Inoltre, la velocità effettiva dipende dalla qualità dell'unità flash, nonché da altri fattori.

E poiché il dispositivo USB sopra descritto è stato collegato a una porta USB 2.0 ed è stata raggiunta una velocità di lettura di 24,7 MB / s, il che non è male. Ma la velocità di scrittura è molto indietro.

Ora eseguiamo lo stesso test con una chiavetta Strontium da 16 GB. Strontium è un altro marchio che produce chiavette USB molto economiche, ma queste chiavette sono affidabili.

Velocità di scrittura per dispositivo Strontium da 16 GB

# dd if = / dev / zero of =. / largefile bs = 64k count = 1000 1000 + 0 record in 1000 + 0 record out 65536000 byte (66 MB) copiati, 8,3834 s, 7,8 MB/s

Velocità di lettura per un dispositivo Strontium da 16 GB

# sudo sh -c "sync && echo 3> / proc / sys / vm / drop_caches" # dd if =. / largefile of = / dev / null bs = 8k 8000 + 0 record in 8000 + 0 record out 65536000 byte (66 MB) copiati, 2.90366 s, 22,6 MB / s

La velocità di lettura è più lenta del dispositivo Sony.

Al giorno d'oggi, i sottosistemi del disco vengono modernizzati a un ritmo accelerato per quasi tutti gli hoster. Le unità a stato solido sono diventate un significativo passo avanti nel miglioramento delle prestazioni dell'hardware del computer e del server. Il fatto è che per molti anni il disco è stato un collo di bottiglia, che viene chiamato "anello debole", nelle prestazioni di qualsiasi sistema informativo. In altre parole, tutti gli altri componenti - il processore, la RAM, i bus di sistema e persino la rete - sono stati tutti molto più veloci ed efficienti delle unità per molto tempo. SSD offre un aumento delle prestazioni di qualsiasi dispositivo di circa 3-5 volte. Ciò significa che qualsiasi applicazione verrà avviata diverse volte più velocemente, a volte anche decine di volte più velocemente.

Quindi, l'hoster ti offre due linee tariffarie: SSD e not_SSD. Ottieni un SSD, ovviamente. Ma come assicurarsi che il provider di hosting abbia effettivamente rilasciato un SSD? Dopotutto, non c'è differenza per il funzionamento del sito: tutto funzionerà per te sull'hosting con qualsiasi disco. Cioè, in teoria, l'hoster può annunciarti che ha server su veloci unità a stato solido. Ma in realtà, per vendere capacità su HDD tradizionali convenzionali. E molto probabilmente non lo saprai nemmeno.

Dopotutto, gli SSD sono molto più costosi delle unità convenzionali. E gli hoster hanno capacità serie, hanno bisogno di memorizzare terabyte di dati. Riuscite a immaginare quanto potrebbero costare tali sistemi, considerando che 1 GB di unità a stato solido è circa 10 volte più costoso di 1 GB di un normale disco?

Che cos'è SSD-boost o flashcache?

In generale, esiste un sistema ibrido. Quando si utilizza un pacchetto di SSD + HDD. Allo stesso tempo, tutti i dati vengono archiviati su dischi di grandi dimensioni tradizionali. Esiste un software speciale che configura questi dischi in uno speciale array complicato, in cui l'SSD funge da cache per tutti i dati scritti o letti. In un tale array, abbiamo un piccolo SSD, diciamo 120 GB, seguito da un grande HDD, 2 Tb. Tale bundle fornisce la velocità di lettura/scrittura di un SSD, ma il volume è lo stesso di un HDD. Questo è tutto. Allo stesso tempo, l'hoster può tranquillamente dirti che ha tutto su un SSD. Gli hoster onesti lo chiamano SSD-boost. Ciò non influisce negativamente sul lavoro dei siti.

Ho testato la velocità del disco con dozzine di diversi provider di hosting. Rimarrai sorpreso, ma solo 1 host su 5 fornisce un SSD "onesto".

Catturo queste cose con gli screenshot.

Test di falsi SSD di alcuni hoster

Hoster # 1

Qui vediamo solo 30 MB/s per la scrittura. Questa è la velocità normale per un normale HDD. Ma l'hoster lo pubblicizza come SSD.

Hoster # 2

Un'immagine simile. Ma la velocità di lettura è già leggermente migliore. Forse questo è il caso della flashcache, ma molto sovraccaricata. E molto probabilmente solo un array raid da normali HDD. Puoi raccoglierli in modo tale che le prestazioni di lettura aumentino di 1,5-2 volte.

Host n. 3

Hoster preferito da molti. Mostra risultati generalmente selvaggi. Non solo l'HDD, è anche sovraccarico di chiamate al disco.

Hoster # 4

È una storia davvero divertente qui. Il client ha controllato il server, ci sono state lamentele sui freni. Fammi controllare il disco, penso.

Ecco una foto. Scrivo al cliente in questo modo e in quello: l'hoster ti inganna sfacciatamente. Il cliente corre al supporto - si scopre davvero. Il cliente ha "dimenticato" di accendere l'SSD quando passa da tariffa a tariffa una volta lì, capisci? Lo cambiamo, lo testiamo di nuovo e vediamo come è apparso un vero SSD.

Veri benchmark SSD

Ora, per capire la differenza, ti mostrerò gli screenshot dei test dell'SSD vero e proprio.

Ecco come sembra. Velocità di scrittura superiore a 100 Mb/s dovrebbe essere. Questo è il minimo per un SSD. Questo è un test dal mio laptop di lavoro, su cui sto attualmente scrivendo questo post. Ha l'SSD da 120 Gb più economico. Come puoi vedere, la sua velocità operativa è 4-5 volte più veloce di quella di un disco tradizionale.

Ed ecco il test dell'hoster che fornisce un vero SSD.

Questo è sicuramente un vero SSD qui. Questo è come dovrebbe essere. Forse è configurato un boost, ma è ancora un SSD e puoi convivere con questo hoster.

Come eseguire un test della velocità del disco su un hoster?

Io uso l'utilità dd per questo. Qualsiasi Linux ce l'ha. Ma dovresti gestirlo con attenzione, altrimenti c'è il rischio di rovinare l'intero server, tutti i dati su di esso. Poiché questa utility scrive dati grezzi su qualsiasi dispositivo o file a cui si fa riferimento.

Quindi, per il test di scrittura, dovresti prendere un flusso di zeri dal dispositivo speciale / dev / zero e inviarlo a un file sul disco testato. Qualsiasi file arbitrario. Ad esempio, nella cartella dei file temporanei /tmp/test.img

Dd if = / dev / zero of = / tmp / test.img bs = 1M count = 1024 oflag = dsync

Questo comando creerà un file da 1 GB e visualizzerà la velocità di scrittura.

Puoi controllare immediatamente la velocità di lettura, solo qui l'opzione if dovrebbe puntare al file creato e da qualche parte nel vuoto. In Linux esiste un tale dispositivo / dev / null, gli invieremo:

Dd if = / tmp / test.img of = / dev / null bs = 1M count = 1024

Ma prima, è necessario ripristinare la cache del disco, altrimenti il ​​file verrà letto in un secondo e si otterrà la velocità di lettura in Gb / s. Questo viene fatto con il seguente comando:

Sysctl vm.drop_caches = 3

Quindi eseguiamo il test di lettura con il secondo comando.

Bene, alla fine, devi eliminare il file di prova in modo che non occupi spazio:

Rm -f /tmp/test.img

Funzionerà solo su un server dedicato o VPS. Inoltre, non su tutti i VPS. Dal momento che differiscono anche nella tecnologia di virtualizzazione. Molti hoster non forniscono una virtualizzazione completa (KVM, XEN) ma container (openVZ). Non è possibile accedere ai parametri del kernel, il che significa che non sarà possibile ripristinare la cache. Dovrai leggere e scrivere su file diversi o attendere alcune ore prima del test di lettura finché la cache del disco non viene sovrascritta con altri dati. È anche abbastanza difficile controllare la velocità sull'hosting condiviso poiché non si dispone dell'accesso root lì. Ma l'utilità dd è solitamente disponibile per qualsiasi utente di sistema, quindi puoi verificarla con l'accesso SSH.

Pubblicazioni correlate