Begrijp eenvoudig uw Linux RAM-gebruik met Smem

0
71
fatmawati achmad zaenuri/Shutterstock

Het gebruik van Linux-geheugen kan moeilijk te interpreteren en moeilijk te begrijpen zijn. Met smem is het gemakkelijk om erachter te komen welk geheugen een proces gebruikt en welke processen het meest gebruiken.

Geheugengebruik

Linux geeft u vele manieren om te controleren wat er gebeurt met het RAM-geheugen van uw computer. Het probleem is dat geheugenbeheer een ingewikkelde uitdaging is voor uw besturingssysteem. Het moet jongleren met fysiek RAM, virtueel RAM in de vorm van swapruimte en de eisen van de verschillende soorten processen die op een bepaald moment draaien.

GERELATEERDHoeveel RAM heeft uw computer nodig voor pc-games?

Processen verbruiken RAM terwijl ze zichzelf in het geheugen laden. Vervolgens vragen ze om meer RAM, zodat ze ruimte hebben om de taken uit te voeren waarvoor ze zijn ontworpen. Sommige processen hebben nauwelijks invloed op RAM, andere vragen veel geheugen.

De kernel en de rest van het besturingssysteem, uw desktopomgeving en elke toepassing of opdrachtregelsessie die u uitvoert, schreeuwen allemaal om een ​​deel van de eindige hoeveelheid RAM die op uw computer is geïnstalleerd. Sommige processen brengen andere processen voort. Sommige processen delen RAM met andere processen.

GERELATEERD Geheugengebruik controleren vanaf de Linux-terminal

Ik probeer dit allemaal te ontcijferen en een eenvoudig antwoord te geven op de vraag “Hoeveel RAM gebruikt dit programma of proces?” kan een verrassende uitdaging zijn. Granulariteit is geweldig en heeft zijn plaats, maar evengoed kan overkill aan informatie een belemmering zijn.

Advertentie

Als u bijvoorbeeld cat gebruikt om in het pseudo-bestandssysteem /proc/meminfo te gluren, krijgt u 50 regels uitvoer op de machine die is gebruikt om dit artikel te onderzoeken. Waar begin je?

cat /proc/meminfo

En sommige Linux-hulpprogramma's geven verschillende antwoorden. Op onze testmachine hadden we een instantie van minder actief, met een proces-ID van 2183.

We kunnen het hulpprogramma pmap gebruiken met de optie -x (uitgebreid) om een ​​volledig beeld te krijgen van het geheugengebruik van een proces. We zullen het gebruiken met de proces-ID van onze instantie van minder:

pmap -x 2183

Onderaan de uitvoer krijgen we een totaal voor de Resident Set Size, de hoeveelheid hoofd-RAM die wordt gebruikt.

Vervolgens gebruikten we het ps-hulpprogramma met de -o (output) optie, selecteerden de RSS-kolom en gaven deze door aan de proces-ID van hetzelfde exemplaar van minder:

ps -o rss 2183

We krijgen een ander resultaat. Dit is een ontwerpbeslissing van de ps-auteurs. Dit komt van de ps man-pagina:

De SIZE- en RSS-velden tellen sommige delen van een proces niet mee, inclusief de paginatabellen, kernelstack, struct thread_info en struct task_struct. Dit is meestal ten minste 20 KiB geheugen dat altijd aanwezig is. SIZE is de virtuele grootte van het proces (code+data+stack). Advertentie

De auteurs van andere hulpprogramma's hebben hun eigen opvattingen over het meten van RAM-gebruik.

De RSS, de USS en de PSS< /h2>

De Resident Set Size (RSS) is de hoeveelheid RAM die aan een proces is toegewezen, exclusief swapruimte, maar inclusief alle RAM die vereist is door gedeelde bibliotheken die het proces gebruikt.

GERELATEERDWaarom het goed is dat het RAM-geheugen van uw computer vol is

RSS rapporteert bijna altijd over het RAM-gebruik. Als twee of meer processen een of meer gedeelde bibliotheken gebruiken, voegt RSS eenvoudig het RAM-gebruik van elke bibliotheek toe aan de telling van het RAM-gebruik voor elk van die processen. Naast onnauwkeurigheid zit hier een zekere ironie in. Gedeelde bibliotheken betekenen dat elk proces zijn eigen privé-instantie van een bibliotheek niet hoeft te laden. Als de bibliotheek al in het geheugen zit, zal hij die delen en de RAM-overhead verminderen.

De proportionele setgrootte probeert dit aan te pakken door de hoeveelheid gedeeld geheugen te verdelen over de processen die het delen. Als er vier processen zijn die wat geheugen delen, meldt PSS dat 25% van het gedeelde RAM-geheugen door elk van die processen wordt gebruikt. Dit is een benadering, maar het lijkt meer op wat er aan de hand is dan het beeld dat RSS schetst.

De unieke setgrootte is de hoeveelheid RAM die uitsluitend door een proces wordt gebruikt, of het nu direct wordt verbruikt door het proces of wordt gebruikt door bibliotheken die uitsluitend door het proces worden gebruikt. Nogmaals, het negeert de swap-ruimte. Het is alleen geïnteresseerd in echt, fysiek RAM-geheugen.

USS en PSS zijn termen en concepten die zijn voorgesteld door Matt Mackall, de auteur van smem.

