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 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:
-b (--bytes):
vis utdata som byte-k (--kilo):
viser utdata som kilobyte-m (--mega):
viser utdata som megabyte-g (--giga):
viser utdata som gigabyte--tera:
viser utdata som terabyte-h (--human):
viser utdataene i lesbart format
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:
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):
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
- [1] DMI ved Distribuert Management Task Force (DMTF)
- [2] DMI på Wikipedia
- [3] Hardinfo
- [4] lshw-gtk (Debian-pakke for Stretch)
- [5] rekvisitter (Debian-pakke for Stretch)
- [6] Erik Ljungstrom: Finn ut hva som bruker byttet ditt
- [7] Erik Ljungstrom: Bytt bruk - 5 år senere
Linux Memory Management Series
- Del 1: Linux Kernel Memory Management: Swap Space
- Del 2: Kommandoer for å administrere Linux-minne
- Del 3: Optimalisering av Linux-minnebruk
Anerkjennelser
Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under utarbeidelsen av denne artikkelen.