Hukommelse

Kommandoer til at styre Linux-hukommelse

Kommandoer til at styre Linux-hukommelse
UNIX / Linux-systemer indeholder et kommandolinjeværktøj til næsten alt. Dette inkluderer også programmer til håndtering af hukommelsen. I denne artikel viser vi dig et udvalg af kommandoer, der kommer meget nyttigt for dig som Linux-bruger.

Find hardware ved hjælp af dmidecode

Automatisk hardwaredetektion har altid været lidt som et lotteri, men det blev bedre inden for de sidste år, da mange producenter dokumenterer deres produkter mere detaljeret og også har specifik information tilgængelig online. For at finde ud af om hardwareoplysningerne om RAM installeret i din maskine skal du bruge dmidecode kommando (pakke til Debian GNU / Linux, Ubuntu og Linux Mint: dmidecode).

Blandt andre oplysninger rapporterer dette værktøj detaljerede data om de installerede systemkomponenter som processor, baseboard og RAM. Oplysningerne er baseret på Desktop Management Interface (DMI) [1], som er en ramme, der klassificerer de enkelte komponenter på en desktop, notebook eller server ved at abstrahere disse komponenter fra softwaren, der administrerer dem [2]. Muligheden --skriv hukommelse henviser til hukommelsesenhederne. For andre DMI-klasser, se manualsiden til dmidecode.

# dmidecode - type hukommelse
# dmidecode 2.12
SMBIOS 2.7 til stede.
Håndtag 0x0007, DMI type 16, 23 byte
Fysisk hukommelsesarray
Placering: Systemkort eller bundkort
Anvendelse: Systemhukommelse
Fejlkorrektionstype: Ingen
Maksimal kapacitet: 16 GB
Fejlinformationshåndtag: Medfølger ikke
Antal enheder: 1
Håndtag 0x0008, DMI type 17, 34 bytes
Hukommelsesenhed
Arrayhåndtag: 0x0007
Fejlinformationshåndtag: Medfølger ikke
Samlet bredde: 64 bit
Databredde: 64 bit
Størrelse: 8192 MB
Formfaktor: SODIMM
Sæt: Ingen
Finder: ChannelA-DIMM0
Banklokator: BANK 0
Type: DDR3
Type detaljer: Synkron
Hastighed: 1600 MHz
Producent: Samsung
Serienummer: 25252105
Aktivmærke: Ingen
Varenummer: M471B1G73DB0-YK0
Rang: Ukendt
Konfigureret urhastighed: 1600 MHz

Denne maskine er i øjeblikket udstyret med 8G DDR3 RAM med en konfigureret urhastighed på 1600 MHz. Som du kan se, er den maksimale tilgængelige kapacitet på indbygget RAM 16G, hvilket betyder, at det kan udvides med et andet 8G-modul.

Grafisk information om hukommelse

Hvis du foretrækker en grafisk grænseflade til at hente disse oplysninger, kan værktøjerne Hardinfo [3] og Hardware Lister (GTK + version) [4] være af interesse for dig. På Debian GNU / Linux, Ubuntu og Linux Mint er disse programmer tilgængelige via pakkerne hardinfo og lshw-gtk. Figur 2 viser brugergrænsefladen til Hardinfo, der viser hukommelsesoplysningerne på en Xubuntu-installation.

Hvor meget hukommelse der i øjeblikket er tilgængelig

Nogle gange er mindre mere. På kommandolinjen er oplysningerne om hukommelse tilgængelige via ledig kommando. På Debian GNU / Linux, Ubuntu og Linux Mint er dette program en del af procps-pakken [5]. Figur 2 viser output i et terminalvindue.

Som et udvalg af de yderligere muligheder, ledig accepterer forskellige parametre såsom:

I figur 3 vises output i megabyte ved hjælp af option -m. Systemet har 4G RAM, mens 725M i øjeblikket er i brug.

Hukommelsesoplysninger fra Linux-kernens synspunkt

De ovennævnte værktøjer er afhængige af rå information, der opbevares i proc-filsystemet i Linux-kernen. For at vise disse detaljer skal du sende indholdet af filen / proc / meminfo bruger kat værktøj i en terminal:

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
MemAvailable: 448824 kB
Buffere: 17828 kB
Cache: 326104 kB
SwapCached: 69592 kB
Aktiv: 2497184 kB
Inaktiv: 650912 kB
Aktiv (anon): 2338748 kB
Inaktiv (anon): 525316 kB
Aktiv (fil): 158436 kB
Inaktiv (fil): 125596 kB
Uundgåelig: 64 kB
Spærret: 64 kB
Skift i alt: 16150524 kB
SwapFree: 15668480 kB
Beskidt: 3008 kB
Tilbageførsel: 0 kB
AnonPages: 2774656 kB
Kortlagt: 4414752 kB
Shmem: 59900 kB
Plade: 130216 kB
SRKrav: 61748 kB
SUanvendelse: 68468 kB
KernelStack: 7328 kB
Sidetabeller: 42844 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
Forpligtelsesbegrænsning: 20094876 kB
Forpligtet_AS: 10344988 kB
VmallocI alt: 34359738367 kB
VmallocBrugt: 367296 kB
VmallocChunk: 34359345768 kB
HardwareKorrupt: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesstørrelse: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

