Gli sviluppatori di Microsoft hanno realizzato a suo tempo un’utilità gratuita chiamata DiskSpd che permette di verificare la velocità di hard disk e SSD dalla riga di comando. Il programma nasce per gli amministratori di sistema e per coloro che sono impegnati nell’assemblaggio di macchine server ma è utilizzabile da chiunque sia interessato a usarlo. DiskSpd aiuta ad accertare rapidamente le prestazioni di un’unità per verificare se è veloce come descritto nelle specifiche dal produttore. Aiuta inoltre a confrontare le performance in lettura e scrittura per scoprire quale di esse è la più prestazionale se sottoposta a specifici carichi di lavoro.
DiskSpd è un programma utile quando si allestisce un server o una workstation chiamati a eseguire applicazioni pesanti che attivano un elevato numero di operazioni per secondo (IOPS).
L’utilità Microsoft integra molte opzioni che possono essere usate per avviare una sorta di stress test su hard disk e SSD misurando i workload in lettura e in scrittura che ciascuna unità può gestire. DiskSpd è compatibile sia con i sistemi Windows client, come Windows 10 e Windows 11, che con Windows Server.
Nell’archivio compresso di DiskSpd scaricabile da GitHub (cliccare sul file DiskSpd.zip
). si trovano tre versioni dell’utilità suddivise in altrettante cartelle: AMD64, ARM64 e x86. La prima è destinata ai sistemi x86-64 (macchine Windows a 64 bit), la seconda a quelli basati su piattaforma ARM a 64 bit, la terza ai sistemi x86 32 bit.
Per avere conferma circa la piattaforma che si sta utilizzando basta premere in Windows la combinazione di tasti Windows+Pausa
oppure digitare Informazioni sul PC nella casella di ricerca. Leggere quanto riportato accanto a Tipo sistema.
Le novità di DiskSpd, per verificare anche la velocità degli SSD NVMe più nuovi
Chi gestisce sistemi server sa quanto sia fondamentale eseguire test di performance prima di avviare l’utilizzo di ciascun sistema in produzione. È essenziale assicurarsi di ottenere un valore IOPS in linea con le aspettative, la latenza desiderata e altre metriche importanti per i carichi di lavoro aziendali.
L’ultima versione di DiskSpd, che guarda anche in ottica Windows Server 2025 (come peraltro sottolineato da Microsoft), integra due migliorie significative: Batched Completions e Look-a-sides. L’obiettivo è da un lato quello di rendere le misurazioni di DiskSpd ancora più precise, mantenendo al contempo un’alta affidabilità nei test.
Prima dell’introduzione di Batched Completions, DiskSpd completava una singola operazione di I/O, registrava il risultato e quindi procedeva con la successiva. Questo schema poteva influenzare negativamente la latenza, soprattutto su hardware veloci come i dispositivi NVMe. Grazie a Batched Completions, DiskSpd ora riceve e registra tutte le I/O completate simultaneamente, riflettendo tempi di completamento reali e riducendo la sovrastima della latenza.
La funzionalità Look-a-sides, inoltre, rende DiskSpd in grado di anticipare l’elaborazione delle I/O completate mentre continua a re-emettere le I/O ancora in attesa. Anche quest’accortezza consente di ridurre la sovrastima della latenza, specialmente in situazioni caratterizzate da carichi di lavoro molto impegnativi.
Avviare lo speed test di hard disk e SSD
Dopo aver estratto in una cartella la versione di proprio interesse, si può aprire il prompt dei comandi con i diritti di amministratore quindi portarsi nella directory contenente il programma (esempio: cd c:\DiskSpd\AMD64
).
Il comando seguente permette di avviare uno speed test dell’hard disk o dell’unità SSD corrispondente alla lettera identificativa C:
diskspd -d60 -W15 -C15 -c128M -t4 -o4 -b8k -L -r -Sh -w50 c:\speedtest.dat > c:\speedtest.txt
notepad c:\speedtest.txt
Il comando avvia uno “stress test” dell’unità indicata (in questo caso C:) per 60 secondi (-d60
) utilizzando un file da 128 MB (-c128M
).
L’opzione -t
indica il numero di thread utilizzati per eseguire il benchmark: di solito il valore dovrebbe essere pari al numero di core fisici del processore. Il numero dei core si trova premendo CTRL+MAIUSC+ESC
per avviare il Task Manager cliccando su Più dettagli, sulla scheda Prestazioni quindi verificando il valore che appare accanto alla voce Cores.
Gli altri parametri consentono di specificare il numero di richieste I/O in sospeso per ciascun thread (-o4
), la dimensione del blocco da utilizzare (-b8k
), di generare operazioni I/O casuali (-r
), di disattivare le funzioni di caching in hardware e lato software (-Sh
), di specificare la percentuale di richieste di lettura e scrittura (il valore -w50
consente di avere esattamente la metà delle operazioni di scrittura).
Le opzioni -W15
e -C15
consentono infine di impostare 15 secondi come warm-up e cool-down prima e dopo l’esecuzione del test.
Nel nostro esempio i risultati effettuati dal test con DiskSpd sono memorizzati nel file c:\speedtest.txt
. È possibile aprirlo e visualizzarne il contenuto direttamente dal prompt dei comandi alla fine dei “lavori”.
I file c:\speedtest.dat
e c:\speedtest.txt
usati per il test non sono cancellati automaticamente al termine delle verifiche e possono quindi essere poi rimossi.
Come interpretare i risultati
L’output di DiskSpd fornisce diverse informazioni dettagliate sui risultati del test di performance, eseguito con i parametri specificati.
La prima parte del resoconto contiene un riassunto delle preferenze impostate da riga di comando: durata del test, tempi di warm-up e cool-down, statistiche relative alla latenze e altri dettagli.
Al di sotto di Results for timespan 1 sono raccolte le informazioni più interessanti a partire dal carico di lavoro rilevato sul processore durante l’esecuzione del test. La colonna Idle riporta la percentuale del tempo in cui la CPU è a riposo. La tabella Total IO mostra le letture e le scritture per thread. Si tratta di un dato che offre la prestazione media in mebibyte al secondo, le operazioni (letture e scritture) che sono state eseguite in un secondo e l’input/output (IO) totale.
Ogni riga rappresenta l’utilizzo per un core specifico, indicando percentuali di utilizzo totale, utente (user), kernel e idle (inattivo). Nello specifico:
- Total IO: Mostra le statistiche aggregate per tutti i thread durante l’intero test. Include il totale dei byte letti e scritti, il numero totale di operazioni di I/O, il tasso di trasferimento medio in MiB/s, il numero medio di operazioni di I/O al secondo, la latenza media (AvgLat) e la deviazione standard della latenza (LatStdDev).
- Read IO: Statistiche specifiche per le operazioni di lettura.
- Write IO: Statistiche specifiche per le operazioni di scrittura.
Leggere velocità media in lettura e scrittura
L’informazione importante è il risultato in MiB/s che esprime la velocità media in lettura e scrittura per l’unità di memorizzazione oggetto della prova.
I produttori di soluzioni per lo storage dei dati hanno sempre utilizzato multipli decimali mentre i produttori di memorie RAM e gli sviluppatori di sistemi operativi utilizzano prevalentemente il sistema binario. Un mebibyte è composto da 220 byte ovvero 1.048.576 byte. Per convertire i mebibyte/s (MiB/s) in megabyte/s (MB/s) basta moltiplicare per 1,048576.
La tabella Read IO mostra le statistiche di lettura per thread mentre Write IO quelle in fase di scrittura. La tabella in fondo alla pagina include informazioni sulla latenza in millisecondi (ms) rilevata.
L’importanza della latenza
La sezione successiva offre una panoramica sulla distribuzione della latenza per le operazioni di lettura, scrittura e in totale. Le colonne indicano i percentili della latenza (dal minimo al massimo), misurati in millisecondi (ms). È così possibile conoscere come varia la latenza durante il test rispetto ai percentili.
I percentili della latenza indicano il valore di latenza al di sotto del quale cade una certa percentuale delle operazioni di I/O. Ad esempio, il 50esimo percentile (o mediana) rappresenta il valore di latenza al di sotto del quale si trova il 50% delle operazioni di I/O. In altre parole, è la latenza media. Il 99esimo percentile rappresenta il valore di latenza al di sotto del quale si trova il 99% delle operazioni di I/O. Questo valore esprime fino a quanto si può spingere la latenza nel caso delle operazioni più pesanti.
Speed test su disco fisso e unità SSD in sola lettura o scrittura
Utilizzando sempre DiskSpd è possibile provare soltanto le prestazioni in fase di lettura sequenziale:
diskspd -d60 -c128M -t4 -o4 -b8k -L -Sh -w0 -si c:\speedtest.dat > c:\speedtest.txt
notepad c:\speedtest.txt
Sostituire w100
a w0
per richiedere scritture sequenziali.
Per richiedere l’effettuazione di operazioni di lettura random si può usare il comando seguente:
diskspd -d60 -c128M -t4 -o4 -b8k -L -Sh -w0 c:\speedtest.dat > c:\speedtest.txt
notepad c:\speedtest.txt
Sostituire w100
con w0
per effettuare scritture random.
Separare i test su IOPS e latenza per ottenere misurazioni più accurate
Con il rilascio delle ultime versioni di DiskSpd, i tecnici Microsoft consigliano di separare i test IOPS e latenza in modo che l’utilità restituisca misurazioni più accurate. L’introduzione della funzionalità Look-a-sides per i test di latenza, può leggermente influenzare i risultati IOPS.
È altresì consigliato ri-basare le prestazioni di storage delle unità proprio su DiskSpd 2.2 e release successive, in quanto le differenze nelle misurazioni di latenza e IOPS possono essere significative.
L’azienda di Redmond suggerisce, ad esempio i seguenti due test per ottenere indicazioni su valori IOPS e latenza:
diskspd -t8 -o8 -b4k -r -w0 -Suw c:\speedtest.dat > c:\speedtest.txt
diskspd -t1 -o1 -b4k -r -w0 -Suw -L c:\speedtest.dat > c:\speedtest.txt
A valle di entrambi i test, si può digitare notepad c:\speedtest.txt
per aprire il report generato utilizzando il Blocco Note.