Kommandoer for å administrere Linux -minne

Kommandoer for å administrere Linux -minne
UNIX/Linux -systemer inneholder et kommandolinjeverktøy for nesten alt. Dette inkluderer også programmer for å håndtere minnet. I denne artikkelen viser vi deg et utvalg av kommandoer som kommer ganske nyttig for deg som Linux -bruker.

Oppdage maskinvaren ved hjelp av DMideCode

Automatisk maskinvareeteksjon har alltid vært litt som et lotteri, men det ble bedre i løpet av de siste årene ettersom mange produserer dokumenterer produktene sine mer detaljert og har spesifikk informasjon tilgjengelig på nettet også. For å finne ut om maskinvareinformasjonen angående RAM som er installert i maskinen din, bruk DMideCode Kommando (pakke for Debian Gnu/Linux, Ubuntu og Linux Mint: DMideCode).

Blant annet informasjon rapporterer dette verktøyet detaljerte data om de installerte systemkomponentene som prosessoren, baseboard og RAM. Informasjonen er basert på Desktop Management Interface (DMI) [1], som er et rammeverk som klassifiserer enkeltkomponentene på en skrivebord, notisbok eller server ved å abstrahere disse komponentene fra programvaren som administrerer dem [2]. Valget --Skriv inn minne refererer til minneenhetene. For andre DMI -klasser se på den manuelle siden til DMideCode.

# DMideCode -Type minne
# DMideCode 2.12
Smbios 2.7 til stede.
Håndter 0x0007, DMI Type 16, 23 byte
Fysisk minne -matrise
Sted: systemtavle eller hovedkort
Bruk: Systemminne
Feilkorreksjonstype: Ingen
Maksimal kapasitet: 16 GB
Feilinformasjonshåndtak: Ikke gitt
Antall enheter: 1
Håndter 0x0008, DMI Type 17, 34 byte
Minneenhet
Array Handle: 0x0007
Feilinformasjonshåndtak: Ikke gitt
Total bredde: 64 biter
Databredde: 64 biter
Størrelse: 8192 MB
Formfaktor: Sodimm
Sett: Ingen
Lokator: Channela-Dimm0
Bank Locator: Bank 0
Type: DDR3
Skriv detalj: synkron
Hastighet: 1600 MHz
Produsent: Samsung
Serienummer: 25252105
Asset Tag: Ingen
Delnummer: M471B1G73DB0-YK0
Rang: Ukjent
Konfigurert klokkehastighet: 1600 MHz

Denne maskinen er for tiden utstyrt med 8G DDR3 RAM med en konfigurert klokkehastighet på 1600 MHz. Som du kan se er den maksimale tilgjengelige kapasiteten til RAM om bord 16G, noe som betyr at den kan utvides med en andre 8G-modul.

Grafisk informasjon om minnet

I tilfelle du foretrekker et grafisk grensesnitt for å hente denne informasjonen, kan verktøyene hardinfo [3] og maskinvare Lister (GTK+ versjon) [4] være av interesse for deg. På Debian Gnu/Linux, Ubuntu og Linux Mint er disse programmene tilgjengelige via pakkene HardInfo og LSHW-GTK. Figur 2 viser brukergrensesnittet til HardInfo som viser minneinformasjonen på en Xubuntu -installasjon.

Hvor mye minne er for øyeblikket tilgjengelig

Noen ganger er mindre mer. På kommandolinjen er informasjonen om minne tilgjengelig via gratis kommando. På Debian Gnu/Linux, Ubuntu og Linux Mint er dette programmet en del av PROCPS -pakken [5]. Figur 2 viser utgangen i et terminalvindu.

Som et utvalg av de videre alternativene, gratis aksepterer forskjellige parametere som:

  • -B (--bytes): Vis utgangen som byte
  • -K (--Kilo): Vis utgangen som kilobyte
  • -m (-mega): Vis utgangen som megabyte
  • -g (--giga): Vis utgangen som gigabyte
  • --Tera: Vis utgangen som terabyte
  • -H (--menneskelig): Vis utgangen i menneskelig lesbart format

I figur 3 er utgangen vist i megabyte ved å bruke alternativet -m. Systemet har 4G RAM, mens 725m for øyeblikket er i bruk.

Minneinformasjon fra Linux Kernel synspunkt

Verktøyene nevnt ovenfor er avhengige av rå informasjon som holdes i PROC -filsystemet til Linux -kjernen. For å vise disse detaljene send inn innholdet i filen /proc/meminfo bruker katt verktøy i en terminal:

$ katt /proc /meminfo
MEMTOTAL: 7888704 KB
Memfree: 302852 KB
Memavailable: 448824 KB
Buffere: 17828 KB
Hurtigbufret: 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
Uunngåelig: 64 KB
Mlocked: 64 KB
Swaptotal: 16150524 KB
Swapfree: 15668480 KB
Skitten: 3008 kb
TILBAKE: 0 KB
Anonpages: 2774656 KB
Kartlagt: 4414752 KB
Shmem: 59900 KB
Plate: 130216 kb
Srecylaable: 61748 KB
Sunreclaim: 68468 KB
Kernelstack: 7328 KB
Pagetables: 42844 KB
Nfs_unstable: 0 kb
Sprett: 0 kb
WritbackTMP: 0 KB
CommitLimit: 20094876 KB
Engasjert_as: 10344988 KB
VMalloctotal: 34359738367 KB
VMallocused: 367296 KB
VMallocchunk: 34359345768 KB
Hardwarecorrupted: 0 kb
AnonhugePages: 0 KB
Enorme pages_total: 0
Enorme pages_free: 0
Enorme pages_rsvd: 0
Enorme pages_surp: 0
Enorme pagesize: 2048 kb
DirectMap4K: 78448 KB
DirectMap2m: 2756608 KB
DirectMap1g: 5242880 KB
$

