Geheugen

Opdrachten om Linux-geheugen te beheren

Opdrachten om Linux-geheugen te beheren
UNIX/Linux-systemen bevatten een opdrachtregelprogramma voor bijna alles. Dit omvat ook programma's om het geheugen te verwerken. In dit artikel laten we je een selectie van commando's zien die erg handig zijn voor jou als Linux-gebruiker.

Detecteer de hardware met dmidecode

Automatische hardwaredetectie is altijd een beetje een loterij geweest, maar het is de laatste jaren beter geworden, omdat veel fabrikanten hun producten gedetailleerder documenteren en ook specifieke informatie online beschikbaar hebben. Om meer te weten te komen over de hardware-informatie met betrekking tot het RAM-geheugen dat in uw machine is geïnstalleerd, gebruikt u de dmidecode commando (pakket voor Debian GNU/Linux, Ubuntu en Linux Mint: dmidecode).

Deze tool rapporteert onder andere gedetailleerde gegevens over de geïnstalleerde systeemcomponenten zoals de processor, het basisbord en RAM. De informatie is gebaseerd op de Desktop Management Interface (DMI) [1], een raamwerk dat de afzonderlijke componenten op een desktop, notebook of server classificeert door deze componenten te abstraheren van de software die ze beheert [2]. De optie --type geheugen verwijst naar de geheugenapparaten. Kijk voor andere DMI-klassen op de handleiding van dmidecode.

# dmidecode --type geheugen
# dmidecode 2.12
SMBIOS 2.7 aanwezig.
Handvat 0x0007, DMI-type 16, 23 bytes
Fysieke geheugenarray
Locatie: systeembord of moederbord
Gebruik: systeemgeheugen
Type foutcorrectie: Geen
Maximale capaciteit: 16 GB
Foutinformatiehandvat: niet verstrekt
Aantal apparaten: 1
Handvat 0x0008, DMI-type 17, 34 bytes
Geheugenapparaat
Array-handvat: 0x0007
Foutinformatiehandvat: niet verstrekt
Totale breedte: 64 bits
Gegevensbreedte: 64 bits
Grootte: 8192 MB
Vormfactor: SODIMM
Instellen: Geen
Locator: ChannelA-DIMM0
Bankzoeker: BANK 0
Type: DDR3
Typedetail: synchroon
Snelheid: 1600 MHz
Fabrikant: Samsung
Serienummer: 25252105
Itemtag: Geen
Onderdeelnummer: M471B1G73DB0-YK0
Rang: Onbekend
Geconfigureerde kloksnelheid: 1600 MHz

Deze machine is momenteel uitgerust met 8G DDR3 RAM met een geconfigureerde kloksnelheid van 1600 MHz. Zoals u kunt zien, is de maximaal beschikbare capaciteit van het ingebouwde RAM-geheugen 16G, wat betekent dat het kan worden uitgebreid met een tweede 8G-module.

Grafische informatie over geheugen

Als u de voorkeur geeft aan een grafische interface om deze informatie op te halen, kunnen de tools Hardinfo [3] en Hardware Lister (GTK+-versie) [4] interessant voor u zijn. Op Debian GNU/Linux, Ubuntu en Linux Mint zijn deze programma's beschikbaar via de pakketten hardinfo en lshw-gtk. Figuur 2 toont de gebruikersinterface van Hardinfo die de geheugeninformatie weergeeft op een Xubuntu-installatie.

Hoeveel geheugen is er momenteel beschikbaar

Soms is minder meer. Op de commandoregel is de informatie over het geheugen beschikbaar via de via vrij opdracht. Op Debian GNU/Linux, Ubuntu en Linux Mint maakt dit programma deel uit van het procps-pakket [5]. Afbeelding 2 toont de uitvoer in een terminalvenster.

Als greep uit de verdere mogelijkheden, vrij accepteert verschillende parameters zoals:

In figuur 3 wordt de output weergegeven in megabytes met de optie -m. Het systeem heeft 4G RAM, terwijl er momenteel 725M in gebruik is.

Geheugeninformatie vanuit het oogpunt van de Linux-kernel

De hierboven genoemde tools zijn gebaseerd op onbewerkte informatie die wordt bewaard in het proc-bestandssysteem van de Linux-kernel. Om deze details weer te geven, voert u de inhoud van het bestand uit /proc/meminfo de ... gebruiken kat hulpprogramma in een terminal:

$ cat /proc/meminfo
MemTotaal: 7888704 kB
MemFree: 302852 kB
MemBeschikbaar: 448824 kB
Buffers: 17828 kB
In cache: 326104 kB
SwapCached: 69592 kB
Actief: 2497184 kB
Inactief: 650912 kB
Actief (anon): 2338748 kB
Inactief (anon): 525316 kB
Actief(bestand): 158436 kB
Inactief(bestand): 125596 kB
Niet uit te schakelen: 64 kB
Mlocked: 64 kB
SwapTotaal: 16150524 kB
SwapFree: 15668480 kB
Vuil: 3008 kB
Terugschrijven: 0 kB
AnonPagina's: 2774656 kB
In kaart gebracht: 4414752 kB
Shmem: 59900 kB
Plaat: 130216 kB
STe recupereren: 61748 kB
ZONterugwinning: 68468 kB
KernelStack: 7328 kB
Paginatabellen: 42844 kB
NFS_Instabiel: 0 kB
Stuiteren: 0 kB
TerugschrijvenTmp: 0 kB
CommitLimit: 20094876 kB
Committed_AS: 10344988 kB
VmallocTotaal: 34359738367 kB
Gebruikt: 367296 kB
VmallocChunk: 34359345768 kB
Hardware beschadigd: 0 kB
AnonHugePagina's: 0 kB
HugePages_Total:0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Gigantische paginagrootte: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

