Hukommelse

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 kommandoer som er ganske nyttig for deg som Linux-bruker.

Oppdag maskinvaren ved hjelp av dmidecode

Automatisk maskinvaredeteksjon har alltid vært litt som et lotteri, men det har blitt bedre de siste årene, da mange produsenter dokumenterer produktene sine mer detaljert og har spesifikk informasjon tilgjengelig på nettet også. For å finne ut om maskinvareinformasjonen angående RAM installert på 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 installerte systemkomponenter som prosessor, baseboard og RAM. Informasjonen er basert på Desktop Management Interface (DMI) [1], som er et rammeverk som klassifiserer enkeltkomponentene på en stasjonær, bærbar PC eller server ved å trekke disse komponentene fra programvaren som administrerer dem [2]. Valget --skriv inn minne refererer til minneenhetene. For andre DMI-klasser, se manualsiden til dmidecode.

# dmidecode --type minne
# dmidecode 2.12
SMBIOS 2.7 til stede.
Håndtak 0x0007, DMI type 16, 23 byte
Fysisk minnearray
Plassering: Hovedkort eller hovedkort
Bruk: Systemminne
Feilkorreksjonstype: Ingen
Maksimal kapasitet: 16 GB
Feilinformasjonshåndtak: Ikke gitt
Antall enheter: 1
Håndtak 0x0008, DMI type 17, 34 byte
Minneenhet
Arrayhåndtak: 0x0007
Feilinformasjonshåndtak: Ikke gitt
Total bredde: 64 bits
Databredde: 64 bits
Størrelse: 8192 MB
Formfaktor: SODIMM
Sett: Ingen
Locator: ChannelA-DIMM0
Banklokator: BANK 0
Type: DDR3
Type detalj: synkron
Hastighet: 1600 MHz
Produsent: Samsung
Serienummer: 25252105
Asset Tag: Ingen
Delenummer: 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 ser er den maksimale tilgjengelige kapasiteten på innebygd RAM 16G, noe som betyr at den kan utvides med en andre 8G-modul.

Grafisk informasjon om minne

Hvis du foretrekker et grafisk grensesnitt for å hente denne informasjonen, kan verktøyene Hardinfo [3] og Hardware 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 som er tilgjengelig for øyeblikket

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

Som et utvalg av de ytterligere alternativene, gratis godtar forskjellige parametere som:

I figur 3 vises utdataene i megabyte ved hjelp av alternativet -m. Systemet har 4G RAM mens 725M for tiden er i bruk.

Minneinformasjon fra Linux-kjernesynspunktet

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

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
MemAvailable: 448824 kB
Buffere: 17828 kB
Bufret: 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
Uforståelig: 64 kB
Låst: 64 kB
Bytt totalt: 16150524 kB
SwapFree: 15668480 kB
Skitne: 3008 kB
Tilbakemelding: 0 kB
AnonPages: 2774656 kB
Kartlagt: 4414752 kB
Shmem: 59900 kB
Plate: 130216 kB
SRKrav: 61748 kB
SU-reclaim: 68468 kB
KernelStack: 7328 kB
Sidetabeller: 42844 kB
NFS_Unstable: 0 kB
Sprette: 0 kB
WritebackTmp: 0 kB
Forpliktelsesbegrensning: 20094876 kB
Forpliktet_AS: 10344988 kB
VmallocTotalt: 34359738367 kB
VmallocBrukt: 367296 kB
VmallocChunk: 34359345768 kB
Maskinvare ødelagt: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

For mer statistisk informasjon om CPU-bruk, minne og prosesser kan du ta en titt på verktøyene vmstat, og iostat (Debian-pakker procps og sysstat).

Arbeide med prosesser - ps, htop og pstree

For å vise de aktive prosessene i Linux-systemet ditt, bruk ps kommando. Vanligvis sorteres utdataene alfabetisk. Men ps kommando kan gjøre mye mer. Bruke alternativene aux --sorter -rss utgangen fra prosesslisten sorteres etter minnebruk i en ovenfra og ned rekkefølge. Figur 4 viser prosessene som har størst etterspørsel etter minne. Utgangen er sortert etter den sjette kolonnen med tittelen RSS, som forkorter Resident Set Size. Verdien er gitt i kilobyte.

Kommandoene ps, pstree og htop er nært beslektet når det gjelder informasjonen disse verktøyene viser. Både pstree og htop vise en graf for å visualisere prosessavhengighet. htop fungerer som en interaktiv versjon som lar deg bla prosesslisten opp og ned. Figur 5 viser htop på et stasjonært system med et utvalg av prosesser sortert etter deres spesifikke minnebruk (5. kolonne).

Finne prosesser som bruker bytt minne

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

Videre publiserte han allerede 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 skriptet fremdeles utmerket og viser hvordan man automatiserer oppgaver på et Linux-system. Derfor er vi sikre på at det er nyttig å vise det her igjen.

Resultatet av skriptet er som følger (kjør som rot brukeren henter full data):

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

Konklusjon

Linux-verktøykassen inneholder en endeløs liste over tilgjengelige programmer som hjelper deg med å analysere minnebruk av ditt Linux-system. Vi hadde bare en kort titt - fra rådata til forhåndsbehandlet informasjon - alt er der. Bare kjenn verktøyene dine. Å bli kjent med dem tar litt tid og leker med dem.

Dette er del 2 av serien om Linux Kernel Memory Management.  Del 1 diskuterer bytteminne, i del tre av denne serien vil vi diskutere hvordan du kan optimalisere bruken av minne. Dette inkluderer administrasjon av ramdisker samt komprimerte byttefiler.

Lenker og referanser

Linux Memory Management Series

Anerkjennelser

Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under utarbeidelsen av denne artikkelen.

Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...
Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...