A great new metric has been introduced in “/proc/meminfo” in the Linux 3.14 kernel — MemAvailable:
An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone.
The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.
I recommend that you read the kernel commit description for further details.
Since many people are still using Linux kernels before 3.14, I’ve backported this kernel patch to Perl. You can download the sources from GitHub: https://github.com/famzah/linux-memavailable-procfs
Many system administrators rely on the “free” tool to get a quick overview of the system’s memory usage. Unfortunately, the latest “procps” package still doesn’t interpret the “MemAvailable” metric, and even if it did, we don’t have it in Linux kernels before 3.14. Actually, the developers of the “procps-ng” package (which is the Debian, Fedora and openSUSE fork of “procps“) have reacted and did the same thing as me. For kernels before 3.14 they emulate the metric in the same way, and for kernels after 3.14, they display the native metric from “/proc/meminfo”. This makes my Perl port more or less redundant.
This is the reason I wrote a quick replacement of the “free” tool in Perl. A few examples of it follow.
Typical memory usage overview, in MBytes:
famzah@vbox:~$ ./free.pl -m
total used free anonymous kernel caches others
Mem: 2488 1228 1259 608 24 580 15
-/+ caches 648 1840
Swap: 1565 0 1565
Typical memory usage overview, in percentage:
famzah@vbox:~$ ./free.pl -mp
total used free anonymous kernel caches others
Mem: 2488 49% 51% 24% 1% 23% 1%
-/+ caches 26% 74%
Swap: 1565 0% 100%
Extended memory usage overview, in MBytes:
famzah@vbox:~$ ./free.pl -me
total used free anonymous kernel caches others
Mem: 2488 1228 1260 608 24 580 14
-/+ caches 647 1840
Swap: 1565 0 1565
Extended memory usage info:
Buffers 83
Cached 785
SwapCached 0
Shmem 308
AnonPages 300
Mapped 122
Unevict+Mlocked 5
Dirty+Writeback 0
NFS+Bounce 0
Extended memory usage overview, in percentage:
famzah@vbox:~$ ./free.pl -mep
total used free anonymous kernel caches others
Mem: 2488 49% 51% 24% 1% 23% 1%
-/+ caches 26% 74%
Swap: 1565 0% 100%
Extended memory usage info:
Buffers 3%
Cached 32%
SwapCached 0%
Shmem 12%
AnonPages 12%
Mapped 5%
Unevict+Mlocked 0%
Dirty+Writeback 0%
NFS+Bounce 0%