For mer statistisk informasjon om CPU -bruk, minne og prosesser kan du se på verktøyene VMSTAT, og iostat (Debian Packages Procps og SysStat).

Arbeider med prosesser - PS, HTOP og Pstree

For å vise de aktive prosessene i Linux -systemet ditt, bruk PS kommando. Vanligvis er utgangen sortert alfabetisk. Men PS Kommando kan gjøre mye mer. Bruke alternativene AUX --Sorter -rss Utgangen fra prosesslisten sorteres etter deres minnebruk i en ovenfra og ned rekkefølge. Figur 4 viser prosessene som har den høyeste etterspørselen på minnet. Utgangen er sortert etter den 6. kolonnen med tittelen RSS som forkorter Resident Set Size. Verdien er gitt i kilobyte.

Kommandoene PS, Pstree og htop er nært beslektet med tanke på informasjonen disse verktøyene vises. Både Pstree og htop Vis en graf for å visualisere prosessavhengighetene. htop fungerer som en interaktiv versjon som lar deg bla på prosesslisten opp og ned. Figur 5 viser htop På et skrivebordssystem med et utvalg av prosesser sortert etter deres spesifikke minnebruk (5. kolonne).

Finne prosesser som bruker byttehukommelse

Jo flere prosesser blir lansert, jo mer minne er i bruk samtidig. Så snart Linux -systemet ditt går tom for ubrukte minnesider, bestemmer Linux -kjernen seg for å bytte minnesider til disk ved hjelp av den minst nylig brukte (LRU) -metoden. For å svare på spørsmålet, hvilke prosesser som bruker byttehukommelse og hvor mye som brukes spesielt, kan du se på utdataene fra toppprogrammet. I 2016 publiserte Erik Ljungstrom en kort beskrivelse av hvordan du kan hente denne informasjonen og utvide denne kolonnen til output av toppen [6]. Figur 6 viser denne utgangen på et system som har mange minnesider i RAM igjen og bruker ikke bytte for øyeblikket.

Videre publiserte han i 2011 et bash -skript som evaluerer informasjonen fra PROC -filsystemet for å vise bruken av bytteprosess etter prosess [7]. Selv 7 år senere og allerede beskrevet som foreldet, er manuset fremdeles utmerket og viser hvordan du automatiserer oppgaver på et Linux -system. Det er grunnen til at vi er sikre på at det er nyttig å vise det her igjen.

Utgangen til skriptet er som følger (kjører som rot Bruker hent de fulle dataene):

# ./bytte.sh
PID = 1 - Swap brukt: 0 - (Systemd)
PID = 2 - Swap brukt: 0 - (Kthreadd)
PID = 3 - Swap brukt: 0 - (KSoftirqd/0)
PID = 5 - Swap brukt: 0 - (Kworker/0: 0h)
PID = 6 - Swap brukt: 0 - (Kworker/U16: 0)
PID = 7 - Swap brukt: 0 - (RCU_SCHED)
PID = 8 - Swap brukt: 0 - (RCU_BH)
PID = 9 - Swap brukt: 0 - (Migrasjon/0)
PID = 10 - Swap brukt: 0 - (vakthund/0)
PID = 11 - Swap brukt: 0 - (vakthund/1)
PID = 12 - Swap brukt: 0 - (Migrasjon/1)
PID = 13 - Swap brukt: 0 - (KSoftirqd/1)
PID = 15 - Swap brukt: 0 - (Kworker/1: 0H)
PID = 16 - Swap brukt: 0 - (vakthund/2)
PID = 17 - Swap brukt: 0 - (Migrasjon/2)
PID = 18 - Swap brukt: 0 - (KSoftirqd/2)
PID = 20 - Swap brukt: 0 - (Kworker/2: 0h)
..
#

Konklusjon

Linux -verktøykassen inneholder en endeløs liste over programmer som er tilgjengelige for å hjelpe deg med å analysere minnebruken til Linux -systemet ditt. Vi så bare et kort titt - fra rå data til forbehandlet informasjon - alt er der. Bare kjenne verktøyene dine. For å bli kjent med dem, ta litt tid og leke med dem.

Dette er del 2 av serien om Linux Kernel Memory Management. Del 1 diskuterer byttehukommelse, i del tre av denne serien vil vi diskutere hvordan du kan optimalisere bruken av minnet. Dette vil omfatte styring av ramdisker samt komprimerte byttefiler.

Lenker og referanser

  • [1] DMI ved Distribuert Management Task Force (DMTF)
  • [2] DMI på Wikipedia
  • [3] Hardinfo
  • [4] LSHW-GTK (Debian Package for Stretch)
  • [5] Procps (Debian -pakke for strekk)
  • [6] Erik Ljungstrom: Finn ut hva som bruker byttet ditt
  • [7] Erik Ljungstrom: Swap -bruk - 5 år senere

Linux Memory Management Series

  • Del 1: Linux Kernel Memory Management: Swap Space
  • Del 2: Kommandoer for å administrere Linux -minnet
  • Del 3: Optimalisering av Linux -minnebruk

Anerkjennelser

Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte mens han utarbeidet denne artikkelen.