Înțelegeți cu ușurință utilizarea RAM Linux cu Smem
Publicat: 2022-01-29 Utilizarea memoriei Linux poate fi dificil de interpretat și greu de înțeles. Cu smem
este ușor să aflați ce memorie folosește un proces și ce procese folosesc cel mai mult.
Folosirea memoriei
Linux vă oferă multe modalități de a verifica ce se întâmplă cu RAM-ul computerului. Problema este că gestionarea memoriei este o provocare complicată pentru sistemul dvs. de operare. Trebuie să jongleze cu RAM fizică, RAM virtuală sub formă de spațiu de schimb și cerințele diferitelor tipuri de procese care rulează la un moment dat.
Procesele consumă RAM pe măsură ce se încarcă singure în memorie. Apoi solicită mai multă RAM, astfel încât să aibă spațiu pentru a îndeplini orice sarcini pentru care sunt proiectați. Unele procese afectează cu greu memoria RAM, altele sunt foarte ameți de memorie.
Nucleul și restul sistemului de operare, mediul desktop și fiecare aplicație sau sesiune de linie de comandă pe care o rulați, toate cer o parte din cantitatea finită de RAM instalată în computerul dvs. Unele procese generează alte procese. Unele procese partajează RAM cu alte procese.
Încercarea de a descifra toate acestea și de a veni cu un răspuns simplu la întrebarea „Câtă RAM folosește acest program sau proces?” poate fi o provocare surprinzătoare. Granularitatea este grozavă și își are locul, dar, în egală măsură, excesul de informații poate fi un impediment.
De exemplu, utilizarea cat
pentru a arunca o privire în pseudosistemul de fișiere /proc/meminfo a returnat 50 de linii de ieșire pe mașina folosită pentru a cerceta acest articol. De unde începi?
cat /proc/meminfo
Și unele utilitare Linux dau răspunsuri diferite. Pe mașina noastră de testare, am avut o instanță de rulare less
, care avea un ID de proces de 2183.
Putem folosi utilitarul pmap
cu opțiunea -x
(extinsă) pentru a obține o imagine completă a utilizării memoriei unui proces. Îl vom folosi cu ID-ul de proces al instanței noastre de less
:
pmap -x 2183
În partea de jos a ieșirii, obținem un total pentru dimensiunea setului rezident, care este cantitatea de RAM principală utilizată.
Apoi am folosit utilitarul ps
cu -o
(ieșire), am selectat coloana RSS
și i-am transmis ID-ul de proces al aceleiași instanțe de less
:
ps -o rss 2183
Obținem un rezultat diferit. Aceasta este o decizie de proiectare din partea autorilor ps
. Acesta este de pe pagina de man
ps
:
Autorii altor utilitare au propriile lor opinii asupra modului de măsurare a utilizării RAM.
RSS, USS și PSS
Dimensiunea setului rezident (RSS) este cantitatea de RAM alocată unui proces, excluzând spațiul de swap, dar incluzând orice memorie RAM cerută de bibliotecile partajate pe care le utilizează procesul.
RSS aproape întotdeauna supraraportează utilizarea RAM. Dacă două sau mai multe procese utilizează una sau mai multe biblioteci partajate, RSS va adăuga pur și simplu utilizarea RAM a fiecărei biblioteci la numărul său de utilizare a RAM pentru fiecare dintre aceste procese. Pe lângă inexactitate, există o anumită ironie în acest sens. Bibliotecile partajate înseamnă că fiecare proces nu trebuie să încarce propria instanță privată a unei biblioteci. Dacă biblioteca este deja în memorie, o va partaja pe aceea și va reduce supraîncărcarea RAM.
Dimensiunea setului proporțional încearcă să rezolve acest lucru prin împărțirea cantității de memorie partajată între procesele care o partajează. Dacă există patru procese care partajează o anumită memorie, PSS raportează că 25% din RAM partajată este utilizată de fiecare dintre aceste procese. Aceasta este o aproximare, dar seamănă mai mult cu ceea ce se întâmplă decât imaginea pe care o pictează RSS.
Dimensiunea unică a setului este cantitatea de memorie RAM care este utilizată exclusiv de un proces, indiferent dacă este consumată direct de proces sau utilizată de bibliotecile care sunt utilizate exclusiv de proces. Din nou, ignoră spațiul de schimb. Este interesat doar de RAM fizică autentică.
USS și PSS sunt termeni și concepte care au fost propuse de Matt Mackall, autorul cărții smem
.
Utilitatea smem
Utilitarul smem
raportează memoria utilizată de procese, utilizatori, cartografiere sau la nivelul întregului sistem. Pe toate distribuțiile pe care le-am testat, a necesitat instalare. Pentru a-l instala pe Ubuntu, utilizați această comandă:
sudo apt install smem
Pentru a instala smem
pe Fedora trebuie să tastați:
sudo dnf install smem
Pentru a instala smem
pe Manjaro utilizați:
sudo pacman -Sy smem
Utilizarea smem
fără opțiuni vă oferă o listă a proceselor care folosesc RAM.
smem
Un tabel de informații este afișat în fereastra terminalului.
Coloanele sunt:
- PID : ID-ul procesului care utilizează memoria.
- Utilizator : numele de utilizator al utilizatorului care deține procesul.
- Comandă : linia de comandă care a lansat procesul.
- Swap : Cât spațiu de swap folosește procesul.
- USS : Dimensiunea unică a setului.
- PSS : Mărimea setului proporțional.
- RSS : Dimensiunea setului rezident.
Pentru a vedea dimensiunile exprimate ca procente, utilizați opțiunea -p
(procent).
smem -p
Dimensiunile în octeți au fost înlocuite cu procente.
Pentru a vedea figurile redate într-o formă mai prietenoasă cu oamenii, utilizați opțiunea -k
(abreviare). Acest lucru micșorează cifrele și adaugă indicatori de unitate.
smem -k
În loc de octeți bruti, dimensiunile sunt afișate în megaocteți, gigaocteți și așa mai departe.
Pentru a adăuga o linie de totaluri, utilizați opțiunea -t
(totaluri).
smem -k -t
Ultima linie a rezultatului arată totalurile pentru fiecare coloană.
Rafinarea raportului
Puteți cere smem
să raporteze despre utilizarea memoriei de către utilizatori, cartografiere (biblioteci) sau la nivelul întregului sistem. Pentru a filtra rezultatul după utilizator, utilizați opțiunea -u
(utilizator). Rețineți că, dacă doriți să vedeți mai mult decât propria dvs. utilizare, va trebui să rulați smem
cu sudo
.
smem -u
sudo smem -u
După cum puteți vedea, rezultatul se îndoiește pentru nume de utilizator mai lungi de opt caractere.
Pentru a vedea utilizarea mapată la bibliotecile care sunt în uz, indiferent de procesele care folosesc bibliotecile sau de utilizatorii care dețin acele procese, utilizați opțiunea -m
(mapping).
smem -m -k -t
Am cerut, de asemenea, valori care pot fi citite de om și un total.
Pentru a vedea utilizarea memoriei la nivelul întregului sistem, utilizați opțiunea -w
(la nivelul întregului sistem).
smem -w -k -t
Raportarea pentru un singur program
Cu puțină magie în linia de comandă, putem raporta despre un singur program și toate subprocesele sale. Vom direcționa ieșirea de la smem
în tail
și vom cere tail
să arate doar ultima linie. Îi vom spune lui smem
să folosească valori care pot fi citite de om și să furnizeze un total. Totalul va fi ultima linie, iar aceasta este tail
liniei care va fi afișată pentru noi.
Vom folosi opțiunea -c
(coloane) cu smem
și vom spune ce coloane dorim să fie incluse în rezultatul nostru. Vom restricționa acest lucru la coloana Dimensiune set proporțional. Opțiunea -P
(filtru de proces) ne permite să dăm un șir de căutare pentru smem
. Vor fi incluse doar liniile de ieșire care se potrivesc.
smem -c pss -P firefox -k -t | coada -n 1
Acesta este un mod rapid și ordonat de a afla consumul de RAM al unui program și al proceselor sale secundare.
Generarea de grafice
Puteți trece opțiunile --pie
sau --bar
pentru ca smem
să genereze grafice. Trebuie spus că cu prea multe categorii graficele devin rapid neinteligibile, dar pot fi utile pentru o imagine de ansamblu rapidă.
Formatul comenzii este:
smem --pie nume -s uss
Diagrama circulară apare în propria fereastră de vizualizare.
Pentru a vedea alte parcele, utilizați pss
sau rss
în loc de uss
. Pentru a vedea un grafic cu bare, utilizați --bar
în loc de --pie
.
Pentru ca acest lucru să funcționeze, va trebui să aveți instalat Python, împreună cu biblioteca matplotlib
. Acestea au fost deja instalate pe distribuțiile Ubuntu, Fedora și Manjaro pe care le-am testat.
Lucrurile bune vin în pachete mici
Utilitarul smem
mai are câteva trucuri în mânecă și sunteți încurajat să consultați pagina sa de man
. Repertoriul său principal este ceea ce am subliniat aici și este un mic instrument grozav pe care îl puteți avea în cutia dvs. de instrumente CLI.
LEGATE: 37 de comenzi Linux importante pe care ar trebui să le cunoașteți