When a Linux server experiences high memory pressure or an Out-Of-Memory (OOM) killer process termination, running free -m only tells part of the story. The virtual file /proc/meminfo provides a real-time window directly into the Linux kernel’s virtual memory allocator (VMA), page cache, and swap subsystem.

Decoding Key /proc/meminfo Metrics

Sample /proc/meminfo Outputtext
$ cat /proc/meminfo
MemTotal:       16308544 kB
MemFree:         1205432 kB
MemAvailable:   11850124 kB
Buffers:          345120 kB
Cached:          9850120 kB
Active:          8450120 kB
Inactive:        3120450 kB
Dirty:              1240 kB
Slab:            1250400 kB

Metric Breakdown & Misconceptions:

  • `MemFree` vs `MemAvailable`: MemFree is unused RAM sitting idle. MemAvailable is the true metric for available memory—it estimates how much RAM can be reclaimed from page caches without causing disk thrashing.

  • `Buffers` & `Cached`: RAM allocated by the kernel for disk block caches and file system page caches. The kernel automatically frees this memory when application processes request RAM.

  • `Active` vs `Inactive`: Active pages were accessed recently and will not be swapped out. Inactive pages are candidates for page eviction or swap paging.