Linux: comando “iostat” per monitorare le prestazioni di I/O del disco
In un ambiente Linux, il monitoraggio delle prestazioni di Input/Output (I/O) del disco è cruciale per garantire l’efficienza del sistema e prevenire colli di bottiglia che possono influenzare negativamente applicazioni e servizi. Uno degli strumenti più utilizzati per questo tipo di monitoraggio è il comando iostat. Derivato dal pacchetto di utilità sysstat, iostat fornisce informazioni dettagliate sulle statistiche di CPU e I/O del disco, permettendo agli amministratori di sistema e agli ingegneri di identificare e risolvere rapidamente problemi di prestazioni.
Cos’è iostat?
iostat è uno strumento a riga di comando che raccoglie e visualizza le statistiche di CPU e I/O per dischi e partizioni. Il nome iostat è un acronimo di “I/O statistics”. Viene utilizzato per monitorare le operazioni di lettura e scrittura su disco, identificare i dispositivi che causano rallentamenti e comprendere come i processi utilizzano le risorse di I/O.
Come funziona iostat?
Eseguendo il comando iostat
, si raccolgono dati da /proc/stat e /proc/diskstats nel sistema Linux, tramite il demone sysstat. I risultati mostrano una panoramica dello stato corrente delle CPU e una serie dettagliata di metriche per ciascun disco. Le informazioni che iostat può fornire includono:
- %user: Percentuale del tempo che la CPU trascorre in esecuzione di codice utente non in modalità kernel.
- %nice: Percentuale del tempo che la CPU trascorre in esecuzione di processi con priorità modificata tramite il comando nice.
- %system: Percentuale del tempo che la CPU trascorre in esecuzione di codice di sistema (kernel).
- %iowait: Percentuale del tempo che la CPU trascorre in attesa di completamento delle operazioni di I/O.
- tps: Numero di trasferimenti al secondo emessi al dispositivo.
- kB_read/s: Velocità di lettura da disco in kilobyte al secondo.
- kB_wrtn/s: Velocità di scrittura su disco in kilobyte al secondo.
- await: Tempo medio di attesa (in millisecondi) per le operazioni di I/O completate dal dispositivo.
Utilizzo di iostat
Per utilizzare iostat, apri una shell e digita iostat
. Il comando può essere arricchito con varie opzioni per ottenere analisi più specifiche. Ad esempio:
iostat -x
: Fornisce statistiche estese relative alla CPU e ai dispositivi di I/O.iostat -d 2
: Visualizza le statistiche di I/O ogni 2 secondi, aggiornando i dati in tempo reale.iostat -c
: Mostra solo le statistiche della CPU.
Il comando iostat è uno degli strumenti più efficaci per monitorare le prestazioni di I/O del disco in ambienti Linux. Esso fornisce una grande quantità di informazioni utili sia sugli aspetti della CPU che sui dispositivi di I/O, consentendo agli amministratori di sistema di analizzare e risolvere rapidamente eventuali problemi di performance. Di seguito, esamineremo la sintassi di base e alcune delle opzioni principali di questo comando per comprenderne meglio l’utilizzo.
Sintassi di base
La sintassi generale del comando iostat è semplice e può essere adattata con molte opzioni per ottenere informazioni specifiche:
iostat [opzioni] [intervallo [conteggio]]
Qui, opzioni rappresenta uno o più flag che determinano il tipo di informazioni visualizzate, intervallo è il numero di secondi tra ogni report, e conteggio è il numero di report da generare.
Opzioni principali
Le seguenti opzioni rappresentano alcune delle più utili e comunemente utilizzate nel comando iostat:
-x
: Fornisce statistiche estese relative alla CPU e ai dispositivi di I/O. Questa opzione offre una vista più dettagliata del comportamento del sistema, inclusi parametri come await e svctm.-d
: Visualizza informazioni specifiche sui dischi, omettendo le statistiche della CPU. Questo è particolarmente utile quando si vuole focalizzare sulle prestazioni di I/O del disco.-p
: Mostra le statistiche per ogni partizione del disco, non solo per i dispositivi principali. Questo può aiutare a identificare se certe partizioni sono più problematiche di altre.-c
: Mostra solo le statistiche della CPU, facilitando la lettura dei dati in certi casi.-t
: Aggiunge un timestamp ai report, utile per tracciare cambiamenti nel tempo.-k
: Visualizza tutti i dati relativi alle velocità di trasferimento in kilobyte al secondo, fornendo una rappresentazione più intuitiva delle operazioni di I/O.
Esempi di utilizzo
Per illustrare l’uso di iostat, ecco alcuni comandi di esempio e i loro effetti:
iostat -d 2 5
: Fornisce le statistiche di I/O del disco ogni 2 secondi e genera un totale di 5 report. È utile per monitorare le prestazioni del disco in tempo reale.iostat -x -p
: Mostra statistiche estese per ogni partizione del disco, fornendo una visione granulare delle prestazioni del sistema.iostat -c 1 10
: Mostra le statistiche della CPU ogni secondo per un totale di 10 iterazioni, utile per valutare un utilizzo intensivo della CPU in brevi periodi.iostat -t -k
: Aggiunge un timestamp a ogni report e visualizza le velocità di trasferimento in kilobyte al secondo, facilitando l’interpretazione dei dati nel lungo periodo.
Analizzare le performance di lettura e scrittura su disco
Il monitoraggio delle prestazioni di I/O del disco è cruciale per mantenere un sistema Linux efficiente. In questo contesto, il comando iostat emerge come uno degli strumenti più potenti a disposizione degli amministratori di sistema per analizzare le operazioni di input/output (I/O) su disco. Questo utile comando permette di ottenere informazioni rilevanti sia sull’utilizzo della CPU che sui dispositivi di archiviazione, fornendo una panoramica dettagliata delle prestazioni di sistema.
Funzionalità avanzate di iostat
Oltre alle opzioni di base, iostat offre funzionalità avanzate per un’analisi più dettagliata delle operazioni di I/O. Ad esempio, l’opzione -m
visualizza i rapporti di I/O del disco in megabyte al secondo, facilitando la comprensione del volume dei dati trasferiti a un livello più alto. Il flag -N
mostra i nomi completi dei dispositivi e delle partizioni, rendendo i report più leggibili.
Monitoraggio continuo e analisi storica
Un aspetto utile di iostat è la capacità di eseguire monitoraggi continui per catturare le tendenze storiche delle prestazioni di I/O. Integrando iostat con strumenti di logging come sysstat
, è possibile salvare i dati raccolti e analizzarli in seguito per individuare cicli di carichi elevati o pattern di utilizzo anomali. Questo monitoraggio regolare è indispensabile per il capacity planning e per predire eventuali aggiornamenti hardware.
Interpretazione dei dati
Capire i risultati forniti da iostat è essenziale per fare diagnosi accurate. Ad esempio, un elevato valore di await potrebbe indicare un problema di latenza nelle operazioni di I/O, suggerendo che i dischi sono sovraccarichi o che le applicazioni stanno generando richieste di I/O troppo rapidamente. Valori alti di svctm possono suggerire che il disco sta impiegando troppo tempo per servire le richieste, forse a causa di colli di bottiglia legati all’hardware.
Integrazione con altri strumenti
iostat può essere utilizzato in combinazione con altri strumenti di monitoraggio come vmstat
e iotop
per ottenere una visione più completa delle prestazioni del sistema. vmstat
fornisce informazioni sull’uso della memoria e sui processi di swap, mentre iotop
offre una panoramica delle operazioni di I/O a livello di processo, permettendo di identificare quali processi stanno generando più carico di I/O.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.