Computerul dvs. Linux sau macOS utilizează memoria virtuală. Descoperiți cum afectează utilizarea de către sistemul dumneavoastră a memoriei fizice, procesorului și resurselor de hard disk.
Cuprins
Ce este memoria virtuală?
Computerul dvs. este echipat cu o cantitate finită de memorie fizică numită memorie cu acces aleator (BERBEC). Această memorie RAM trebuie să fie gestionată de nucleu și partajată între sistemul de operare și orice aplicație care se întâmplă să ruleze. Dacă aceste solicitări combinate cer mai multă memorie decât este instalată fizic în computerul dvs., ce poate face nucleul?
Sistemele de operare Linux și Unix, cum ar fi macOS, pot folosi spațiul de pe hard disk pentru a le ajuta să gestioneze nevoile de memorie. O zonă rezervată de spațiu pe hard disk numită „spațiu de schimb” poate fi utilizată ca și cum ar fi o extensie a memoriei RAM. Aceasta este memoria virtuală.
Nucleul Linux poate scrie conținutul unui bloc de memorie în spațiu de swap și poate elibera acea regiune de RAM pentru a fi utilizată de un alt proces. Memoria schimbată – numită și „paginată” – poate fi preluată din spațiul de schimb și restaurată în RAM atunci când este necesar.
Desigur, viteza de acces pentru memoria paginată este mai mică decât cea a memoriei păstrate în RAM. Și acesta nu este singurul compromis. În timp ce memoria virtuală oferă o modalitate pentru Linux de a-și gestiona cererile de memorie, utilizarea memoriei virtuale generează sarcini sporite în altă parte a computerului.
Unitatea de disc trebuie să efectueze mai multe citiri și scrieri. Nucleul – și, prin urmare, procesorul – trebuie să lucreze mai mult, deoarece schimbă memoria, schimbă memoria și menține toate plăcile în rotație pentru a satisface nevoile de memorie ale diferitelor procese.
Linux vă oferă o modalitate de a monitoriza toată această activitate sub forma comenzii vmstat, care raportează statisticile memoriei virtuale.
Comanda vmstat
Dacă tastați vmstat ca o comandă fără parametri, acesta vă va afișa un set de valori. Aceste valori sunt mediile pentru fiecare dintre statistici de la ultima repornire a computerului. Aceste cifre nu sunt un instantaneu al valorilor „în acest moment”.
vmstat
Este afișat un scurt tabel de valori.
Există coloane intitulate Procs, Memory, Swap, IO, System și CPU. Coloana finală (coloana cea mai din dreapta) conține datele referitoare la CPU.
Iată o listă a elementelor de date din fiecare coloană.
Proc
r: numărul de procese care pot fi executate. Acestea sunt procese care au fost lansate și fie rulează, fie așteaptă următoarea explozie de cicluri ale procesorului.
b: Numărul de procese în somn neîntrerupt. Procesul nu este în stare de repaus, efectuează un apel de sistem de blocare și nu poate fi întrerupt până când nu și-a încheiat acțiunea curentă. De obicei, procesul este un driver de dispozitiv care așteaptă ca o resursă să vină gratuită. Orice întreruperi aflate în coadă pentru acel proces sunt gestionate atunci când procesul își reia activitatea obișnuită.
Memorie
swpd: cantitatea de memorie virtuală utilizată. Cu alte cuvinte, câtă memorie a fost schimbată.,
liber: cantitatea de memorie inactivă (nefolosită în prezent).
buff: cantitatea de memorie folosită ca tampon.
cache: cantitatea de memorie folosită ca cache.
Schimbați
si: Cantitatea de memorie virtuală schimbată din spațiul de schimb.
deci: cantitatea de memorie virtuală schimbată pentru a schimba spațiu.
IO
bi: Blocuri primite de la un dispozitiv de blocare. Numărul de blocuri de date utilizate pentru a schimba memoria virtuală înapoi în RAM.
bo: Blocuri trimise către un dispozitiv de blocare. Numărul de blocuri de date utilizate pentru a schimba memoria virtuală din RAM și în spațiul de schimb.
Sistem
în: numărul de întreruperi pe secundă, inclusiv ceasul.
cs: numărul de schimbări de context pe secundă. O schimbare de context este atunci când nucleul trece de la procesarea în modul sistem la procesarea în modul utilizator.
CPU
Aceste valori sunt toate procente din timpul total al procesorului.
noi: Timpul petrecut rulând cod non-kernel. Adică, cât timp este petrecut în procesarea timpului utilizatorului și în procesarea timpului frumos.
sy: Timpul petrecut rulând codul kernelului.
id: Timpul petrecut inactiv.
wa: Timpul petrecut în așteptarea intrării sau a ieșirii.
st: Timpul furat de la o mașină virtuală. Acesta este timpul pe care o mașină virtuală trebuie să aștepte ca hypervisorul să termine service-ul altor mașini virtuale înainte de a putea reveni și se ocupa de această mașină virtuală.
Utilizarea unui interval de timp
Putem solicita vmstat să furnizeze actualizări regulate ale acestor cifre utilizând o valoare de întârziere. Valoarea întârzierii este furnizată în secunde. Pentru a actualiza statisticile la fiecare cinci secunde, vom folosi următoarea comandă:
vmstat 5
La fiecare cinci secunde, vmstat va adăuga o altă linie de date la tabel. Va trebui să apăsați Ctrl+C pentru a opri acest lucru.
Utilizarea unei valori de numărare
Utilizarea unei valori prea mici de întârziere va pune o presiune suplimentară asupra sistemului dumneavoastră. Dacă aveți nevoie de actualizări rapide pentru a încerca să diagnosticați o problemă, se recomandă să utilizați o valoare de numărare, precum și o valoare de întârziere.
Valoarea numărului îi spune vmstat câte actualizări trebuie efectuate înainte de a ieși și vă întoarce la promptul de comandă. Dacă nu furnizați o valoare de numărare, vmstat va rula până când este oprit de Ctrl+C.
Pentru ca vmstat să furnizeze o actualizare la fiecare cinci secunde, dar numai pentru patru actualizări, utilizați următoarea comandă:
vmstat 5 4
După patru actualizări, vmstat se oprește de la sine.
Schimbarea unităților
Puteți alege ca memoria și statisticile de schimb să fie afișate în kiloocteți sau megaocteți folosind opțiunea -S (unitate-caracter). Acesta trebuie să fie urmat de unul dintre k , K , m sau M. Acestea reprezintă:
k:1000 de octeți
K: 1024 de octeți
m: 1000000 de octeți
M: 1048576 octeți
Pentru a actualiza statisticile la fiecare 10 secunde cu statisticile de memorie și de schimb afișate în megaocteți, utilizați următoarea comandă:
vmstat 10 -S M
Statisticile de memorie și de schimb sunt afișate acum în megaocteți. Rețineți că opțiunea -S nu afectează statisticile blocului IO. Acestea sunt întotdeauna afișate în blocuri.
Memorie activă și inactivă
Dacă utilizați opțiunea -a (activ), coloanele de memorie cache și buff sunt înlocuite cu coloanele „inactiv” și „activ”. După cum ar sugera, acestea arată cantitatea de memorie inactivă și activă.
Pentru a vedea aceste două coloane în loc de coloanele buff și cache, includeți opțiunea -a, după cum se arată:
vmstat 5 -a -S M
Coloanele inactive și active sunt afectate de opțiunea -S (unitate-caracter).
Furci
Comutatorul -f afișează numărul de furcături care au avut loc de când computerul a fost pornit.
Cu alte cuvinte, acesta arată numărul de sarcini care au fost lansate (și, pentru cea mai mare parte dintre ele, închise din nou) de când sistemul a fost pornit. Fiecare proces lansat din linia de comandă ar crește această cifră. De fiecare dată când o sarcină sau un proces generează sau clonează o sarcină nouă, această cifră va crește.
vmstat -f
Afișajul furcilor nu se actualizează.
Se afișează Slabinfo
Nucleul are propriul management al memoriei de care să vă faceți griji, precum și managementul memoriei pentru sistemul de operare și toate aplicațiile.
După cum vă puteți imagina, nucleul alocă și dealoca memorie din nou și din nou pentru multe tipuri diferite de obiecte de date pe care trebuie să le gestioneze. Pentru a face acest lucru cât mai eficient posibil, folosește un sistem numit plăci. Aceasta este o formă de stocare în cache.
Memoria alocată, utilizată și nu mai este necesară pentru un anumit tip de obiect de date kernel poate fi reutilizată pentru un alt obiect de date de același tip fără ca memoria să fie dealocată și realocata. Gândiți-vă la plăci ca segmente prealocate, făcute pe măsură, de RAM pentru nevoile proprii ale nucleului.
Pentru a vedea statisticile pentru plăci, utilizați opțiunea -m (plăci). Va trebui să utilizați sudo și vi se va solicita parola. Deoarece ieșirea poate fi destul de lungă, o trecem mai puțin.
sudo vmstat -m | less
Ieșirea are cinci coloane. Acestea sunt:
Cache: numele cache-ului.
num: numărul de obiecte active în acest moment în acest cache.
total: numărul total de obiecte disponibile în acest cache.
dimensiune: dimensiunea fiecărui obiect din cache.
pagini: numărul total de pagini de memorie care au (cel puțin) un obiect asociat în prezent cu acest cache.
Apăsați q pentru a lăsa mai puțin.
Afișarea contoarelor de evenimente și a statisticilor de memorie
Pentru a afișa o pagină de contoare de evenimente și statistici de memorie, utilizați opțiunea -s (statistici). Rețineți că este un „s” minuscul.
vmstat -s
Deși statisticile care sunt raportate sunt în mare parte aceleași cu informațiile care formează ieșirea implicită vmstat, unele dintre ele sunt împărțite mai detaliat.
De exemplu, ieșirea implicită combină atât timpul de CPU plăcut, cât și cel nebun al utilizatorului în coloana „noi”. Afișajul -s (statistici) listează aceste statistici separat.
Afișarea statisticilor discului
Puteți obține o listă similară de statistici de disc folosind opțiunea -d (disc).
vmstat -d | less
Pentru fiecare disc, sunt afișate trei coloane, acestea sunt Reads, Writes și IO.
IO este coloana din dreapta. Rețineți că coloana sec din IO este măsurată în secunde, dar statisticile bazate pe timp din coloanele de citire și scriere sunt măsurate în milisecunde.
Iată ce înseamnă coloanele:
Citeste
total: numărul total de citiri pe disc.
îmbinat: numărul total de citiri grupate.
sectoare: numărul total de sectoare care au fost citite.
ms: Numărul total de timp în milisecunde care a fost folosit pentru citirea datelor de pe disc.
scrie
total: numărul total de scrieri pe disc.
îmbinat: numărul total de scrieri grupate.
sectoare: numărul total de sectoare în care sunt scrise.
ms = Numărul total de timp în milisecunde care a fost folosit pentru scrierea datelor pe disc.
IO
cur: Numărul de citiri sau scrieri curente pe disc.
sec: timpul petrecut în secunde pentru orice citire sau scriere în curs.
Afișarea rezumatului statisticilor discului
Pentru a vedea o afișare rapidă a statisticilor rezumate pentru activitatea de disc, utilizați opțiunea -D (suma discului). Observați „D” majuscul.
vmstat -D
Numărul de discuri poate părea anormal de mare. Computerul folosit pentru cercetarea acestui articol rulează Ubuntu. Cu Ubuntu, de fiecare dată când instalați o aplicație dintr-un Snap, este creat un pseudo-sistem de fișiere squashfs care este atașat la un dispozitiv /dev/loop.
În mod enervant, aceste intrări de dispozitive sunt considerate dispozitive hard disk de multe dintre comenzile și utilitarele Linux.
Afișarea statisticilor partiției
Pentru a vedea statistici legate de o anumită partiție, utilizați opțiunea -p (partiție) și furnizați identificatorul partiției ca parametru de linie de comandă.
Aici ne vom uita la partiția sda1. Cifra unu indică că aceasta este prima partiție a dispozitivului sda, care este hard disk-ul principal pentru acest computer.
vmstat -p sda1
Informațiile returnate arată numărul total de citiri și scrieri pe disc pe și din acea partiție și numărul de sectoare incluse în acțiunile de citire și scriere pe disc.
O privire sub capotă
Întotdeauna este bine să știi cum să ridici capota și să vezi ce se întâmplă dedesubt. Uneori veți încerca să rezolvați probleme, alteori va fi din interes pentru că doriți să știți cum funcționează computerul dvs.
vmstat vă poate oferi o mulțime de informații utile. Acum știi cum să-l accesezi și ce înseamnă. Iar avertismentul în prealabil este un antebrat – când trebuie să vă suflecați mânecile și să faceți niște diagnostice, veți ști că aveți vmstat de partea dvs.