Le vmstat (statistiche della memoria virtuale) Il comando consente di monitorare l'utilizzo della memoria del sistema. Mostra quanta memoria virtuale c'è e quanta è libera e l'attività di paging. Puoi osservare i page-in e i page-out mentre accadono. Ciò è estremamente utile per rilevare la carenza di memoria fisica, che può influire negativamente sulle prestazioni del sistema.
Eseguire vmstat senza argomenti
Prima di iniziare, è importante notare che la prima riga di output da vmstat (e l'unica data se viene eseguita senza argomenti) è un riepilogo dal momento dell'avvio del sistema. Di solito non è molto utile per problemi di prestazioni, specialmente se il sistema è stato acceso per molto tempo. Tuttavia, può ancora contenere informazioni utili su eventi accaduti in passato, ma che non si stanno verificando attualmente.
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 387560 62140 44 348320 1 2 94 20 90 15 1 1 98 0 0
Come leggere l'output di vmstat
L'output di vmstat contiene più di semplici statistiche sulla memoria. Come con iostat e mpstat, vmstat accetta argomenti di intervallo e conteggio. L'esempio seguente esegue 3 report a distanza di 5 secondi:
# vmstat 5 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 384120 68604 8088 327332 1 2 90 20 90 14 1 1 98 0 0 1 0 384120 68604 8088 327364 0 0 0 0 91 179 1 0 99 0 0 0 0 384120 68232 8088 327364 0 0 0 0 107 190 1 1 98 0 0
L'output è suddiviso in sei sezioni:
1. processi
2. memoria
3. scambia
4. io
5. sistema
6. CPU
procedimenti
Le prime due colonne forniscono informazioni sui processi:
r | Numero di processi in stato di attesa. Questi processi non stanno facendo altro che aspettare di essere eseguiti. |
b | Numero di processi che erano in modalità di sospensione e sono stati interrotti dall'ultimo aggiornamento |
memoria
Le quattro colonne successive forniscono informazioni sulla memoria:
swpd | Quantità di memoria virtuale utilizzata |
gratuito | Quantità di memoria inattiva |
buff | Quantità di memoria utilizzata come buffer |
cache | Quantità di memoria utilizzata come cache |
scambia
Le due colonne successive forniscono informazioni sullo scambio:
si | Quantità di memoria scambiata dal disco (al secondo) |
così | Quantità di memoria trasferita su disco (al secondo) |
si diverso da zero e così i numeri indicano che non c'è abbastanza memoria fisica e che il kernel sta scambiando memoria su disco.
io
Le prime due colonne forniscono informazioni sull'I/O (input-output):
bi | Numero di blocchi al secondo ricevuti da un dispositivo a blocchi |
bo | Numero di blocchi al secondo inviati a un dispositivo a blocchi |
sistema
Le due colonne successive forniscono le seguenti informazioni di sistema:
in | Numero di interrupt al secondo, incluso l'orologio |
cs | Numero di cambi di contesto al secondo |
cpu
Le ultime cinque colonne forniscono le percentuali del tempo totale della CPU:
noi | Percentuale di cicli CPU spesi per i processi utente |
sy | Percentuale di cicli CPU spesi per processi di sistema (kernel) |
id | Percentuale di cicli CPU trascorsi inattivi |
wa | Percentuale di cicli CPU spesi in attesa di I/O |
st | Percentuale di cicli CPU rubati da una macchina virtuale |
Opzioni della riga di comando
È possibile includere ulteriori informazioni fornendo diverse opzioni al comando vmstat. Sono elencate alcune delle opzioni della riga di comando:
-a | Visualizza la memoria attiva e inattiva. |
-f | Visualizza il numero di fork dall'avvio. |
-t | Aggiungi un timestamp all'output. |
-d | Segnala le statistiche del disco. |
Colli di bottiglia della CPU
Ci sono due aree importanti dell'output di vmstat che riguardano le prestazioni della CPU. Il primo è la r colonna. È la prima colonna nell'output. Contiene un valore che corrisponde al numero di thread che erano nella coda di esecuzione durante l'intervallo passato in cui è stato eseguito vmstat. Questi thread stavano aspettando che una CPU diventasse disponibile per poter essere eseguiti. Esistono diverse scuole di pensiero sul numero massimo appropriato qui, ma la maggior parte delle persone concorda sul fatto che più di 2-5 volte il numero di CPU sul sistema mostra un collo di bottiglia (questa stima deve essere modificata per le CPU multi-core).
Il secondo posto in cui cercare i dati relativi alla CPU è nelle colonne di destra dell'output. Sono presenti tre colonne:us (utente) time, sy (sistema) e id (inattività). Questi tre suddividono l'uso del tempo della CPU in percentuali. Dovrebbero sommarsi fino al 100%. Idealmente, una CPU trascorrerà la maggior parte del suo tempo nelle categorie us e id. La categoria sy si riferisce al tempo impiegato dalla CPU per eseguire il lavoro a livello di driver/kernel. Questa volta viene sottratto alle applicazioni utente. Se le CPU trascorrono la maggior parte del loro tempo in questa categoria, potrebbe indicare un cambio di contesto eccessivo a causa di colli di bottiglia della CPU o della memoria, problemi con il blocco a livello di kernel o altri problemi. Un sistema occupato mostrerà una percentuale di inattività costante vicina allo zero. Ma un sistema occupato non significa necessariamente che il sistema sia sovraccarico.
Prestazioni disco/IO
L'utilità vmstat non può dirci quali dischi hanno un collo di bottiglia, ma può dirci se c'è un problema di I/O in generale. La colonna importante nell'output è la colonna b (bloccata). Si riferisce al numero di thread bloccati o in attesa del completamento dell'IO nell'intervallo passato. La colonna b dovrebbe essere 0 la maggior parte delle volte. Se in quella colonna è presente costantemente un numero diverso da zero, puoi indagare ulteriormente con iostat.
Colli di bottiglia della memoria
L'analisi dei problemi relativi alla memoria dovrebbe iniziare controllando la quantità di memoria libera nell'output di vmstat, che si trova nella 4a colonna. Se la memoria disponibile è insufficiente, è necessario indagare di più su quale processo sta consumando più memoria.
Conclusione
Il comando vmstat può essere uno strumento utile per il triage dei problemi di prestazioni. Può dirti quali sottosistemi esaminare più da vicino per diagnosticare ulteriormente il problema.
Utilizzo di iostat per monitorare le prestazioni del sistema in Linux (esempi inclusi)