|
Comanda vmstat este cel mai comun instrument de monitorizare Linux/Unix care afișează valorile de stare ale unui server la un interval de timp dat, inclusiv cele ale serveruluiUtilizarea procesorului, utilizarea memoriei, schimbul virtual de memorie, citirea și scrierea IO. Această comandă este preferata mea pentru a verifica Linux/Unix, una este că Linux/Unix este suportat, iar cealaltă este că, comparativ cu cea de sus, pot vedea utilizarea CPU-ului, memoriei și IO-ului întregii mașini, în loc să văd doar consumul CPU-ului și al memoriei fiecărui proces (scenarii de utilizare diferite). În general, utilizarea instrumentului vmstat se face prin doi parametri numerici: primul parametru este numărul de intervale de timp eșantionate, unitatea este secundele, iar al doilea parametru este numărul de eșantioane, cum ar fi:
root@ubuntu:~# vmstat 2 1 procs -----------memorie---------- ---swap-- -----io---- -sistem-- ----CPU---- r b swpd buff gratuit cache si so bi bo în cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 înseamnă că starea serverului este colectată o dată la două secunde, iar 1 înseamnă că starea serverului este colectată o singură dată. De fapt, pe parcursul procesului de aplicare, vom monitoriza o perioadă de timp, iar dacă nu vrem să monitorizăm, putem închide direct VMSTAT-ul, de exemplu:
root@ubuntu:~# vmstat 2 procs -----------memorie---------- ---swap-- -----io---- -sistem-- ----CPU---- r b swpd buff gratuit cache si so bi bo în 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
Asta înseamnă că vmstat colectează date la fiecare 2 secunde și continuă până când închei programul, iar eu îl închid după ce colectez date de 5 ori aici. Bine, comanda este introdusă, acum să începem să explicăm semnificația fiecărui parametru. rAsta înseamnă să rulezi coada (adică câte procese sunt efectiv alocate CPU-ului), serverul pe care l-am testat este în prezent relativ inactiv, nu rulează programe, iar când această valoare depășește numărul de procesoare, va apărea un blocaj pentru CPU. Acest lucru este legat și de sarcina superioară: în general, sarcina este mai mare dacă depășește 3, este mai mare dacă depășește 5, iar dacă depășește 10, nu este normal, iar starea serverului este foarte periculoasă. Sarcina de sus este similară cu cea a unei cozi în mișcare pe secundă. Dacă coada de rulare este prea mare, înseamnă că CPU-ul tău este ocupat, ceea ce de obicei duce la o utilizare mare a procesorului. bÎnseamnă procesul blocat, nu e mare lucru de spus, procesul este blocat, toată lumea înțelege. SWWPDDacă dimensiunea memoriei virtuale folosite este mai mare decât 0, înseamnă că mașina ta are memorie fizică insuficientă, iar dacă aceasta nu este cauza scurgerii de memorie a programului, atunci este momentul să upgradezi memoria sau să migrezi sarcinile care consumă memoria pe o altă mașină. Gratuit Dimensiunea memoriei fizice gratuite, memoria mea de pe calculator este de 8G în total, iar restul 3415M. Buff Sistemul Linux/Unix este folosit pentru stocarea conținutului din director, permisiunile etc., probabil ocup peste 300M pe această mașină Cachecache-ul este folosit direct pentru a reține fișierele pe care le deschidem, pentru a le depozita, eu ocup mai mult de 300M pe propria mea mașină (iată partea ingenioasă a Linux/Unix: să iei o parte din memoria fizică liberă pentru a stoca fișiere și directoare, pentru a îmbunătăți performanța execuției programului, când programul folosește memorie, bufferul/cache-ul va fi folosit rapid). ) Da Dacă această valoare este mai mare decât 0, înseamnă că memoria fizică nu este suficientă sau memoria este scursă. Calculatorul meu are multă memorie și totul este în regulă. deci Dimensiunea discului scris în memoria virtuală pe secundă, dacă această valoare este mai mare de 0, este aceeași ca mai sus. Bi Echipamente de blocNumărul de blocuri primite pe secundă, aici dispozitivul block se referă la toate discurile și celelalte dispozitive block din sistem, dimensiunea implicită a blocului este 1024 byte, nu am nicio operațiune IO pe mașină, deci a fost mereu 0, dar am văzut asta pe mașini care gestionează cantități mari de date (2-3T) care pot ajunge la 140000/s, iar viteza de scriere a discului este aproape 140M pe secundă BoNumărul de blocuri trimise pe secundă de un dispozitiv cu blocuri, de exemplu, când citim un fișier, bo este mai mare decât 0. Bi și bo sunt în general aproape de 0, altfel IO este prea frecvent și trebuie ajustat. înNumărul de întreruperi pe secundă de CPU, inclusiv întreruperile de timp CSNumărul de comutaturi de context pe secundă, de exemplu, când apelăm o funcție de sistem, trebuie să schimbăm contextul și schimbarea firelorContextul procesuluiDe exemplu, în servere web precum Apache și nginx, în general facem teste de performanță cu mii sau chiar zeci de mii de concurență, iar procesul de alegere a unui server web poate fi redus la vârful procesului sau al firului de stres, testul de stres, până când cs ajunge la o valoare relativ mică, numărul de procese și fire este o valoare mai potrivită. Apelurile sistemului sunt aceleași, de fiecare dată când o funcție de sistem este apelată, codul nostru intră în spațiul nucleului, rezultând comutarea contextului, ceea ce consumă foarte multe resurse, și ar trebui să încercăm să evităm apelurile frecvente către funcțiile sistemului. Prea multe schimbări de context înseamnă că majoritatea CPU-ului tău este irosit la comutarea contextului, ceea ce duce la mai puțin timp pentru CPU să facă lucruri serioase, iar CPU-ul nu este folosit pe deplin, ceea ce nu este recomandat. NOIutilizatorTimpul CPUAm văzut odată că SUA era aproape de 100 și coada de rulare r ajungea la 80 pe un server care făcea criptare și decriptare foarte frecvent (mașina era testată la stres, iar performanța nu era bună). syDacă timpul CPU al sistemului este prea mare, înseamnă că apelurile sistemului sunt lungi, cum ar fi operațiunile frecvente de E/S. Id Timp de inactivitate a procesorului, în general, id + us + sy = 100, în general cred că id este utilizarea procesorului inactivă, us este utilizarea CPU-ului utilizatorului, sy este utilizarea CPU-ului sistemului. wtAșteaptă timpul procesorului IO.
|