Înțelegeți cu ușurință utilizarea RAM Linux cu Smem

Publicat: 2022-01-29
Ecran de laptop care arată sigla shell Bash pe un fundal roșu
fatmawati achmad zaenuri/Shutterstock

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.

De câtă memorie RAM are nevoie computerul tău pentru jocurile pe computer?
RELATE Cât de mult RAM are nevoie computerul dvs. pentru jocurile pentru PC?

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.

Cum să verificați utilizarea memoriei de la terminalul Linux
LEGATE Cum să verificați utilizarea memoriei de la terminalul Linux

Î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.

Publicitate

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 

Interogarea hărții de memorie a unui singur proces

În partea de jos a ieșirii, obținem un total pentru dimensiunea setului rezident, care este cantitatea de RAM principală utilizată.

Ieșirea pmap pentru o singură instanță de mai puțin

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 

Folosind ps pentru a vedea RSS-ul aceleiași instanțe de less

Obținem un rezultat diferit. Aceasta este o decizie de proiectare din partea autorilor ps . Acesta este de pe pagina de man ps :

Câmpurile SIZE și RSS nu numără unele părți ale unui proces, inclusiv tabelele de pagini, stiva de nucleu, struct thread_info și struct task_struct. Aceasta este de obicei cel puțin 20 KiB de memorie care este întotdeauna rezidentă. SIZE este dimensiunea virtuală a procesului (cod+date+stivă).
Publicitate

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.

De ce este bine că memoria RAM a computerului dvs. este plină
LEGATE De ce este bine că RAM-ul computerului dvs. este plin

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 

Instalarea smem pe Ubuntu

Pentru a instala smem pe Fedora trebuie să tastați:

 sudo dnf install smem 

Instalarea smem pe Fedora

Pentru a instala smem pe Manjaro utilizați:

 sudo pacman -Sy smem 

Instalarea smem pe Manjaro

Publicitate

Utilizarea smem fără opțiuni vă oferă o listă a proceselor care folosesc RAM.

 smem 

Invocarea smem fără opțiuni de linie de comandă

Un tabel de informații este afișat în fereastra terminalului.

Ieșirea implicită a smem

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 

Folosind opțiunea smem -p pentru a solicita procente

Dimensiunile în octeți au fost înlocuite cu procente.

ieșirea smem care arată 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 

Folosind opțiunea smem -k pentru a afișa dimensiunile cu indicatorii de unitate

În loc de octeți bruti, dimensiunile sunt afișate în megaocteți, gigaocteți și așa mai departe.

ieșirea smem folosind indicatori de unitate precum K, M și G

Publicitate

Pentru a adăuga o linie de totaluri, utilizați opțiunea -t (totaluri).

 smem -k -t 

Folosind opțiunea smem -t pentru a adăuga o linie de totaluri la rezultat

Ultima linie a rezultatului arată totalurile pentru fiecare coloană.

Linia totalurilor din partea de jos a ieșirii smem

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 

Folosind opțiunea smem -u cu și fără sudo

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 

Folosind opțiunea smem -m pentru a obține un raport de cartografiere

Am cerut, de asemenea, valori care pot fi citite de om și un total.

Raportul mapat smem care arată utilizarea memoriei de către biblioteci

Pentru a vedea utilizarea memoriei la nivelul întregului sistem, utilizați opțiunea -w (la nivelul întregului sistem).

 smem -w -k -t 

Raportul smem la nivelul întregului sistem

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.

Publicitate

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 

Utilizarea smem pentru a arăta utilizarea memoriei de către un proces și copiii acestuia

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 

Cererea lui smem să producă o diagramă circulară

Diagrama circulară apare în propria fereastră de vizualizare.

O diagramă circulară smem î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 .

Publicitate

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