Het RAM, voor Random Access Memory, is een kritisch onderdeel van een Linux-systeem dat nauwlettend in de gaten moet worden gehouden.
In sommige gevallen kunt u zonder geheugen komen te zitten, waardoor uw server zeer trage responstijden heeft of helemaal niet meer reageert.
Als gevolg hiervan is het cruciaal om te weten hoe u uw RAM-geheugen op Linux kunt controleren, omdat u dan misschien preventieve acties kunt ondernemen in plaats van corrigerende.
U zou ook uw swap geheugen, ook bekend als virtueel geheugen, kunnen verhogen om de prestaties van uw server te verbeteren.
In deze tutorial gaan we alle manieren om uw RAM-geheugen te controleren op Linux op een rijtje zetten.
Inhoudsopgave
RAM-geheugen onder Linux controleren met free
Het populairste commando om het RAM-geheugen onder Linux te controleren is het commando “free”.
$ free total used free shared buff/cache availableMem: 4039588 3475216 137584 39596 426788 287580Swap: 0 0 0
Zoals u kunt zien, is de output verdeeld in twee categorieën : memory (het eigenlijke RAM) en swap (ook wel virtueel geheugen genoemd).
Door free te gebruiken, krijgt u de volgende informatie :
- totaal : de totale hoeveelheid geheugen die momenteel op uw systeem is geïnstalleerd in kilobytes;
- gebruikt : de hoeveelheid RAM die momenteel op uw systeem wordt gebruikt in kilobytes;
- vrij : de hoeveelheid vrij geheugen beschikbaar op uw systeem in kilobytes;
- gedeeld : vertegenwoordigt het geheugen gebruikt door tmpfs dat een virtueel bestandssysteem is dat lijkt te zijn gemount maar behoort tot vluchtig geheugen;
- buffers : geheugen gebruikt door de kernel buffers;
- cache : het aantal geheugen gebruikt door de pagina cache waar gegevens eerst kunnen worden opgeslagen voordat ze naar schijf worden geschreven;
- beschikbaar : het beschikbare geheugen op het systeem in kilobytes
Merk op dat zelfs als er veel geheugen wordt gebruikt door de cache of door de buffers, de Kernel deze ruimte kan vrijmaken als uw systeem meer geheugen nodig heeft voor processen.
Net als het lsblk commando dat we in onze disk tutorials hebben ontdekt, kan het “free”-commando in een mensvriendelijk formaat worden weergegeven.
Om de huidige beschikbare RAM te controleren met behulp van een mensvriendelijk formaat, gebruikt u “free” met de “-h” optie.
total used free shared buff/cache availableMem: 3.9G 3.3G 127M 38M 400M 256MSwap: 0B 0B 0B
Zoals u kunt zien, is de uitvoer gemakkelijker te lezen, maar het is afgerond.
Ook met het commando free kunt u totale kolommen laten weergeven, zodat u de totale hoeveelheid RAM en swap op uw systeem kunt controleren.
Om totale kolommen weer te geven, gebruikt u “free” met de optie “-t”.
$ free -t total used free shared buff/cache availableMem: 4039588 3499392 128828 39596 411368 263292Swap: 0 0 0Total: 4039588 3499392 128828
Merk op dat de commando’s kunnen worden gecombineerd om een mensvriendelijke uitvoer te krijgen en om de totale kolommen te laten zien.
$ free -th total used free shared buff/cache availableMem: 3.9G 3.3G 125M 38M 402M 257MSwap: 0B 0B 0BTotal: 3.9G 3.3G 125M
Het RAM-geheugen controleren met vmstat
Een andere goede manier om uw huidige virtuele geheugengebruik te controleren is het gebruik van het commando “vmstat”.
De uitvoer is misschien een beetje moeilijk te lezen, maar hier zijn de details van de weergegeven kolommen :
- r : aantal runnable processen op uw systeem;
- b : aantal processen in ononderbroken slaap;
- swpd : de hoeveelheid RAM die momenteel door uw systeem wordt gebruikt;
- free : het beschikbare geheugen
- buff, cache : het RAM-geheugen dat wordt gebruikt door de kernel buffers en door de pagina caches;
- inactive, active : de hoeveelheid inactief en actief geheugen
- si : de swap gebruikt van de schijf
- so : het swap-geheugen naar de schijf
De andere kolommen zijn gerelateerd aan schijf I / O en aan het CPU-gebruik die misschien niet relevant zijn in ons geval.
$ vmstat -s 4039588 K total memory 3460532 K used memory 3398428 K active memory 198356 K inactive memory 162648 K free memory 48904 K buffer memory 367504 K swap cache 0 K total swap 0 K used swap 0 K free swap
Zoals u ziet, krijgt u een groot aantal regeluitgangen, maar slechts een paar zijn relevant voor wat wij proberen te bereiken.
Bovenaan de vmstat-uitvoer ziet u het totale geheugen, het gebruikte geheugen, het actieve geheugen (dat gelijk is aan het gebruikte geheugen), het inactieve en het vrije geheugen.
Deze kolommen lijken erg op de kolommen die worden weergegeven met het free-commando.
U krijgt ook het buffer geheugen, de swap cache (wat gelijk staat aan de page cache) en de totale swap als die er is.
Inspecteren van /proc/meminfo om RAM te controleren
Zoals u al weet, is de Kernel degene die het bestandssysteem virtualiseert en toegangspunten geeft tot sommige apparaten op uw systeem.
In de map /proc staan bijvoorbeeld verwijzingen naar processen op uw systeem (file descriptors); in /dev staan verwijzingen naar virtuele apparaten die uiteindelijk naar echte schijven verwijzen.
Een bestand in de /proc directory is echter belangrijker dan andere als het gaat om het controleren van uw RAM geheugen: meminfo.
Zoals u kunt zien, geeft de Kernel u statistieken die dicht in de buurt komen van de statistieken die worden weergegeven met het “free” of “vmstat” commando.
Dat is eigenlijk geen grote verrassing, want die commando’s halen hun informatie uit het meminfo bestand zelf.
Door gebruik te maken van het /proc/meminfo bestand, heeft u toegang tot de totale hoeveelheid geheugen van uw systeem, het vrij beschikbare geheugen, het beschikbare geheugen, alsmede de buffers en pagina caches die mogelijk worden gebruikt.
Ten slotte heeft u toegang tot de swap cache en de actieve en inactieve swap die wordt gebruikt.
Listing RAM hardware using dmidecode
Alle eerder gebruikte commando’s zijn erg nuttig, maar ze kunnen alleen worden gebruikt om te controleren hoeveel RAM er op een bepaald moment wordt gebruikt.
In sommige gevallen wilt u misschien meer weten over uw RAM hardware.
Om dat te doen, moet u het dmidecode commando gebruiken.
Waarschuwing : het kan zijn dat u sudo moet zijn om dmidecode op uw systeem te kunnen uitvoeren.
$ sudo dmidecode# dmidecode 3.1Getting SMBIOS data from sysfs.SMBIOS 2.4 present.13 structures occupying 405 bytes.Table at 0x000F10D0.Handle 0x0000, DMI type 0, 24 bytesBIOS Information Vendor: Private Version: 20171212 Release Date: 12/12/2017 Address: 0xE8000 Runtime Size: 96 kB ROM Size: 64 kB Characteristics: BIOS characteristics not supported Targeted content distribution is supported BIOS Revision: 1.0
De standaardinstelling is dat dmidecode wordt gebruikt om een dump uit te voeren van alle hardware die op uw systeem wordt gebruikt.
Om de hardware te krijgen die aan uw geheugen is toegewezen, moet u het type hardware specificeren dat wordt gebruikt.
$ sudo dmidecode --type memory# dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x1000, DMI type 16, 15 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 21 bytes Memory Device Array Handle: 0x1000 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: None
Zoals u kunt zien, is de uitvoer van dmidecode behoorlijk nuttig: u kunt er meer mee te weten komen over de maximale capaciteit van uw systeem en hoe deze is verdeeld.
In dit voorbeeld is mijn systeem uitgerust met 4 GB aan totaal geheugen, geleverd door een enkele RAM die zich in de DIMM 0 geheugenruimte bevindt.
Als we de hier gegeven afbeelding gebruiken, zou het RAM-geheugen in het eerste beschikbare slot zijn geplaatst (DIMM 0)
Het RAM-gebruik controleren met Prometheus
De hierboven beschreven methoden werken heel goed, maar ze zijn een beetje ouderwets vergeleken met moderne monitoringoplossingen.
Een goede manier om je RAM-gebruik bij te houden is het gebruik van een moderne monitoring stack zoals Prometheus & Grafana.
Prometheus stelt een Node Exporter beschikbaar die kan worden gebruikt om host metrics te verzamelen, in het bijzonder geheugen metrics.
Als je op de Node Exporter Github pagina kijkt, moet je de “meminfo” collector activeren die gespecialiseerd is in het verzamelen van geheugen metrieken uit het /proc/meminfo bestand.
Van daaruit kun je eenvoudig een bestaand dashboard in Grafana importeren om real time geheugenstatistieken over je systeem te krijgen.
Het raadplegen van de Node Exporter tutorial die we eerder hebben gelinkt zou je tot dezelfde output moeten brengen, je kunt hier het Grafana dashboard van je keuze kiezen.
Het RAM-gebruik bijhouden met top/htop-commando’s
Top en htop zijn interactieve commando’s waarmee u uw geheugengebruik kunt bijhouden.
Top is van nature op uw systeem geïnstalleerd, voer simpelweg “top” uit om de statistieken over uw systeem te krijgen.
Zoals u hier kunt zien, krijgt u CPU-statistieken, maar ook de totale hoeveelheid RAM en swap die door uw systeem wordt gebruikt.
U krijgt ook de beschikbare hoeveelheden, evenals de buffer en pagina caches die worden gebruikt.
De statistieken worden gegeven voor uw complete systeem, maar ze worden ook gegeven voor elk afzonderlijk proces op uw instance, gesorteerd van boven naar beneden.
Het htop commando kan ook effectief worden gebruikt om een mensvriendelijke geheugen-tracking op uw server te geven.
Htop is misschien niet van nature op uw systeem geïnstalleerd, dus u moet het misschien installeren.
$ sudo apt-get install htop$ sudo yum install htop
Wanneer htop is geïnstalleerd, kunt u het starten door “htop “uit te voeren
Zoals u kunt zien, zijn de uitgangen redelijk vergelijkbaar: ze zijn alleen gemakkelijker te lezen gemaakt.
Conclusie
In deze tutorial heb je geleerd over de vele verschillende manieren om je RAM-geheugen op Linux te controleren met behulp van de command-line of moderne monitoring-oplossingen zoals Prometheus en Grafana.
Als je het geheugenbeheer op je systeem wilt verbeteren, moet je zeker tutorials over swap bekijken, omdat ze meer uitwijden over het belang van virtueel geheugen op je systeem.
Als u geïnteresseerd bent in Linux-systeembeheer, bekijk dan ook onze andere tutorials over dit onderwerp.