GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di vmstat per risolvere i problemi di prestazioni in Linux

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)


Linux
  1. 10 esempi di pidstat per eseguire il debug dei problemi di prestazioni del processo Linux

  2. Come calcolare l'utilizzo della memoria in Linux usando sar, ps e free

  3. Comandi di base per risolvere i problemi di prestazioni in Linux

  4. limitare l'utilizzo della memoria in R sotto Linux

  5. dd prestazioni su Mac OS X rispetto a Linux

Identifica i colli di bottiglia delle prestazioni di Linux utilizzando strumenti open source

Usando il comando gratuito di Linux

Come controllare la memoria condivisa di Linux usando il comando ipcs

Comando Linux vmstat - Strumento per segnalare le statistiche sulla memoria virtuale

Risolvi i problemi e monitora le prestazioni del sistema Linux con nmon

Una guida al comando vmstat in Linux