Questo articolo fornisce un totale di 24 esempi sui comandi iostat, vmstat e mpstat.
- iostat riporta le statistiche relative a CPU, I/O su disco e NFS.
- vmstat riporta le statistiche sulla memoria virtuale.
- mpstat segnala le statistiche dei processori.
Questo articolo fa parte della nostra serie in corso di monitoraggio delle prestazioni di Linux.
Si noti che iostat e vmstat fanno parte dell'utilità sar. Dovresti installare il pacchetto sysstat come spiegato nel nostro articolo sar (sysstat) per far funzionare iostat e vmstat.
ESEMPI DI IOSTAT
1. iostat – Esempio di base
Iostat senza alcun argomento visualizza informazioni sull'utilizzo della CPU e statistiche di I/O su tutte le partizioni del sistema come mostrato di seguito.
$ iostat
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 194.72 1096.66 1598.70 2719068704 3963827344
sda1 178.20 773.45 1329.09 1917686794 3295354888
sda2 16.51 323.19 269.61 801326686 668472456
sdb 371.31 945.97 1073.33 2345452365 2661206408
sdb1 371.31 945.95 1073.33 2345396901 2661206408
sdc 408.03 207.05 972.42 513364213 2411023092
sdc1 408.03 207.03 972.42 513308749 2411023092 2. iostat:mostra solo le statistiche della CPU
iostat opzione -c, visualizza solo le statistiche sull'utilizzo della CPU come mostrato di seguito.
$ iostat -c
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76 3. iostat – Visualizza solo le statistiche di I/O del disco
iostat opzione -d, visualizza solo le statistiche di I/O del disco come mostrato di seguito.
$ iostat -d Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.71 1096.61 1598.63 2719068720 3963827704 sda1 178.20 773.41 1329.03 1917686810 3295355248 sda2 16.51 323.18 269.60 801326686 668472456 sdb 371.29 945.93 1073.28 2345452365 2661209192 sdb1 371.29 945.91 1073.28 2345396901 2661209192 sdc 408.01 207.04 972.38 513364213 2411024484 sdc1 408.01 207.02 972.38 513308749 2411024484
4. iostat:mostra solo le statistiche di rete
iostat opzione -n, visualizza solo il dispositivo e le statistiche NFS come mostrato di seguito.
$ iostat -n
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %sys %iowait %idle
4.33 0.01 1.16 0.31 94.19
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 2.83 0.35 5.39 29817402 457360056
sda1 3.32 50.18 4.57 4259963994 387641400
sda2 0.20 0.76 0.82 64685128 69718576
sdb 6.59 15.53 42.98 1318931178 3649084113
sdb1 11.80 15.53 42.98 1318713382 3649012985
Device: rBlk_nor/s wBlk_nor/s rBlk_dir/s wBlk_dir/s rBlk_svr/s wBlk_svr/s
192.168.1.4:/home/data 90.67 0.00 0.00 0.00 5.33 0.00
192.168.1.4:/backup 8.74 0.00 0.00 0.00 8.74 0.00
192.168.1.8:/media 0.02 0.00 0.00 0.00 0.01 0.00 5. iostat – Visualizza i dati di I/O in MB/secondo
Per impostazione predefinita iostat, visualizza le statistiche I/O del dispositivo in Blocchi. Per cambiarlo in MB, usa -m come mostrato di seguito.
$ iostat -m
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 194.70 0.54 0.78 1327670 1935463
sda1 178.19 0.38 0.65 936370 1609060
sda2 16.51 0.16 0.13 391272 326402
sdb 371.27 0.46 0.52 1145240 1299425
sdb1 371.27 0.46 0.52 1145213 1299425
sdc 407.99 0.10 0.47 250666 1177259
sdc1 407.99 0.10 0.47 250639 1177259 6. iostat – Visualizza le statistiche di I/O solo per un dispositivo
Per impostazione predefinita, iostat visualizza i dati di I/O per tutti i dischi disponibili nel sistema. Per visualizzare le statistiche per un dispositivo specifico (ad esempio, /dev/sda), usa l'opzione -p come mostrato di seguito.
$ iostat -p sda
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 194.69 1096.51 1598.48 2719069928 3963829584
sda2 336.38 27.17 54.00 67365064 133905080
sda1 821.89 0.69 243.53 1720833 603892838 7. iostat:visualizza le informazioni sul timestamp
Per impostazione predefinita, iostat visualizza solo la data corrente. Per visualizzare l'ora corrente, utilizzare l'opzione -t come mostrato di seguito.
$ iostat -t
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
Time: 08:57:52 AM
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 194.69 1096.49 1598.45 2719070384 3963829704
sda1 178.18 773.32 1328.88 1917688474 3295357248
sda2 16.51 323.14 269.57 801326686 668472456
sdb 371.25 945.82 1073.16 2345452741 2661228872
sdb1 371.25 945.80 1073.16 2345397277 2661228872
sdc 407.97 207.02 972.27 513364233 2411030200
sdc1 407.97 207.00 972.27 513308769 2411030200 8. iostat – Visualizza lo stato esteso
Utilizzare l'opzione -x, che visualizzerà informazioni statistiche I/O su disco estese come mostrato di seguito.
$ iostat -x
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 27.86 63.53 61.77 132.91 1096.46 1598.40 13.84 0.21 1.06 2.28 44.45
sda1 0.69 33.22 48.54 129.63 773.30 1328.84 11.80 1.39 7.82 2.28 40.57
sda2 27.16 30.32 13.23 3.28 323.13 269.56 35.90 0.55 32.96 3.44 5.68
sdb 39.15 215.16 202.20 169.04 945.80 1073.13 5.44 1.05 2.78 1.64 60.91
sdb1 39.15 215.16 202.20 169.04 945.77 1073.13 5.44 1.05 2.78 1.64 60.91
sdc 8.90 3.63 356.56 51.40 207.01 972.24 2.89 1.04 2.56 1.55 63.30
sdc1 8.90 3.63 356.55 51.40 206.99 972.24 2.89 1.04 2.56 1.55 63.30 Per visualizzare informazioni estese per una partizione specifica (ad esempio, /dev/sda1), procedi come segue.
$ iostat -x sda1
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda1 0.69 33.21 48.54 129.62 773.23 1328.76 11.80 1.39 7.82 2.28 40.56 9. iostat – Esegui ogni x secondi (per y numero di volte)
Per eseguire iostat ogni 2 secondi (fino a quando non premi Ctl-C), procedi come segue.
$ iostat 2
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011
avg-cpu: %user %nice %system %iowait %steal %idle
5.68 0.00 0.52 2.03 0.00 91.76
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 194.67 1096.39 1598.33 2719070584 3963891256
sda1 178.16 773.26 1328.79 1917688482 3295418672
sda2 16.51 323.11 269.54 801326878 668472584
sdb 371.22 945.74 1073.08 2345454041 2661251200
sdb1 371.22 945.72 1073.08 2345398577 2661251200
sdc 407.93 207.00 972.19 513366813 2411036564
sdc1 407.93 206.98 972.19 513311349 2411036564
.. Per eseguire ogni 2 secondi per un totale di 3 volte, procedi come segue.
$ iostat 2 3
10. iostat – Visualizza la statistica LVM (e la versione)
Per visualizzare le statistiche LVM utilizzare l'opzione -N come mostrato di seguito.
$ iostat -N
Per visualizzare la versione di iostat, utilizzare -V. Questo mostrerà davvero le informazioni sulla versione di sysstat, poiché iostat fa parte del pacchetto sysstat.
$ iostat -V sysstat version 7.0.2 (C) Sebastien Godard
ESEMPI VMSTAT
11. vmstat – Esempio di base
vmstat per impostazione predefinita visualizzerà l'utilizzo della memoria (incluso lo scambio) come mostrato di seguito.
$ vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 305416 260688 29160 2356920 2 2 4 1 0 0 6 1 92 2 0
L'output di vmstat contiene i seguenti campi:
- Procs – r:numero totale di processi in attesa di essere eseguiti
- Processi – b:numero totale di processi occupati
- Memoria – swpd:memoria virtuale utilizzata
- Memoria – gratuita:memoria virtuale gratuita
- Memoria – buff:memoria utilizzata come buffer
- Memoria – cache:memoria utilizzata come cache.
- Scambia – si:memoria scambiata dal disco (per ogni secondo)
- Scambia, quindi:memoria scambiata su disco (per ogni secondo)
- IO – bi:Blocks in. cioè blocchi ricevuti dal dispositivo (per ogni secondo)
- IO – bo:Blocca. ovvero blocchi inviati al dispositivo (per ogni secondo)
- Sistema – in: interruzioni al secondo
- Sistema – cs:opzioni di contesto
- CPU – us, sy, id, wa, st:tempo utente CPU, tempo di sistema, tempo di inattività, tempo di attesa
12. vmstat – Visualizza la memoria attiva e inattiva
Per impostazione predefinita, vmstat non visualizza queste informazioni. Utilizzare l'opzione -a, per visualizzare le informazioni sulla memoria attiva e inattiva come mostrato di seguito.
$ vmstat -a procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 305416 253820 1052680 2688928 2 2 4 1 0 0 6 1 92 2 0
13. vmstat – Visualizza il numero di fork dall'ultimo avvio
Visualizza tutte le chiamate di sistema fork effettuate dal sistema dall'ultimo avvio. Questo mostra tutti i conteggi delle chiamate di sistema fork, vfork e clone.
$ vmstat -f
81651975 forks 14. vmstat – Esegui ogni x secondi (per y numero di volte)
Per eseguire ogni 2 secondi, procedere come segue. Devi premere Ctrl-C per fermarlo.
$ vmstat 2 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0 ..
Per eseguire ogni 2 secondi per 10 volte, procedere come segue. Non è necessario premere Ctrl-C in questo caso. Dopo l'esecuzione 10 volte, si fermerà automaticamente.
$ vmstat 2 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0 ..
15. vmstat – Visualizza timestamp
Quando usi vmstat per monitorare ripetutamente l'utilizzo della memoria, sarebbe bello vedere il timestap insieme a ogni elemento pubblicitario. Utilizzare l'opzione -t per visualizzare il timestamp come mostrato di seguito.
$ vmstat -t 1 100 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp--- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3608728 148368 3898200 0 0 0 0 1 1 0 0 100 0 0 2011-07-09 21:16:28 PDT 0 0 0 3608728 148368 3898200 0 0 0 0 60 15 0 0 100 0 0 2011-07-09 21:16:29 PDT 0 0 0 3608712 148368 3898200 0 0 0 0 32 28 0 0 100 0 0 2011-07-09 21:16:30 PDT
Per me, l'opzione timestamp ha funzionato nella versione seguente.
$ vmstat -V procps version 3.2.8
Nota: Se utilizzi una versione precedente di vmstat, l'opzione -t potrebbe non essere disponibile. In tal caso, utilizza il metodo suggerito in precedenza per visualizzare il timestamp nell'output di vmstat.
16. vmstat – Visualizza le informazioni sulla lastra
Utilizzare l'opzione -m, per visualizzare le informazioni sulla lastra come mostrato di seguito.
$ vmstat -m Cache Num Total Size Pages fib6_nodes 5 113 32 113 ip6_dst_cache 4 15 256 15 ndisc_cache 1 15 256 15 RAWv6 7 10 768 5 UDPv6 0 0 640 6 tw_sock_TCPv6 0 0 128 30 ...
17. vmstat – Visualizza le statistiche in formato tabella
Invece di visualizzare i valori nel formato record, puoi visualizzare l'output di vmstat in formato tabella usando l'opzione -s come mostrato di seguito.
$ vmstat -s
4149928 total memory
3864824 used memory
2606664 active memory
1098180 inactive memory
285104 free memory
19264 buffer memory
2326692 swap cache
4192956 total swap
274872 used swap
3918084 free swap
1032454000 non-nice user cpu ticks
14568 nice user cpu ticks
89482270 system cpu ticks
16674327143 idle cpu ticks
368965706 IO-wait cpu ticks
1180468 IRQ cpu ticks
.. 18. vmstat – Visualizza le statistiche del disco
Utilizzare l'opzione -d per visualizzare le statistiche del disco come mostrato di seguito. Visualizza le statistiche di lettura, scrittura e I/O del disco.
$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 153189971 69093708 2719150864 737822879 329617713 157559204 3965687592 4068577985 0 1102243
sdb 501426305 97099356 2345472425 731613156 419220973 533565961 2661869460 1825174087 0 1510434
sdc 884213459 22078974 513390701 452540172 127474901 8993357 2411187300 2133226954 0 1569758 19. vmstat – Aumenta la larghezza del display
L'output predefinito senza aumentare la larghezza è mostrato di seguito.
$ vmstat 1 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3608688 148368 3898204 0 0 0 0 1 1 0 0 100 0 0 0 0 0 3608804 148368 3898204 0 0 0 0 72 30 0 0 100 0 0 0 0 0 3608804 148368 3898204 0 0 0 0 60 27 0 0 100 0 0
Utilizzare l'opzione -w per aumentare la larghezza delle colonne di output come mostrato di seguito. Questo dà una migliore leggibilità.
$ vmstat -w 1 3 procs -------------------memory------------------ ---swap-- -----io---- --system-- -----cpu------- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3608712 148368 3898204 0 0 0 0 1 1 0 0 100 0 0 0 0 0 3608712 148368 3898204 0 0 0 0 93 23 0 0 100 0 0 0 0 0 3608696 148368 3898204 0 0 0 0 35 34 0 0 100 0 0
20. vmstat – Visualizza le statistiche per una partizione
Per visualizzare le statistiche di I/O del disco di una specifica partizione del disco, utilizzare l'opzione -p come mostrato di seguito.
$ vmstat -p sdb1
sdb1 reads read sectors writes requested writes
501423248 2345417917 419221612 2661885948 21. vmstat – Visualizza in MB
Per impostazione predefinita, vmstat visualizza le informazioni sulla memoria in kb. Per visualizzare in MB, utilizzare l'opzione "-S m" come mostrato di seguito.
$ vmstat -S m procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 281 288 19 2386 0 0 4 1 0 0 6 1 92 2 0
ESEMPI MPSTAT
22. mpstat – Visualizza le informazioni di base
Per impostazione predefinita, mpstat mostra le statistiche della CPU come mostrato di seguito.
$ mpstat Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 10:25:32 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:25:32 PM all 5.68 0.00 0.49 2.03 0.01 0.02 0.00 91.77 146.55
23. mpstat – Visualizza tutte le informazioni
L'opzione -A, visualizza tutte le informazioni che possono essere visualizzate dal comando mpstat come mostrato di seguito. Questo è davvero equivalente al comando "mpstat -I ALL -u -P ALL".
$ mpstat -A Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:26:34 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:26:34 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:26:34 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM CPU intr/s 10:26:34 PM all 36.51 10:26:34 PM 0 0.00 10:26:34 PM 1 0.00 10:26:34 PM 2 0.04 10:26:34 PM 3 0.00 10:26:34 PM CPU 0/s 1/s 8/s 9/s 12/s 14/s 15/s 16/s 19/s 20/s 21/s 33/s NMI/s LOC/s SPU/s PMI/s PND/s RES/s CAL/s TLB/s TRM/s THR/s MCE/s MCP/s ERR/s MIS/s 10:26:34 PM 0 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 7.47 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 1 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 4.90 0.00 0.00 0.00 0.00 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.04 0.00 0.00 0.00 0.00 0.00 3.32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 3 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 4.17 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00
24. mpstat – Visualizza le statistiche della CPU della singola CPU (o) Core
L'opzione -P ALL, mostra tutte le singole CPU (o Core) insieme alle sue statistiche come mostrato di seguito.
$ mpstat -P ALL Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:28:04 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:04 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:28:04 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:28:04 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Per visualizzare le informazioni statistiche di una particolare CPU (o core), usa l'opzione -P come mostrato di seguito.
$ mpstat -P 0 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (8 CPU) 10:28:53 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:53 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 $ mpstat -P 1 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (8 CPU) 10:28:55 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:55 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98
Infine, come accennato in precedenza, mpstat fa parte del pacchetto sysstat. Quando esegui mpstat -V, visualizzerà effettivamente il numero di versione del pacchetto systat come mostrato di seguito.
$ mpstat -V sysstat version 9.0.4 (C) Sebastien Godard (sysstat orange.fr)
Articoli precedenti nella serie sul monitoraggio e l'ottimizzazione delle prestazioni di Linux:
- Introduzione al monitoraggio delle prestazioni e all'ottimizzazione di Linux
- 15 Esempi pratici di comandi principali di Linux
- 7 Esempi pratici di comandi PS per il monitoraggio dei processi
- 10 utili esempi Sar (Sysstat) per il monitoraggio delle prestazioni UNIX/Linux
- 10 esempi di iozone per la misurazione delle prestazioni di I/O del disco su Linux