Come verificare le prestazioni di un disco rigido (tramite terminale o interfaccia grafica). La velocità di scrittura. La velocità di lettura Dimensione e velocità della cache. Velocità casuale.
Come verificare le prestazioni di un disco rigido (tramite terminale o interfaccia grafica). La velocità di scrittura. La velocità di lettura Dimensione e velocità della cache. Velocità casuale.
hdparm
è un buon punto di partenza.
sudo hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 12540 MB in 2.00 seconds = 6277.67 MB/sec
Timing buffered disk reads: 234 MB in 3.00 seconds = 77.98 MB/sec
sudo hdparm -v /dev/sda
fornirà anche le informazioni.
dd
ti darà informazioni sulla velocità di scrittura.
Se l'unità non ha un file system (e solo allora ), utilizza of=/dev/sda
.
Altrimenti, montalo su / tmp e scrivi quindi elimina il file di output di test.
dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output
10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s
gnome-disks
C'è qualcosa che vuoi?
Suominen ha ragione, dovremmo usare una specie di sincronizzazione; ma c'è un metodo più semplice, conv = fdatasync farà il lavoro:
dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output
1024+0records in
1024+0 records out
402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s
Non consiglierei di usare /dev/urandom
perché è basato su software e lento come maiale. Meglio prendere un po 'di dati casuali su ramdisk. Sul test del disco rigido casuale non importa, perché ogni byte è scritto come è (anche su ssd con dd). Ma se testiamo il pool zfs deduplicato con zero puro o dati casuali, c'è un'enorme differenza di prestazioni.
Un altro punto di vista deve essere l'inclusione del tempo di sincronizzazione; tutti i moderni filesystem utilizzano la memorizzazione nella cache delle operazioni sui file.
Per misurare realmente la velocità del disco e non la memoria, dobbiamo sincronizzare il filesystem per eliminare l'effetto di memorizzazione nella cache. Questo può essere fatto facilmente da:
time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"
con questo metodo ottieni l'output:
sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync" ; rm testfile
1024+0 records in
1024+0 records out
104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/s
real 0m0.441s
user 0m0.004s
sys 0m0.124s
quindi il disco datarate è solo 104857600 / 0,441 = 237772335 B / s - & gt; 237MB / s
Più di 100 MB / s in meno rispetto alla memorizzazione nella cache.
Buon benchmarking,
Se vuoi monitorare la velocità di lettura e scrittura del disco in tempo reale, puoi utilizzare lo strumento iotop .
Questo è utile per ottenere informazioni esatte su come si comporta un disco per una particolare applicazione o attività. L'output mostrerà la velocità di lettura / scrittura per processo e la velocità di lettura / scrittura totale per il server, molto simile a top
.
Per installare iotop:
sudo apt-get install iotop
Per eseguirlo:
sudo iotop
bonnie ++ è l'ultima utility di benchmark che conosco per linux.
(Attualmente sto preparando un linux livecd al lavoro con bonnie ++ su di esso per testare con esso il nostro computer basato su Windows!)
Si occupa della cache, della sincronizzazione, dei dati casuali, della posizione casuale su disco, degli aggiornamenti di piccole dimensioni, di grandi aggiornamenti, letture, scritture, ecc. Confrontando un tasto usb, un disco rigido (rotativo), un'unità a stato solido e un il filesystem basato su ram può essere molto informativo per il principiante.
Non ho idea se sia incluso in Ubuntu, ma puoi compilarlo facilmente dalla fonte.
Velocità di scrittura
$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
La dimensione del blocco è in realtà piuttosto grande. Puoi provare con dimensioni più piccole come 64k o anche 4k.
Velocità di lettura
Eseguire il seguente comando per cancellare la memoria cache
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
Ora leggi il file che è stato creato nel test di scrittura:
$ dd if=./largefile of=/dev/null bs=4k
165118+0 records in
165118+0 records out
676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
alcuni suggerimenti su come usare bonnie ++
bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER]
bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james
Un po 'di più su: SEMPLICE BONNIE ++ ESEMPIO .
Se vuoi precisione, dovresti usare fio
. Richiede la lettura del manuale ( man fio
) ma ti darà risultati accurati. Si noti che per qualsiasi precisione, è necessario specificare esattamente ciò che si desidera misurare. Alcuni esempi:
Velocità di lettura sequenziale con blocchi grandi (questo dovrebbe essere vicino al numero che vedi nelle specifiche per l'unità):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Velocità SCRITTURA sequenziale con blocchi grandi (questo dovrebbe essere vicino al numero che vedi nelle specifiche per la tua unità):
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
Random 4K read QD1 (questo è il numero che conta davvero per le prestazioni del mondo reale a meno che tu non lo sappia di sicuro):
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
Mixed random 4K lettura e scrittura QD1 con sincronizzazione (questo è il numero peggiore che ti aspetti dal tuo disco, solitamente 1-10% del numero elencato nella scheda tecnica):
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'uso di file più grandi può ridurre i numeri che si ottengono in base alla tecnologia e al firmware dell'unità. I file di piccole dimensioni danno risultati "troppo buoni" per i supporti di rotazione perché la testina di lettura non deve spostarsi più di tanto. Se il tuo dispositivo è quasi vuoto, l'utilizzo di un file abbastanza grande da riempire quasi l'unità ti darà il comportamento peggiore per ogni test. In caso di SSD, le dimensioni del file non contano molto.
Si noti che fio
creerà il file temporaneo richiesto alla prima esecuzione. Sarà riempito con dati casuali per evitare di ottenere numeri troppo buoni da dispositivi che imbrogliano comprimendo i dati prima di scriverli in una memoria permanente. Il file temporaneo verrà chiamato fio-tempfile.dat
negli esempi sopra e memorizzato nella directory di lavoro corrente. Quindi dovresti prima passare alla directory che è montata sul dispositivo che vuoi testare.
Leggi altre domande sui tag performance hard-drive