Voor meer statistische informatie over cpu-gebruik, geheugen en processen kun je de tools bekijken vmstat, en iostaat (Debian-pakketten procps en sysstat).

Werken met processen - ps, htop en pstree

Om de actieve processen van uw Linux-systeem te tonen, gebruikt u de ps opdracht. Meestal wordt de uitvoer alfabetisch gesorteerd sorted. Maar de ps commando kan veel meer doen. De opties aux . gebruiken --sorteer -rss de uitvoer van de proceslijst wordt gesorteerd op geheugengebruik in een volgorde van boven naar beneden. Afbeelding 4 toont de processen die het meeste geheugen vragen. De uitvoer wordt gesorteerd op de 6e kolom met de titel RSS die Resident Set Size afkortt. De waarde wordt gegeven in kilobytes.

de commando's ps, pstree en htop zijn nauw verwant wat betreft de informatie die deze tools weergeven. Beide pstree en htop een grafiek weergeven om de procesafhankelijkheden te visualiseren. htop fungeert als een interactieve versie waarmee u door de proceslijst omhoog en omlaag kunt scrollen. Figuur 5 toont htop op een desktopsysteem met een selectie van processen gesorteerd op hun specifieke geheugengebruik (5e kolom).

Processen zoeken die Swap-geheugen gebruiken

Hoe meer processen worden gestart, hoe meer geheugen er tegelijkertijd in gebruik is. Zodra je Linux-systeem geen ongebruikte geheugenpagina's meer heeft, besluit de Linux-kernel om geheugenpagina's naar schijf te ruilen met behulp van de Least Recent Used (LRU)-methode. Om de vraag te beantwoorden, welke processen swapgeheugen gebruiken en hoeveel er in het bijzonder wordt gebruikt, kunt u de uitvoer van het bovenste programma bekijken. In 2016 publiceerde Erik Ljungstrom een ​​korte beschrijving hoe je die informatie kunt ophalen en deze column kunt uitbreiden naar de output van top [6]. Afbeelding 6 toont deze uitvoer op een systeem met voldoende geheugenpagina's in het RAM-geheugen en momenteel geen gebruik maakt van Swap.

Verder publiceerde hij in 2011 al een bash-script dat de informatie uit het proc-bestandssysteem evalueert om het gebruik van swap proces per proces weer te geven [7]. Zelfs 7 jaar later en al beschreven als verouderd, is het script nog steeds uitstekend en laat het zien hoe taken op een Linux-systeem kunnen worden geautomatiseerd. Daarom zijn we er zeker van dat het nuttig is om het hier nog eens te laten zien.

De uitvoer van het script is als volgt (uitvoeren als wortel gebruiker de volledige gegevens ophalen):

# ./swap.sh
PID=1 - Swap gebruikt: 0 - (systemd )
PID=2 - Gebruikte swap: 0 - (kthreadd )
PID=3 - Gebruikte swap: 0 - (ksoftirqd/0 )
PID=5 - Gebruikte swap: 0 - (kworker/0:0H )
PID=6 - Swap gebruikt: 0 - (kworker/u16:0 )
PID=7 - Gebruikte swap: 0 - (rcu_sched )
PID=8 - Gebruikte swap: 0 - (rcu_bh )
PID=9 - Swap gebruikt: 0 - (migratie/0 )
PID=10 - Swap gebruikt: 0 - (watchdog/0 )
PID=11 - Swap gebruikt: 0 - (watchdog/1 )
PID=12 - Gebruikte swap: 0 - (migratie/1 )
PID=13 - Gebruikte swap: 0 - (ksoftirqd/1 )
PID=15 - Swap gebruikt: 0 - (kworker/1:0H )
PID=16 - Swap gebruikt: 0 - (watchdog/2 )
PID=17 - Swap gebruikt: 0 - (migratie/2 )
PID=18 - Gebruikte swap: 0 - (ksoftirqd/2 )
PID=20 - Gebruikte swap: 0 - (kworker/2:0H )

#

Conclusie

De Linux-toolbox bevat een eindeloze lijst met beschikbare programma's om u te helpen het geheugengebruik van uw Linux-systeem te analyseren. We hebben net even gekeken - van onbewerkte gegevens tot voorbewerkte informatie - het staat er allemaal. Ken gewoon je gereedschap. Om ze te leren kennen, neem even de tijd om met ze te spelen.

Dit is deel 2 van de serie over Linux Kernel Memory Management.  Deel 1 bespreekt Swap Memory, in deel drie van deze serie zullen we bespreken hoe we het gebruik van geheugen kunnen optimaliseren. Dit omvat het beheer van ramdisks en gecomprimeerde wisselbestanden.

Links en referenties

Linux-geheugenbeheerserie

Dankbetuigingen

De auteur wil graag Mandy Neumeyer en Gerold Rupprecht bedanken voor hun steun bij het opstellen van dit artikel.

Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...