Het smem-hulpprogramma

Het smem-hulpprogramma rapporteert over geheugen dat wordt gebruikt door processen, gebruikers, mapping of het hele systeem. Bij alle distributies die we hebben getest, was installatie vereist. Gebruik deze opdracht om het op Ubuntu te installeren:

sudo apt install smem

Om smem op Fedora te installeren moet je typen:

sudo dnf install smem

Om smem op Manjaro te installeren, gebruik je:

sudo pacman -Sy smem

Advertentie

Als u smem zonder opties gebruikt, krijgt u een lijst met de processen die RAM gebruiken.

smem

Een tabel met informatie wordt weergegeven in het terminalvenster.

De kolommen zijn:

  • PID : de proces-ID van het proces dat het geheugen gebruikt.
  • Gebruiker: de gebruikersnaam van de gebruiker die eigenaar is van het proces.
  • Opdracht: de opdrachtregel waarmee het proces is gestart.
  • Verwisselen: hoeveel wisselruimte het proces gebruikt.
  • USS: de unieke setgrootte.
  • PSS: de proportionele set Grootte.
  • RSS: De Resident Set Grootte.

Gebruik de -p (percentage) optie om de maten uitgedrukt als percentages te zien .

smem -p

De maten in bytes zijn vervangen met percentages.

Gebruik de -k ( afkorting) optie. Dit verkleint de cijfers en voegt eenheidsindicatoren toe.

smem -k

In plaats van onbewerkte bytes worden de maten weergegeven in megabytes, gigabytes, enzovoort.

Advertentie

Gebruik de optie -t (totalen) om een ​​totaalregel toe te voegen.

smem -k -t

De laatste regel van de uitvoer toont de totalen voor elke kolom.

Het rapport verfijnen

U kunt smem vragen om te rapporteren over het geheugengebruik door gebruikers, mapping (bibliotheken) of het hele systeem. Gebruik de optie -u (gebruiker) om de uitvoer op gebruiker te filteren. Merk op dat als je meer wilt zien dan alleen je eigen gebruik, je smem met sudo moet uitvoeren.

smem -u sudo smem -u

Zoals je kunt zien, vervormt de uitvoer voor gebruikersnamen die langer zijn dan acht tekens.

Om bekijk het gebruik dat is toegewezen aan de bibliotheken die in gebruik zijn, ongeacht welke processen de bibliotheken gebruiken, noch welke gebruikers die processen bezitten, gebruik de optie -m (mapping).

smem -m -k -t

We hebben ook gevraagd om door mensen leesbare waarden en een totaal.

Gebruik de -w (systeembrede) optie om het systeembrede geheugengebruik te zien.

smem -w -k -t

Rapporteren over een enkel programma

Met een beetje magie op de commandoregel kunnen we rapporteren over een enkel programma en al zijn subprocessen. We sturen de uitvoer van smem naar tail en vragen tail om alleen de laatste regel te tonen. We zullen smem vertellen om door mensen leesbare waarden te gebruiken en een totaal te geven. Het totaal is de laatste regel, en dat is de staart die voor ons wordt weergegeven.

Advertentie

We gebruiken de -c (kolommen) optie met smem en vertellen welke kolommen we in onze uitvoer willen opnemen. We beperken dit tot de kolom Proportionele setgrootte. Met de optie -P (procesfilter) kunnen we een zoekreeks aan smem geven. Alleen overeenkomende uitvoerregels worden opgenomen.

smem -c pss -P firefox -k -t | tail -n 1

Dat is een snelle en handige manier om het RAM-verbruik van een programma en zijn onderliggende processen.

Grafieken genereren

U kunt de –pie of –bar opties doorgeven om SEM grafieken te laten genereren. Het moet gezegd dat bij te veel categorieën de grafieken snel onbegrijpelijk worden, maar ze kunnen handig zijn voor een snel visueel overzicht.

Het commandoformaat is:

smem –pie name -s uss

Het cirkeldiagram verschijnt in zijn eigen weergavevenster.

Gebruik pss of rss in plaats van uss om andere plots te zien. Gebruik –bar in plaats van –pie om een ​​staafdiagram te zien.

Advertentie

Om dit te laten werken, moet Python zijn geïnstalleerd, samen met de matplotlib-bibliotheek. Deze waren al geïnstalleerd op de Ubuntu-, Fedora- en Manjaro-distributies die we hebben getest.

Goede dingen komen in kleine pakketten

De smem utility heeft nog een paar trucjes in petto, en je wordt aangemoedigd om de man-pagina te bekijken. Het belangrijkste repertoire is wat we hier hebben geschetst, en het is een geweldig hulpmiddel om in je CLI-toolbox te hebben.

GERELATEERD: 37 Belangrijk Linux-opdrachten die u moet kennen

LEES VOLGENDE

  • › Stop met het afsluiten van uw Windows-pc
  • › Hoe u de oplaadpoort van uw iPhone schoonmaakt
  • › Herinnering aan VRML: The Metaverse of 1995
  • › Wat doet “BB” Gemiddeld, en hoe gebruik ik het?
  • › Hoe u meer Ethernet-poorten aan uw router kunt toevoegen
  • › 6 tips om Microsoft Excel-diagrammen te maken die opvallen