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