For mere statistisk information om CPU-brug, hukommelse og processer kan du se på værktøjerne vmstat, og iostat (Debian-pakker procps og sysstat).

Arbejde med processer - ps, htop og pstree

For at vise de aktive processer i dit Linux-system skal du bruge ps kommando. Normalt sorteres output alfabetisk. Men ps kommando kan gøre meget mere. Brug af optionerne aux --sorter -rss output fra proceslisten sorteres efter deres hukommelsesforbrug i en top-down rækkefølge. Figur 4 viser de processer, der har den største efterspørgsel efter hukommelse. Outputtet er sorteret efter den 6. kolonne med titlen RSS, der forkortes Resident Set Size. Værdien er angivet i kilobyte.

Kommandoerne ps, pstree og htop er nært beslægtede med hensyn til den information, disse værktøjer viser. Begge pstree og htop vise en graf for at visualisere procesafhængigheder. htop fungerer som en interaktiv version, der giver dig mulighed for at rulle proceslisten op og ned. Figur 5 viser htop på et desktop-system med et udvalg af processer sorteret efter deres specifikke hukommelsesforbrug (5. kolonne).

Finde processer, der bruger swap-hukommelse

Jo flere processer der lanceres, jo mere hukommelse er i brug på samme tid. Så snart dit Linux-system løber tør for ubrugte hukommelsessider, beslutter Linux-kernen at bytte hukommelsessider til disk ved hjælp af LRU-metoden (mindst anvendt). For at besvare spørgsmålet, hvilke processer der bruger swap-hukommelse, og hvor meget der især bruges, kan du se på output fra det øverste program. I 2016 offentliggjorde Erik Ljungstrom en kort beskrivelse af, hvordan man kan hente disse oplysninger og udvide denne kolonne til output fra toppen [6]. Figur 6 viser dette output på et system, der har masser af hukommelsessider i RAM tilbage og ikke bruger Swap, i øjeblikket.

Desuden offentliggjorde han i 2011 allerede et bash-script, der evaluerer informationen fra proc-filsystemet for at vise brugen af ​​swap-proces efter proces [7]. Selv 7 år senere og allerede beskrevet som forældet er scriptet stadig fremragende og viser, hvordan man automatiserer opgaver på et Linux-system. Derfor er vi sikre på, at det er nyttigt at vise det her endnu en gang.

Outputtet af scriptet er som følger (kør som rod bruger hente de fulde data):

# ./bytte rundt.sh
PID = 1 - Brugt bytte: 0 - (systemd)
PID = 2 - Brugt bytte: 0 - (kthreadd)
PID = 3 - Brugt bytte: 0 - (ksoftirqd / 0)
PID = 5 - Brugt bytte: 0 - (kworker / 0: 0H)
PID = 6 - Brugt bytte: 0 - (kworker / u16: 0)
PID = 7 - Brugt bytte: 0 - (rcu_sched)
PID = 8 - Brugt bytte: 0 - (rcu_bh)
PID = 9 - Brugt bytte: 0 - (migration / 0)
PID = 10 - Brugt bytte: 0 - (vagthund / 0)
PID = 11 - Brugt bytte: 0 - (vagthund / 1)
PID = 12 - Brugt bytte: 0 - (migration / 1)
PID = 13 - Brugt bytte: 0 - (ksoftirqd / 1)
PID = 15 - Brugt bytte: 0 - (kworker / 1: 0H)
PID = 16 - Brugt bytte: 0 - (vagthund / 2)
PID = 17 - Brugt bytte: 0 - (migration / 2)
PID = 18 - Brugt bytte: 0 - (ksoftirqd / 2)
PID = 20 - Brugt bytte: 0 - (kworker / 2: 0H)
..
#

Konklusion

Linux-værktøjskassen indeholder en endeløs liste over tilgængelige programmer, der hjælper dig med at analysere hukommelsesforbruget på dit Linux-system. Vi havde lige et kort kig - fra rådata til forbehandlede oplysninger - alt er der. Bare kend dine værktøjer. At kende dem tager lidt tid og leger med dem.

Dette er del 2 af serien om Linux Kernel Memory Management.  Del 1 diskuterer skift hukommelse, i del tre af denne serie vil vi diskutere, hvordan man optimerer brugen af ​​hukommelse. Dette inkluderer styring af ramdiske samt komprimerede swap-filer.

Links og referencer

Linux Memory Management Series

Anerkendelser

Forfatteren vil gerne takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under udarbejdelsen af ​​denne artikel.

Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...
Open Source-porte med kommercielle spilmotorer
Gratis, open source og cross-platform spilmotorgendringer kan bruges til at spille gamle såvel som nogle af de temmelig nylige spiltitler. Denne artik...
Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...