I have computer handling various functions for our community radio station, including processing the program audio for broadcast. It's running remotely and sends daily health emails for me to keep an eye on its status. I am seeing free memory drop - by quite a lot - over the course of a few days and can't account where it is going.
The report contains the output of "free" and the top 20 processes using memory:
ps -eo comm:15,pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 20
Two days ago:
Memory stats as of 10/17/2023
total used free shared buff/cache available
Mem: 12Gi 3.1Gi 7.4Gi 160Mi 2.1Gi 9.0Gi
Swap: 0B 0B 0B
Total: 12Gi 3.1Gi 7.4Gi
MEM stats
COMMAND PID PPID CMD %MEM %CPU
ST_FM 2214 1 /home/kpov_tech/Desktop/Ste 4.6 24.1
ST_Stream 2256 1 /home/kpov_tech/Desktop/Ste 4.5 21.6
plasmashell 1759 1689 /usr/bin/plasmashell 2.0 0.2
kwin_x11 1721 1689 /usr/bin/kwin_x11 1.8 10.7
fluidsynth 1538 1528 /usr/bin/fluidsynth -is /us 1.8 0.0
kded5 1718 1689 /usr/bin/kded5 1.8 0.0
audacious 871581 827042 /usr/bin/audacious --play 1.6 1.6
Xorg 1259 1218 /usr/lib/xorg/Xorg -noliste 1.3 16.8
dolphin 774584 1759 /usr/bin/dolphin 1.2 0.1
kwrite 44322 1 /usr/bin/kwrite /home/kpov_ 1.1 0.1
konsole 2097 1 konsole --noclose --profile 1.0 0.1
raysession 2307 1 /usr/bin/python3 -u /usr/sh 1.0 0.3
jackd 2111 2097 /usr/bin/jackd -v -d alsa - 1.0 0.7
zita-mu1 2173 1 /usr/bin/zita-mu1 -name MON 0.9 0.4
ebumeter 2191 1 ebumeter -name ebu_Raw_MCR 0.9 1.0
ebumeter 2207 1 ebumeter -name ebu_ListenLi 0.9 0.9
ebumeter 2200 1 ebumeter -name ebu_ST_FM 0.9 0.9
ebumeter 2184 1 ebumeter -name ebu_ST_Strea 0.9 0.9
ray-jackpatch_t 2330 1 /usr/bin/python3 -u /usr/sh 0.9 0.1
Today:
Memory stats as of 10/19/2023
total used free shared buff/cache available
Mem: 12Gi 3.8Gi 529Mi 155Mi 8.2Gi 8.2Gi
Swap: 0B 0B 0B
Total: 12Gi 3.8Gi 529Mi
MEM stats
COMMAND PID PPID CMD %MEM %CPU
ST_FM 2214 1 /home/kpov_tech/Desktop/Ste 4.6 24.1
ST_Stream 2256 1 /home/kpov_tech/Desktop/Ste 4.5 21.8
plasmashell 1759 1689 /usr/bin/plasmashell 2.4 0.2
fluidsynth 1538 1528 /usr/bin/fluidsynth -is /us 1.8 0.0
kwin_x11 1721 1689 /usr/bin/kwin_x11 1.8 9.5
audacious 871581 827042 /usr/bin/audacious --play 1.5 1.6
Xorg 1259 1218 /usr/lib/xorg/Xorg -noliste 1.2 16.4
dolphin 3467064 1759 /usr/bin/dolphin 1.1 0.1
kwrite 44322 1 /usr/bin/kwrite /home/kpov_ 1.0 0.1
kded5 1718 1689 /usr/bin/kded5 1.0 0.0
jackd 2111 2097 /usr/bin/jackd -v -d alsa - 1.0 0.7
konsole 2097 1 konsole --noclose --profile 1.0 0.0
raysession 2307 1 /usr/bin/python3 -u /usr/sh 1.0 0.3
xdg-desktop-por 3450540 1528 /usr/lib/x86_64-linux-gnu/l 0.9 0.0
zita-mu1 2173 1 /usr/bin/zita-mu1 -name MON 0.9 0.4
ebumeter 2191 1 ebumeter -name ebu_Raw_MCR 0.9 1.0
ebumeter 2207 1 ebumeter -name ebu_ListenLi 0.9 0.9
ebumeter 2200 1 ebumeter -name ebu_ST_FM 0.9 0.9
ebumeter 2184 1 ebumeter -name ebu_ST_Strea 0.9 0.9
It looks to me that something like 7Gi of Free memory has evaporated. How can I find out what is using it?
sync; echo 1 > /proc/sys/vm/drop_caches
will drop cache in the " buff/cache" column. Change to 2 or 3 for more aggressive clearing. 3 is likely to slow your system down for a couple of seconds. If that clears free up don't worry about it. It is what it says... a buffer/cache ;) The "available" column is the important one :) – Rinzwind Oct 19 '23 at 14:288.2Gi
"buff/cache" is technically free considering used memory pages ... It's used for caching disk I/O operations, but is readily available when needed ... So, consider it as free. – Raffa Oct 19 '23 at 14:30