Sono cinque i tool di I/O (input/output) benchmarking dei dispositivi di storage (hard disk drive e SSD, solid state disk) che emergono, come i maggiormente popolari fra gli amministratori, quando si tratta dell’ambiente operativo Linux.
Hdparm è un programma già incluso nella maggior parte delle distribuzioni Linux mainstream che si richiama e si gestisce dall’interfaccia terminale. Hdparm viene spesso utilizzato per ottimizzare le performance di HDD e lettori di CD/DVD all’interno di un sistema Linux in quanto consente di inviare direttamente comandi all’interfaccia ATA di questi dispositivi. Fra questi comandi, alcuni consentono di svolgere misurazioni molto semplici delle prestazioni I/O. A seconda delle opzioni inserite dopo il nome del programma nell’interfaccia a riga di comando del terminale (CLI, command-line interface) è possibile misurare le prestazioni del disco includendo, oppure escludendo (bypassandola in modo trasparente) la disk cache; ovvero quel blocco di memoria volatile che i vendor integrano nell’hardware dei dischi per velocizzare le attività di lettura e scrittura trattenendovi piccole quantità di dati che devono ancora essere scritte o che sono appena state richieste una prima volta, oppure che sono posizionate in blocchi vicini a quelle dei dati in fase di utilizzo e quindi potrebbero essere successivamente ricercate. Hdparm è molto facile da utilizzare, ma allo stesso tempo i risultati possono essere influenzati da diversi fattori. In particolare è molto sensibile al file system utilizzato e alla variazione di altri aspetti software di alto-livello: tutti elementi che possono dare luogo a risultati diversi fra una misurazione e l’altra anche in tempi ravvicinati, motivo per cui gli amministratori tendono a effettuare più misure e poi a calcolare delle medie. Un altro tool di gestione dello storage disponibile da CLI che viene utilizzato spesso dagli amministratori Linux per misurare anche l’I/O a fronte di accessi ai dati di tipo sequenziale (cioè secondo una sequenza ordinata predeterminata, al contrario degli accessi in modalità random) è il comando Linux dd, abbreviazione di data duplicator.
Tool progettati per il benchmarking
Segnaliamo quindi tre tool dedicati allo storage benchmarking e che risultano fra i più popolari in ambiente Linux.
Quello che è forse il più versatile e utilizzato per testare le prestazioni di HDD e SSD è Flexible I/O Tester (FIO). Il tool consente agli amministratori di eseguire test sequenziali di tipo read/write (lettura/scrittura) variando le dimensioni dei blocchi di I/O (block size) e le lunghezze delle serie (code) di comandi inviati in una singola volta (queue depth).
Un’altra utility apprezzata per lo storage benchmarking in Linux è Sysbench. Si tratta di una suite general purpose, che permette di testare le performance in tre aree: processore (CPU), database (OLTP, online transaction processing, per esempio con MySql) e file I/O (fileio). Il test fileio è quello che aiuta a controllare la performance I/O di un disco attraverso test sequenziali/random read/write effettuati simulando variazioni di I/O block size, synchronous e asynchronous I/O e altri comportamenti del disco. Dato che il test fileio di Sysbench è più semplificato rispetto a quello con FIO, alcuni amministratori suggeriscono di utilizzare entrambe le utility.
Ecco quindi il tool command-line IOzone, che supporta un’ampia varietà di test write, read, backwards read (lettura all’indietro, per esempio dalla fine all’inizio di un file), e incluse funzioni/chiamate di sistema (meccanismi utilizzati a livello applicativo, ovvero scritti nel codice, per richiedere servizi specifici a livello di kernel dal sistema operativo in uso sul computer) come fwrite, fread, pread, pwritev e preadv. Gli amministratori possono specificare le dimensioni dei file e dei blocchi prima di testare.
Tool diversi per esigenze differenti
La lista dei tool utilizzabili per eseguire test di storage benchmarking in ambiente Linux di cui sopra non è assolutamente esaustiva, ma include gli strumenti più diffusi nelle “cassette degli attrezzi” degli amministratori storage e database. Per completezza, va ricordato che oltre a quelli preintegrati nelle distribuzioni di Linux (o scaricabili dai principali repository di software open source), e utilizzabili da riga di comando, possono essere presi in considerazione anche quelli inclusi nelle soluzioni di IT systems management specifiche per un determinato ambiente operativo o per ambienti eterogenei.
Ad ogni modo non va mai dimenticato che nessun tool è nato uguale all’altro. Alcuni tool si concentrano sulle performance I/O relative a determinati attributi, di disk I/O quali la lettura, la scrittura, l’accesso random, l’accesso sequenziale, la latenza, il throughput (concetto diverso dalla larghezza di banda, o capacità trasmissiva, perché indica l’effettivo utilizzo di questa capacità dei link), le dimensioni di blocchi I/O e vari mix di questi aspetti. Altri strumenti, invece, sembrano fare un passo indietro rispetto all’hardware del disco, e focalizzarsi di più sul file system del disco oppure su come elevati traffici storage interagiscono con la RAM di sistema (caching). In definitiva, prima di scegliere e poi imbarcarsi in lunghe sessioni di testing di storage performance (al fine, per esempio, di scegliere nuovi disk drive o disk array da acquistare) è consigliabile stabilire delle priorità di prove in funzione delle applicazioni e degli utenti che lo storage dovrà supportare. Per chi gestisce server utilizzati per il video streaming, possono essere più rilevanti i test sulle performance di lettura sequenziale, mentre, a fronte di ambienti general purpose, assumono più importanza le prove di letture e scritture random.
Gli esperti, infine, consigliano di utilizzare contemporaneamente strumenti differenti per ogni singolo test. Più i risultati ottenuti con diversi tool sono coerenti e più i benchmark sono affidabili e ci permettono di effettuare investimenti in storage con maggiore tranquillità.