Minne

Kommandon för att hantera Linux-minne

Kommandon för att hantera Linux-minne
UNIX / Linux-system innehåller ett kommandoradsverktyg för nästan allt. Detta inkluderar även program för att hantera minnet. I den här artikeln visar vi dig ett urval av kommandon som är bra för dig som Linux-användare.

Upptäck hårdvaran med hjälp av dmidecode

Automatisk maskinvarudetektering har alltid varit lite som ett lotteri, men det har blivit bättre under de senaste åren eftersom många tillverkare dokumenterar sina produkter mer detaljerat och har specifik information tillgänglig online också. För att ta reda på hårdvaruinformationen om RAM-minne installerat i din maskin, använd dmidecode kommando (paket för Debian GNU / Linux, Ubuntu och Linux Mint: dmidecode).

Bland annat rapporterar detta verktyg detaljerad information om installerade systemkomponenter som processor, baseboard och RAM. Informationen är baserad på Desktop Management Interface (DMI) [1], som är ett ramverk som klassificerar de enskilda komponenterna på en stationär dator, bärbar dator eller server genom att abstrahera dessa komponenter från programvaran som hanterar dem [2]. Alternativet --skriv minne avser minnesenheter. För andra DMI-klasser, se manualsidan för dmidecode.

# dmidecode --typminne
# dmidecode 2.12
SMBIOS 2.7 närvarande.
Handtag 0x0007, DMI typ 16, 23 byte
Fysiskt minnesarray
Plats: moderkort eller moderkort
Användning: Systemminne
Felkorrigeringstyp: Ingen
Max kapacitet: 16 GB
Felinformationshandtag: Medföljer inte
Antal enheter: 1
Handtag 0x0008, DMI typ 17, 34 byte
Minnesenhet
Arrayhandtag: 0x0007
Felinformationshandtag: Medföljer inte
Total bredd: 64 bitar
Databredd: 64 bitar
Storlek: 8192 MB
Formfaktor: SODIMM
Set: Ingen
Sökare: ChannelA-DIMM0
Banklokal: BANK 0
Typ: DDR3
Typdetalj: synkron
Hastighet: 1600 MHz
Tillverkare: Samsung
Serienummer: 25252105
Tillgångsmärke: Ingen
Artikelnummer: M471B1G73DB0-YK0
Rank: Okänd
Konfigurerad klockhastighet: 1600 MHz

Denna maskin är för närvarande utrustad med 8G DDR3 RAM med en konfigurerad klockhastighet på 1600 MHz. Som du kan se är den maximala tillgängliga kapaciteten för inbyggt RAM 16G vilket innebär att den kan utökas med en andra 8G-modul.

Grafisk information om minnet

Om du föredrar ett grafiskt gränssnitt för att hämta denna information kan verktygen Hardinfo [3] och Hardware Lister (GTK + version) [4] vara av intresse för dig. På Debian GNU / Linux, Ubuntu och Linux Mint är dessa program tillgängliga via paketen hardinfo och lshw-gtk. Figur 2 visar användargränssnittet för Hardinfo som visar minnesinformation på en Xubuntu-installation.

Hur mycket minne som för närvarande är tillgängligt

Ibland är mindre mer. På kommandoraden finns information om minnet tillgänglig via fri kommando. På Debian GNU / Linux, Ubuntu och Linux Mint är detta program en del av procps-paketet [5]. Figur 2 visar utdata i ett terminalfönster.

Som ett urval av de ytterligare alternativen, fri accepterar olika parametrar som:

I figur 3 visas utdata i megabyte med alternativet -m. Systemet har 4G RAM medan 725M för närvarande används.

Minnesinformation från Linux-kärnans synvinkel

Verktygen som nämns ovan är beroende av rå information som finns i proc-filsystemet i Linux-kärnan. För att visa dessa uppgifter matar du ut innehållet i filen / proc / meminfo använda katt verktyg i en terminal:

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
MemAvailable: 448824 kB
Buffertar: 17828 kB
Cachat: 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
Oförutsägbar: 64 kB
Låst: 64 kB
SwapTotal: 16150524 kB
SwapFree: 15668480 kB
Smutsig: 3008 kB
Återskrivning: 0 kB
AnonPages: 2774656 kB
Mappad: 4414752 kB
Shmem: 59900 kB
Plattan: 130216 kB
SRKrav: 61748 kB
SU-reclaim: 68468 kB
KernelStack: 7328 kB
Sidtabeller: 42844 kB
NFS_Unstable: 0 kB
Studs: 0 kB
WritebackTmp: 0 kB
CommitLimit: 20094876 kB
Committed_AS: 10344988 kB
VmallocTotalt: 34359738367 kB
Vmalloc Används: 367296 kB
VmallocChunk: 34359345768 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugesidesstorlek: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

