Potete avere tra le mani un PC, una workstation o un server da diverse migliaia di euro: per capire limiti e potenzialità del vostro hardware non basta conoscerne la CPU, la RAM o altre caratteristiche. In quasi tutti i casi le prestazioni saranno determinate in gran parte dallo storage, che si tratti di un disco o di una SSD.
Quando dalle macchine fisiche si passa a quelle virtuali, in cui anche un server di fascia medio bassa si trova a far girare diverse VM, le prestazioni I/O (input/output) diventano ancora più importanti. Essere in grado di valutarle non è però del tutto scontato, ma anzi può essere davvero difficile. Certo una rapida copia di un file da un disco all'altro o l'esecuzione di un comando dd su una macchina Linux potrebbe darvi una pur vaga idea delle prestazioni, ma è molto facile prendere degli abbagli, non considerando ad esempio la presenza di cache in lettura e in scrittura sul controller o le funzioni di caching del sistema operativo host (vSphere, Hyper-V o qualsiasi altro hypervisor) e di quello guest. Spesso poi ci si limita a prendere in considerazione esclusivamente le velocità sequenziali di lettura/scrittura che danno però solo una idea di massima, senza considerare il comportamento dello storage in termini di numero di operazioni di I/O al secondo.
Per aiutarvi a capire come valutare queste prestazioni vi illustriamo la nostra metodologia di test nella valutazione delle prestazioni di dischi e SSD.
I test di cui vi parliamo possono essere sfruttati anche in situazioni differenti e si focalizzano sulle prestazioni intrinseche dei dischi ma anche sulla loro durata nel tempo e sul loro comportamento con carichi di lavoro tipici, quali Web Server, File Server o Database, in modo da offrire una anteprima concreta dei risultati che si potranno ottenere in pratica.
La cassetta degli attrezzi
Lo strumento che più utilizziamo in fase di benchmarking dei dischi è IOmeter, uno dei software più versatili e potenti dell’intero panorama del test hardware.
Sviluppato in diretta collaborazione con le maggiori case produttrici questo software permette la creazione di agenti multipli e configurazioni avanzate in grado di eseguire qualunque carico di lavoro su un disco, locale o di rete.
In particolare tramite una maschera molto semplice è possibile configurare tutti i parametri tecnici relativi alle transazioni dati verso il sistema di storage: la grandezza del dato da trasferire, un’eventuale risposta, il delay e, un eventuale allineamento dei dati con i settori del disco, la distribuzione in termini di lettura/scrittura e sequenziale/random e anche la creazione di profili che incorporano più elementi singoli contestualmente, eseguiti in percentuale predefinita durante il test.
I test sono normalmente eseguiti sul disco privo di partizioni e non formattato, in modo da valutare più le prestazioni dell’unità che quelle eventualmente falsate dovute alla logica del sistema operativo.
È inoltre necessario impostare nelle opzioni principali anche l’utilizzo di dati casuali e non di un pattern specifico (che può essere individuato dai controller più evoluti e trattato in maniera privilegiata). In questa schermata si può anche definire la zona specifica del disco su cui indagare e definirne i parametri di ampiezza, il tutto utilizzando come unità di misura i “settori” del disco.
Tutti i risultati sono salvati da IOmeter in un log in formato Csv, che può essere importato ed elaborato direttamente in Excel.
Trasferimento Sequenziale
Per valutare le capacità di trasferimento sequenziale utilizziamo, oltre a IOmeter, un software dedicato precisamente allo scopo: Atto Disk Benchmark.
Questo strumento è decisamente più semplice da utilizzare e permette, attraverso una semplice interfaccia grafica, di visualizzare le velocità di trasferimento sequenziali (sia in lettura sia in scrittura) di una determinata partizione disco, con una coda comandi variabile. Per ottenere la velocità massima utilizziamo una coda comandi di valore 10 (i risultati sono normalmente poco variabili oltre 4, ma in questo caso la valutazione viene fatta sul massimo raggiungibile dal disco).
I dati esposti sono spesso interessanti; è infatti possibile valutare la velocità massima di trasferimento con file di dimensioni variabili, da pochi Kbyte fino a 8 Mbyte.
Il dato è sempre convalidato da IOmeter con una configurazione simile ma calibrata in maniera più precisa, come mostrato nell’immagine sottostante.
Utilizziamo un trasferimento in lettura (o scrittura) di 2 Mbyte con una coda comandi variabile da 1 a 256, in modo da valutare la velocità di assestamento del disco e le sue velocità di picco anche con code comandi tipiche dei sistemi operativi moderni (la media è 4).
Trasferimento Casuale
Per valutare le capacità del disco in ambito di trasferimento casuale impostiamo IOmeter in modo da valutare le velocità con coda comandi variabile (da 1 a 256) di blocchi dati da 4 Kbyte in maniera casuale.
In questo caso teniamo in considerazione sia la pura velocità di trasferimento sia il numero di IOps (operazioni al secondo) effettuabili dal disco. In questo caso tradizionalmente i valori sono molto bassi per coda comandi 1 o 2, salendo esponenzialmente fino a 8 o 16 quando si stabilizza per tutti i dischi. La percentuale raggiunta con coda comandi 4 rispetto al massimo assoluto rappresenta un ottimo indicatore della bontà del controller integrato.