|
Il comando vmstat è lo strumento di monitoraggio Linux/Unix più comune che mostra i valori di stato di un server in un determinato intervallo di tempo, inclusi quelli del serverUtilizzo della CPU, uso della memoria, scambio virtuale di memoria, lettura e scrittura di E/S. Questo comando è il mio preferito per controllare Linux/Unix, uno è che Linux/Unix è supportato, e l'altro è che rispetto al top posso vedere l'uso di CPU, memoria e IO dell'intera macchina, invece di vedere solo l'uso della CPU e della memoria di ogni processo (scenari d'uso diversi). Generalmente, l'uso dello strumento vmstat avviene tramite due parametri numerici: il primo parametro è il numero di intervalli di tempo campionati, l'unità è il numero di secondi, e il secondo parametro è il numero di campioni, come ad esempio:
root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd buff cache gratis si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 significa che lo stato del server viene raccolto una volta ogni due secondi, e 1 significa che lo stato del server viene raccolto solo una volta. Infatti, durante il processo di candidatura, monitoreremo per un certo periodo di tempo e, se non vogliamo monitorarlo, possiamo semplicemente terminare direttamente il vmstat, ad esempio:
root@ubuntu:~# vmstat 2 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd buff cache gratis si so bi bo in cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Questo significa che vmstat raccoglie dati ogni 2 secondi e continua finché non chiudo il programma, e qui lo chiudo dopo aver raccolto i dati 5 volte. Ok, il comando è stato introdotto, ora iniziamo a spiegare il significato di ogni parametro. rSignifica eseguire la coda (cioè quanti processi sono effettivamente allocati alla CPU), il server che ho testato è attualmente relativamente inattivo, non ci sono programmi in esecuzione, quando questo valore supera il numero di CPU, si crea un collo di bottiglia della CPU. Questo è anche collegato al carico del top: generalmente il carico è maggiore se supera 3, è più alto se supera 5, e se supera 10, non è normale e lo stato del server è molto pericoloso. Il carico della parte superiore è simile a quello di una coda in corso al secondo. Se la coda in esecuzione è troppo grande, significa che la CPU è occupata, il che di solito causa un alto utilizzo della CPU. bSignifica il processo bloccato, non è molto da dire, il processo è bloccato, tutti capiscono. SWWPDSe la dimensione della memoria virtuale utilizzata è superiore a 0, significa che la tua macchina ha memoria fisica insufficiente e, se non è la causa della perdita di memoria del programma, allora è il momento di aggiornare la memoria o migrare i compiti che richiedono memoria su un'altra macchina. Gratis La dimensione della memoria fisica libera, la memoria della mia macchina è di 8G in totale, e il resto 3415M. buff Linux/Unix si usa per memorizzare la cache di contenuti nella directory, permessi, ecc., probabilmente occupo più di 300M su questa macchina CacheLa cache viene usata direttamente per ricordare i file che apriamo, buffer, io occupo più di 300M sulla mia macchina (ecco la cosa intelligente di Linux/Unix: prendere parte della memoria fisica libera per memorizzare file e directory, per migliorare le prestazioni dell'esecuzione del programma; quando il programma usa memoria, il buffer/cache viene usato rapidamente). ) Sì Se questo valore è superiore a 0, significa che la memoria fisica non è sufficiente o che la memoria è stata persa. La mia macchina ha molta memoria e tutto va bene. Così La dimensione del disco scritto nella memoria virtuale al secondo, se questo valore è superiore a 0, è la stessa di quanto sopra. bi Equipaggiamento a blocchiIl numero di blocchi ricevuti al secondo, qui il dispositivo a blocchi si riferisce a tutti i dischi e agli altri dispositivi a blocchi nel sistema, la dimensione predefinita del blocco è 1024 byte, non ho alcuna operazione di E/S sulla macchina, quindi è sempre stato 0, ma l'ho visto su macchine che gestiscono grandi quantità di dati (2-3T) che possono raggiungere i 140000/s, e la velocità di scrittura del disco è quasi 140M al secondo BoIl numero di blocchi inviati al secondo da un dispositivo a blocchi, ad esempio, quando leggiamo un file, bo è maggiore di 0. Bi e bo sono generalmente vicini a zero, altrimenti l'IO è troppo frequente e va regolato. inIl numero di interruzioni al secondo della CPU, inclusi gli interruzioni temporali CSIl numero di scambi di contesto al secondo, ad esempio, quando chiamiamo una funzione di sistema, dobbiamo cambiare contesto e switching threadContesto del processoAd esempio, nei server web come Apache e nginx, generalmente effettuiamo test di prestazioni con migliaia o addirittura decine di migliaia di concorrenze, e il processo di scelta di un server web può essere ridotto al picco del processo o del thread, al test di stress, fino a un valore relativamente piccolo del cs, il numero di processi e thread è un valore più appropriato. Anche le chiamate di sistema sono le stesse: ogni volta che viene chiamata una funzione di sistema, il nostro codice entra nello spazio del kernel, causando il cambio di contesto, che richiede molto risorse, e dovremmo cercare di evitare chiamate frequenti alle funzioni di sistema. Troppi cambi di contesto significano che la maggior parte della CPU viene sprecata nel contesto, con meno tempo per la CPU per fare cose serie e la CPU non viene sfruttata appieno, il che non è consigliabile. noiutenteTempo CPUUna volta ho visto che negli USA si avvicinavano a 100 e la coda di esecuzione di r raggiungeva 80 su un server che faceva crittografia e decrittazione molto frequentemente (la macchina era sottoposta a stress test e le prestazioni non erano buone). sySe il tempo CPU del sistema è troppo alto, significa che le chiamate di sistema sono lunghe, come frequenti operazioni di E/S. Id Tempo di CPU inattivo, generalmente parlando, id + us + sy = 100, generalmente penso che id sia l'uso inattivo della CPU, us l'uso della CPU dell'utente, sy l'uso della CPU di sistema. wtAspetta il tempo della CPU IO.
|