För mer statistisk information om CPU-användning, minne och processer kan du titta på verktygen vmstat, och iostat (Debian-paket procps och sysstat).

Arbeta med processer - ps, htop och pstree

För att visa de aktiva processerna i ditt Linux-system använder du ps kommando. Vanligtvis sorteras utdata alfabetiskt. Men ps kommandot kan göra mycket mer. Använda alternativet aux --sortera -rss utgången från processlistan sorteras efter deras minnesanvändning i uppifrån och ner-ordning. Figur 4 visar de processer som har högst behov av minne. Utdata sorteras efter den sjätte kolumnen med titeln RSS som förkortar Resident Set Size. Värdet anges i kilobyte.

Kommandona ps, pstree och htop är nära besläktade när det gäller den information dessa verktyg visar. Både pstree och htop visa en graf för att visualisera processberoenden. htop fungerar som en interaktiv version som låter dig bläddra upp processlistan upp och ner. Figur 5 visar htop på ett stationärt system med ett urval av processer sorterade efter deras specifika minnesanvändning (5: e kolumnen).

Hitta processer som använder Swap-minne

Ju fler processer lanseras desto mer minne används samtidigt. Så snart ditt Linux-system tar slut på oanvända minnessidor, bestämmer Linux-kärnan att byta minnessidor till disk med LRU-metoden (Least Recently Used). För att besvara frågan, vilka processer som använder swap-minne och hur mycket som används i synnerhet, kan du ta en titt på utgången från topprogrammet. 2016 publicerade Erik Ljungstrom en kort beskrivning av hur man hämtar den informationen och utvidgar den här kolumnen till utsidan av toppen [6]. Figur 6 visar denna utgång på ett system som har gott om minnessidor i RAM kvar och som för närvarande inte använder Swap.

Dessutom publicerade han redan 2011 ett bash-skript som utvärderar informationen från proc-filsystemet för att visa användningen av swap-processen efter process [7]. Till och med 7 år senare och redan beskrivet som föråldrat är skriptet fortfarande utmärkt och visar hur man automatiserar uppgifter i ett Linux-system. Det är därför vi är säkra på att det är bra att visa det här igen.

Skriptets utdata är som följer (kör som rot användaren hämta fullständiga data):

# ./byta.sh
PID = 1 - Använd byte: 0 - (systemd)
PID = 2 - Använd byte: 0 - (kthreadd)
PID = 3 - Använd byte: 0 - (ksoftirqd / 0)
PID = 5 - Använd byte: 0 - (kworker / 0: 0H)
PID = 6 - Använd byte: 0 - (kworker / u16: 0)
PID = 7 - Använd byte: 0 - (rcu_sched)
PID = 8 - Använd byte: 0 - (rcu_bh)
PID = 9 - Använd byte: 0 - (migration / 0)
PID = 10 - Använd byte: 0 - (vakthund / 0)
PID = 11 - Använd byte: 0 - (vakthund / 1)
PID = 12 - Använd byte: 0 - (migration / 1)
PID = 13 - Använd byte: 0 - (ksoftirqd / 1)
PID = 15 - Använd byte: 0 - (kworker / 1: 0H)
PID = 16 - Använd byte: 0 - (vakthund / 2)
PID = 17 - Använd byte: 0 - (migration / 2)
PID = 18 - Använd byte: 0 - (ksoftirqd / 2)
PID = 20 - Använd byte: 0 - (kworker / 2: 0H)
..
#

Slutsats

Linux-verktygslådan innehåller en oändlig lista över tillgängliga program som hjälper dig att analysera minnesanvändningen i ditt Linux-system. Vi tittade bara på en kort titt - från rådata till förbehandlad information - allt finns där. Känn bara dina verktyg. Att lära känna dem tar lite tid och spelar med dem.

Detta är del 2 av serien om Linux Kernel Memory Management.  Del 1 diskuterar bytminne, i del tre av denna serie kommer vi att diskutera hur man kan optimera minnesanvändningen. Detta inkluderar hantering av ramdisks såväl som komprimerade swap-filer.

Länkar och referenser

Linux Memory Management Series

Bekräftelser

Författaren vill tacka Mandy Neumeyer och Gerold Rupprecht för deras stöd när han förberedde denna artikel.

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...