Salta ai contenuti

iostat - Cheatsheet Statistiche CPU e Disk I/O

iostat - Cheatsheet Statistiche CPU e Disk I/O

iostat riporta utilizzo CPU e statistiche disk I/O per-device — throughput, IOPS, request latency, e queue depth. È il primo stop standard per diagnosticare colli di bottiglia di storage su Linux: il disco è saturo, le richieste sono in coda, la latenza sta salendo? Viene fornito come parte del package sysstat insieme a mpstat, pidstat, e sar.

Installazione

PiattaformaComando
Debian/Ubuntusudo apt install sysstat
Fedora/RHELsudo dnf install sysstat
Arch Linuxsudo pacman -S sysstat
macOSiostat è built in (output diverso)
Verificaiostat -V

Utilizzo di Base

ComandoDescrizione
iostatUn report da boot (CPU + devices)
iostat 2Refresh ogni 2 secondi
iostat 2 55 report, 2 secondi apart
iostat -xExtended stats (quelli utili)
iostat -dDevice stats solamente (no CPU)
iostat -cCPU stats solamente

Il Comando che Effettivamente Vuoi

# Extended, human-readable, per-device, ogni 2s
iostat -xmt 2
FlagEffetto
-xExtended statistics (util%, await, aqu-sz, …)
-mRiporta in MB/s (usa -k per KB/s)
-tStampa un timestamp con ogni report
-p DEVMostra partizioni di un device (e.g. -p sda)
-d 2Device report ogni 2 secondi
-hHuman-readable, NVMe-friendly formatting

Leggere l”Output Extended (-x)

ColonnaSignificato
r/s, w/sRead/write requests al secondo (IOPS)
rMB/s, wMB/sRead/write throughput
rareq-sz / wareq-szDimensione media request
r_await, w_awaitAvg read/write latency (ms) — metrica chiave
aqu-szProfondità media coda (richieste in volo)
%utilFrazione di tempo il device era busy

Interpretare i Segnali

OsservazioneInterpretazione
%util vicino al 100%Device saturo (attento su SSD/NVMe — può parallelizzare)
Alto await (decine ms+)Le richieste sono lente — collo di bottiglia latenza
Alto aqu-szLe richieste si accumulano più velocemente di quelle che il disco drena
Alto IOPS, basso throughputPiccolo random I/O (tipico workload DB/metadata)
Basso IOPS, alto throughputGrande sequential I/O (backups, streaming)

Su modern SSD/NVMe, %util può leggere 100% mentre il device ha ancora headroom (serve le richieste in parallelo). Trusted await e aqu-sz più di %util lì.

Sezione CPU

FieldSignificato
%user / %niceTempo in user space
%systemTempo nel kernel
%iowaitCPU idle in attesa su I/O (storage pressure hint)
%stealTempo rubato dall”hypervisor (noisy neighbors)
%idleTempo idle

Alto %iowait insieme a alto disk await punta direttamente allo storage come collo di bottiglia.

Workflow Comuni

# Osserva un sospetto collo di bottiglia disk in tempo reale
iostat -xmt 2

# Focalizza su un device e le sue partizioni
iostat -xmt -p nvme0n1 2

# Correla CPU iowait con device latency durante un load test
iostat -xmt 1 60 > iostat.log

iostat vs Tool Correlati

ToolFocus
iostatPer-device I/O + CPU stats
iotopQuale processo sta facendo l”I/O
dstat/doolCombined CPU/disk/net in una vista
sarStorical/recorded system activity

Usa iostat per vedere il device è lento, poi iotop per trovare quale processo è responsabile.

Risorse