
Il comando Iostat viene utilizzato per monitorare il carico del dispositivo di input/output (I/O) del sistema osservando il tempo in cui i dispositivi sono attivi in relazione alle loro velocità di trasferimento medie. Iostat crea report che possono essere utilizzati per modificare la configurazione del sistema per bilanciare meglio l'input/output tra i dischi fisici.
Iostat è incluso in sysstat pacchetto. Iostat è installato per impostazione predefinita nella maggior parte delle distribuzioni Linux.
Se non lo hai, devi prima installarlo.
Su RedHat / CentOS / Fedora
$ yum install sysstat
Su Debian / Ubuntu / Linux Mint
$ apt-get install sysstat
Quando il comando viene eseguito senza argomenti, genera un rapporto dettagliato contenente informazioni da quando il sistema è stato avviato . Puoi fornire due parametri facoltativi per modificarlo:
iostat [option] [interval] [count]
- intervallo il parametro specifica la durata in secondi tra ogni rapporto
- Conte consente di specificare il numero di report generati prima della chiusura di iostat.
Quando il comando viene eseguito per la prima volta con questi argomenti, il primo report contiene informazioni dall'avvio del sistema, mentre ogni report successivo copre il periodo di tempo da quando è stato generato l'ultimo rapporto.
$ iostat 2 3
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.65 0.00 0.18 0.02 0.00 99.15
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.88 4.29 7.07 217829 358600
avg-cpu: %user %nice %system %iowait %steal %idle
1.01 0.00 0.50 0.00 0.00 98.49
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.50 0.00 2.01 0 4
avg-cpu: %user %nice %system %iowait %steal %idle
3.00 0.00 0.50 0.00 0.00 96.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 0.00 30.00 0 60
1. Ottieni report e statistiche
iostat per impostazione predefinita senza alcuna opzione visualizza il rapporto statistico composto da CPU e dispositivi.
$ iostat
Uscita:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/22/2017 _x86_64 (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.69 0.00 0.19 0.02 0.04 99.08
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 3.40 14.08 1552428 6423128
La prima sezione contiene il rapporto CPU
- %utente : percentuale di utilizzo della CPU che si è verificata durante l'esecuzione a livello di utente (applicazione)
- %bello : percentuale di utilizzo della CPU che si è verificata durante l'esecuzione a livello di utente con una buona priorità
- %sistema : percentuale di utilizzo della CPU che si è verificata durante l'esecuzione a livello di sistema (kernel)
- %iowait : percentuale di tempo in cui la CPU o le CPU sono rimaste inattive durante le quali il sistema ha ricevuto una richiesta di I/O del disco in sospeso
- %steal : percentuale di tempo trascorso in attesa involontaria dalla o dalle CPU virtuali mentre l'hypervisor stava effettuando la manutenzione di un altro processore virtuale
- %idle : percentuale di tempo in cui la CPU o le CPU sono rimaste inattive e il sistema non ha ricevuto una richiesta di I/O del disco in sospeso
La seconda sezione contiene il rapporto sull'utilizzo del dispositivo
- Dispositivo : nome del dispositivo/partizione come elencato in /dev directory
- tps : numero di trasferimenti al secondo emessi al dispositivo. Tps più alti significano che il processore è più occupato
- Blk_read/s : mostra la quantità di dati letti dal dispositivo espressa in un numero di blocchi (kilobyte, megabyte) al secondo
- Blk_wrtn/s : quantità di dati scritti sul dispositivo espressa in un numero di blocchi (kilobyte, megabyte) al secondo
- Blk_read : mostra il numero totale di blocchi letti
- Blk_wrtn : mostra il numero totale di blocchi scritti
iostat utilizza i seguenti file per creare rapporti:
/proc/stat
contiene statistiche di sistema./proc/uptime
contiene il tempo di attività del sistema./proc/diskstats
contiene le statistiche dei dischi./sys
contiene le statistiche per i dispositivi a blocchi./proc/self/mountstats
contiene le statistiche per i filesystem di rete./dev/disk
contiene nomi di dispositivi persistenti.
2. Mostra maggiori dettagli sulle statistiche
Il comando Iostat fornisce report sull'utilizzo dei dispositivi I/O. È possibile estendere il risultato statistico per una diagnosi approfondita con l'opzione -x
.
$ iostat -x
Uscita:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.69 0.00 0.19 0.02 0.04 99.06
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.01 1.10 0.16 0.84 3.37 14.04 34.88 0.00 2.35 1.41 2.53 0.40 0.04
- cpu medio: sono le informazioni sul blocco della CPU
- Disponi: sono informazioni sul blocco del dispositivo. Per essere sicuro di utilizzare un buon dispositivo
- %util :per quanto tempo il dispositivo di archiviazione ha lavorato in sospeso (era occupato).
- svctm :indica la velocità con cui il tuo sottosistema I/O risponde alle richieste in generale quando è occupato. In realtà, meno carichi il tuo sistema, maggiore è svctm.
- aspetta :indica la velocità di elaborazione delle richieste. È solo una media.
- media-sz :quante richieste ci sono in una coda di richieste. Basso =il sistema non è caricato oppure ha I/O serializzato e non può utilizzare correttamente lo storage sottostante. Alto =il tuo stack software è sufficientemente scalabile per caricare correttamente l'I/O sottostante.
- avgrq-sz :Solo una dimensione media della richiesta. può indicare che tipo di carico di lavoro si verifica.
- wsec/s &rsec/s :Settori letti e scritti al secondo. Dividi per 2048 e otterrai megabyte al secondo.
- r/s &con/s :Leggi e scrivi richieste al secondo. Questi numeri sono quelli che rappresentano la capacità di I/O, anche se ovviamente, a seconda di quanta pressione subisce il sottosistema di I/O sottostante (dimensione della coda!), possono variare.
- rrqm/s &wrqm/s :quante richieste sono state unite per livello di blocco.
3. Mostra solo la statistica della cpu
È possibile mostrare informazioni statistiche e report della nostra cpu con -c
opzione
$ iostat -c
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.93 0.08 2.40 3.35 0.00 81.24
4. Visualizza solo il rapporto del dispositivo
È possibile visualizzare lo stato di utilizzo del dispositivo solo con -d
opzione. Elencherà le informazioni per ogni dispositivo connesso.
$ iostat -d
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 17.73 510.80 632.10 5127420 6345037
mmcblk0 0.03 0.63 0.00 6282 0
5. Mostra statistiche I/O estese solo per il dispositivo
Possiamo visualizzare statistiche estese su un lato e dall'altro lato possiamo visualizzare statistiche estese. Significa che possiamo visualizzare statistiche estese solo per i dispositivi con l'opzione -xd
.
$ iostat -xd
Uscita:
$ iostat -xd
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.48 25.33 8.43 7.81 417.06 540.42 117.88 1.18 72.83 35.98 112.62 6.18 10.03
mmcblk0 0.30 0.00 0.02 0.00 0.49 0.00 49.47 0.00 3.73 3.73 4.00 2.99 0.01
6. Acquisisci le statistiche in kilobyte o megabyte
Per impostazione predefinita, iostat misura il sistema I/O con unità di byte. Per semplificare la lettura, possiamo convertire iostat per mostrarci i rapporti in kilobyte o megabyte.
Aggiungi semplicemente l'opzione -k
per creare report con unità kilobyte.
$ iostat -k
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.54 0.08 2.37 3.41 0.00 81.61
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 16.18 345.76 504.55 5622164 8204113
mmcblk0 0.02 0.39 0.00 6282 0
L'opzione -m
per creare report con unità di megabyte.
$ iostat -m
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.54 0.08 2.37 3.41 0.00 81.61
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 16.18 0.34 0.49 5490 8012
mmcblk0 0.02 0.00 0.00 6 0
7. Visualizza le statistiche della CPU e del dispositivo con ritardo
Lo stesso con vmstat, come strumento statistico il modo migliore per usarlo è con il parametro delay. Con il ritardo, possiamo vedere qual è la tendenza. Ecco alcuni esempi per eseguire iostat con ritardo.
Esegui iostat con unità kilobyte, intervallo di 2 secondi con rapporti 3 volte.
$ iostat -k 2 3
Uscita:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.70 0.00 0.19 0.02 0.03 99.05
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 3.33 14.03 1561788 6572152
avg-cpu: %user %nice %system %iowait %steal %idle
0.50 0.00 0.00 0.00 0.00 99.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3.52 0.00 0.50 0.00 0.00 95.98
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.51 0.00 12.06 0 24
Per mostrare il rapporto solo CPU con 2 secondi di intervallo e 2 rapporti, digita:
$ iostat -c 2 2
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.71 0.00 0.19 0.02 0.03 99.05
avg-cpu: %user %nice %system %iowait %steal %idle
1.50 0.00 0.00 0.00 0.00 98.50
Per mostrare i rapporti solo per dispositivi sda6 e sda7 con intervalli di 2 secondi e rapporti 2 volte, esegui:
$ iostat -d sda7 sda6 2 2
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda6 3.40 108.29 130.75 1928577 2328496
sda7 12.19 211.96 305.79 3774804 5445696
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda6 0.00 0.00 0.00 0 0
sda7 1.00 0.00 24.00 0 48
8. Visualizza statistiche persistenti sui nomi dei dispositivi
È possibile stampare il report per nome dispositivo. Invece dello standard /dev/sda
name, stamperà il nome del dispositivo persistente utilizzando l'opzione -j
e aggiungendo ID
parola chiave (specificare il tipo del nome persistente).
$ iostat -j ID mmcbkl0 sda6 -x -m 2 2
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14.33 0.10 2.48 3.26 0.00 79.83
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
ata-ST500LT012-1DG142_S3P4312X-part6
0.19 0.88 2.51 0.82 0.10 0.12 138.36 0.21 61.81 57.12 76.12 10.81 3.60
avg-cpu: %user %nice %system %iowait %steal %idle
19.40 0.00 1.25 0.63 0.00 78.72
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
ata-ST500LT012-1DG142_S3P4312X-part6
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
9. Visualizza statistiche per dispositivi a blocchi
È possibile visualizzare direttamente le informazioni per ogni dispositivo a blocchi automaticamente. Non è necessario indicare il nome di ciascun dispositivo. Visualizzerà le statistiche per i dispositivi a blocchi e tutte le loro partizioni utilizzate dal sistema. Se viene immesso il nome di un dispositivo sulla riga di comando, vengono visualizzate le statistiche relative a esso e a tutte le sue partizioni. Usa semplicemente -p
opzione
$ iostat -p
Uscita:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14.93 0.10 2.51 3.19 0.00 79.28
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 15.82 297.18 474.87 5928512 9473117
sda1 0.00 0.11 0.00 2108 0
sda2 0.01 0.28 0.00 5679 1
sda3 0.00 0.10 0.00 2084 0
sda4 0.00 0.10 0.00 2092 0
sda5 0.09 0.77 45.62 15428 910068
sda6 3.26 102.76 117.09 2049957 2335908
sda7 12.09 192.75 306.99 3845120 6124136
sda8 0.12 0.20 5.16 3896 103004
mmcblk0 0.01 0.31 0.00 6282 0
mmcblk0p1 0.01 0.26 0.00 5242 0
$ iostat -p sdf 1 2
Linux 3.10.0-514.16.1.el7.x86_64 (centos7-srv) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
7.18 0.41 3.94 4.10 0.00 84.37
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdf 0.47 3.54 0.00 4656 0
sdf1 0.09 0.70 0.00 920 0
sdf2 0.09 0.69 0.00 904 0
sdf3 0.09 0.69 0.00 904 0
sdf4 0.09 0.69 0.00 904 0
avg-cpu: %user %nice %system %iowait %steal %idle
6.00 1.00 2.00 0.00 0.00 91.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdf 0.00 0.00 0.00 0 0
sdf1 0.00 0.00 0.00 0 0
sdf2 0.00 0.00 0.00 0 0
sdf3 0.00 0.00 0.00 0 0
sdf4 0.00 0.00 0.00 0 0
10. Visualizza le informazioni sulle statistiche lvm2
È possibile visualizzare le statistiche LVM utilizzando l'opzione -N
. Il comando visualizza i nomi dei device mapper registrati per qualsiasi dispositivo device mapper.
$ iostat -N

Conclusione
Possiamo dire a iostat di omettere l'output per tutti i dispositivi per i quali non c'è stata attività durante il periodo di campionamento con -z
opzione.
Uno dei vantaggi di questo strumento è che puoi eseguirli senza privilegi di root. Puoi scavare più a fondo esplorando la pagina di manuale di iostat digitando man iostat nella tua console per portare la pagina di manuale di iostat.
Leggi anche:
- Come monitorare le prestazioni di Linux utilizzando il comando Sar
- 14 strumenti da riga di comando per controllare l'utilizzo della CPU in Linux