Het geheugen van een systeem bepaalt in veel gevallen de prestaties van een Linux systeem. Linux heeft dan ook een pak hulpmiddelen om het geheugengebruik te analyseren. De verschillende hulpmiddelen verschillen door de aangeboden informatie (systeem, per proces, per gebruiker), weergave (grafisch, terminal, ncurses), enz.
De eenvoudigste manier om het RAM gebruik te controleren is via /proc/meminfo.
Dit virtueel bestand wordt constant aangepast en is de informatiebron van hulpmiddelen zoals free, top en ps.
Het bevat informatie over beschikbaar/vrij fysiek geheugen, de grootte van de buffer die klaar staat om naar de schijf weggeschreven te worden, enz.
Proces specifieke geheugeninformatie is beschikbaar via /proc/
dany@laptop:~> cat /proc/meminfo
MemTotal: 8089288 kB
MemFree: 3778560 kB
MemAvailable: 7282956 kB
Buffers: 133408 kB
Cached: 3290368 kB
SwapCached: 0 kB
Active: 1832840 kB
Inactive: 2116084 kB
Active(anon): 528140 kB
Inactive(anon): 101540 kB
Active(file): 1304700 kB
Inactive(file): 2014544 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8387580 kB
SwapFree: 8387580 kB
Dirty: 136 kB
Writeback: 0 kB
AnonPages: 525148 kB
Mapped: 274012 kB
Shmem: 104532 kB
Slab: 266680 kB
SReclaimable: 227488 kB
SUnreclaim: 39192 kB
KernelStack: 5408 kB
PageTables: 30996 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 12432224 kB
Committed_AS: 2331116 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 366556 kB
VmallocChunk: 34358947836 kB
HardwareCorrupted: 0 kB
AnonHugePages: 262144 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 149936 kB
DirectMap2M: 5007360 kB
DirectMap1G: 4194304 kB
De free opdracht is een snelle en eenvoudige manier om een overzicht te krijgen van het geheugengebruik op bais van /proc/meminfo. Het toont een momentopname van de totale/vrije geheugencapaciteit en swap geheugen van het systeem. Daarnaast wordt de gebruikte en vrije kernel bufferruimte weergegeven.
dany@laptop:~> free
total used free shared buffers cached
Mem: 8089288 4313036 3776252 104532 133624 3518068
-/+ buffers/cache: 661344 7427944
Swap: 8387580 0 8387580
Gnome heeft de Gnome Systeemmonitor en KDE de KDE Systeemmonitor. Beiden tonen real time een tijdlijn met de Systeembelasting en een Processen met per proces de CPU en geheugenbelasting.
De ps opdracht kan per proces het geheugengebruik weergeven. De geheugeninformatie bevat %MEM (procentueel gebruik van totale fysieke geheugen), VSZ (hoeveelheid gebruikt virtueel geheugen) en RSS (hoeveelheid gebruikt fysiek geheugen). Je kunt de gegevens sorteren met de --sort optie. Het volgende voorbeeld sorteert op dalend RSS:
dany@laptop:~> ps aux --sort -rss
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dany 1759 0.1 2.8 5241296 232808 ? Sl 14:33 0:29 /usr/bin/plasmashell --shut-up
dany 1747 0.0 1.7 6784600 141196 ? Sl 14:33 0:03 /usr/bin/krunner
mysql 1112 0.0 1.2 981020 98740 ? Ssl 14:33 0:16 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql
dany 1745 0.3 1.1 3036104 95728 ? Sl 14:33 1:10 kwin_x11 -session 1018f16a16215a000144672971100000014460002_14564302
dany 1707 0.0 0.7 1428580 60356 ? Sl 14:33 0:03 kded5 [kdeinit5]
dany 1731 0.0 0.6 1234324 49888 ? Sl 14:33 0:00 /usr/bin/ksmserver
dany 5177 0.0 0.5 1168556 45384 ? Sl 15:35 0:00 /usr/bin/knotify4
root 1449 0.7 0.5 272960 45104 tty7 Ssl+ 14:33 2:30 /usr/bin/X -nolisten tcp -auth /run/sddm/{2726bee3-364a-437f-9717-80
root 6752 0.0 0.5 819772 40528 ? Sl 16:34 0:00 /usr/bin/kactivitymanagerd start-daemon
dany 1733 0.0 0.4 819956 38176 ? Sl 14:33 0:01 /usr/bin/kactivitymanagerd start-daemon
dany 1766 0.0 0.4 520340 35508 ? Sl 14:33 0:00 /usr/lib64/libexec/polkit-kde-authentication-agent-1
dany 1742 0.0 0.4 435020 35036 ? Sl 14:33 0:00 /usr/bin/kglobalaccel5
root 402 0.0 0.4 100716 34792 ? Ss 14:33 0:00 /usr/lib/systemd/systemd-journald
dany 1770 0.0 0.3 427552 31656 ? Sl 14:33 0:00 /usr/bin/xembedsniproxy
root 6625 0.0 0.3 428852 30680 ? Sl 16:32 0:00 klauncher [kdeinit5] --fd=8
dany 1705 0.0 0.3 456500 30612 ? Sl 14:33 0:00 klauncher [kdeinit5] --fd=9
dany 1918 0.0 0.3 280176 29864 ? S 14:33 0:00 kdeinit4: kded4 [kdeinit]
dany 1734 0.0 0.3 443160 29748 ? Sl 14:33 0:00 /usr/bin/kaccess
root 7065 0.0 0.3 301604 29644 ? Ss 16:50 0:00 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C Pi
dany 1976 0.0 0.3 275396 29336 ? S 14:33 0:00 /usr/bin/kuiserver
dany 1704 0.0 0.2 305476 23416 ? Ss 14:33 0:00 kdeinit5: Running...
dany 1746 0.0 0.2 5498208 20256 ? SN 14:33 0:00 /usr/bin/baloo_file
polkitd 917 0.0 0.2 519756 19364 ? Ssl 14:33 0:00 /usr/lib/polkit-1/polkitd --no-debug
wwwrun 7072 0.0 0.2 301808 17772 ? S 16:50 0:00 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C Pi
dany 1912 0.0 0.2 187608 17372 ? S 14:33 0:00 kdeinit4: klauncher [kdeinit] --fd=8
wwwrun 7071 0.0 0.2 301808 16904 ? S 16:50 0:00 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C Pi
dany 1910 0.0 0.2 167928 16324 ? Ss 14:33 0:00 kdeinit4: kdeinit4 Running...
dany 1792 0.0 0.1 266508 15996 ? Sl 14:33 0:00 /usr/lib64/libexec/kf5/kscreen_backend_launcher
root 1407 0.0 0.1 104532 14136 ? S 14:33 0:00 /usr/bin/sddm
root 919 0.0 0.1 330272 14100 ? Ssl 14:33 0:00 /usr/sbin/NetworkManager --no-daemon
root 1977 0.0 0.1 257064 14064 ? Ss 14:33 0:00 /usr/sbin/smbd -D
root 1569 0.0 0.1 137828 13224 ? S 14:33 0:00 /usr/lib/sddm/sddm-helper --socket /tmp/sddm-authcef6576c-1d49-4e2c-
...
De top opdracht toont real time een overzicht van de processen met hun eigen specifieke systeembelasting. De geheugen gerelateerde informatie bestaat uit %MEM (geheugengebruik in procent), VIRT (virtueel geheugengebruik), SWAP (virtueel geheugen op de schijf), CODE (fysiek geheugen voor het uitvoeren van code), DATA (fysiek geheugen voor gegevens), RES (fysiek geheugen: CODE + DATA) en SHR (geheugen gedeeld met andere processen). Daarenboven kan je de proceslijst sorteren op geheugengrootte. De top opdracht breek je af met Ctrl+c.
top - 20:22:08 up 5:48, 2 users, load average: 0,00, 0,01, 0,07 Tasks: 214 total, 1 running, 213 sleeping, 0 stopped, 0 zombie %Cpu(s): 0,1 us, 0,0 sy, 0,0 ni, 99,9 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st KiB Mem: 8089288 total, 4319636 used, 3769652 free, 136964 buffers KiB Swap: 8387580 total, 0 used, 8387580 free. 3531608 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1091 ntp 20 0 97736 4788 4192 S 0,332 0,059 0:01.65 ntpd 8681 dany 20 0 15364 2752 2192 R 0,332 0,034 0:01.36 top 1 root 20 0 181076 5776 3384 S 0,000 0,071 0:03.48 systemd 2 root 20 0 0 0 0 S 0,000 0,000 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0,000 0,000 0:00.22 ksoftirqd/0
De vmstat opdracht toont actuele en gemiddelde waarden van verschillende systeemactiviteiten waaronder CPU, geheugen, interrupts en schijfactiviteit. De geheugeninformatie bevat het fysiek gebruikt geheugen (total/used memory en buffer/cache memory) en virtueel gebruikt geheugen (memory paged in/out, swapped in/out).
dany@laptop:~> vmstat -s
8089288 K total memory
4319252 K used memory
1838952 K active memory
2116720 K inactive memory
3770036 K free memory
136988 K buffer memory
3531648 K swap cache
8387580 K total swap
0 K used swap
8387580 K free swap
76705 non-nice user cpu ticks
1284 nice user cpu ticks
65728 system cpu ticks
8240392 idle cpu ticks
4991 IO-wait cpu ticks
2 IRQ cpu ticks
293 softirq cpu ticks
0 stolen cpu ticks
3721497 pages paged in
2052532 pages paged out
0 pages swapped in
0 pages swapped out
5973290 interrupts
19882540 CPU context switches
1456493624 boot time
8746 forks