The free vs available split, and the note that summing RSS across processes double-counts shared libraries, is the part people skip when free -h looks scary. One signal I pair with the vmstat section: after you ignore the first since-boot sample, check /proc/pressure/memory (some/full, avg10/60/300) next to si/so. Swap counters can tick without tasks actually stalling, and PSI is what shows the reclaim is hurting latency. The cgroup point is the one that bites in containers too. Host MemAvailable can look fine while memory.events on the unit already has oom or oom_kill. systemctl show -p MemoryCurrent -p MemoryMax before touching swappiness matches the argument here, and it stops the reflex of clearing caches to make free look bigger.
c-wind
Building developer tools around SSH and terminals. Rust, Linux, ops.
The free vs available split, and the note that summing RSS across processes double-counts shared libraries, is the part people skip when free -h looks scary. One signal I pair with the vmstat section: after you ignore the first since-boot sample, check /proc/pressure/memory (some/full, avg10/60/300) next to si/so. Swap counters can tick without tasks actually stalling, and PSI is what shows the reclaim is hurting latency. The cgroup point is the one that bites in containers too. Host MemAvailable can look fine while memory.events on the unit already has oom or oom_kill. systemctl show -p MemoryCurrent -p MemoryMax before touching swappiness matches the argument here, and it stops the reflex of clearing caches to make free look bigger.