I noticed that the free
command reporting has changed somewhere between Trusty and Xenial. Here is what `free -m' shows on one of my Trusty computers:
$ free -m
total used free shared buffers cached
Mem: 7916 7645 271 99 455 1764
-/+ buffers/cache: 5426 2490
Swap: 24999 805 24194
Here is the equivalent on (a different) Xenial system:
$ free -m
total used free shared buff/cache available
Mem: 3553 1192 857 16 1504 2277
Swap: 3689 0 3689
The +/- buffers/cache line, which I mainly used to look at, is gone. How should I interpret the new numbers?
- Does Mem used/free include buffers and cache or not?
- Which numbers are the equivalent of the used and free numbers on the "+/- buffers/cache" line of the earlier version?
Best Answer
Please consider the sample output I got from the
free
command in myUbuntu 12.04
:The Mem
used
(kb_main_used) field value is now calculated like this:Previously, it used to be:
This change was introduced in the following commit https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9
An intermediate value:
+/- buffers/cache value is calculated like this:
The new buff/cache value is calculates like this:
This is the same as the
buffers_plus_cached
, used in previous versions, the difference is that previously it was used internally, and now its displayed directly, and the further calculated line,-/+ buffers/cache
has been removedFor more info, please check these commits, where these changes were introduced: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8
As of the new
available
field, for Linux kernels older than 2.6.27, its value is the same as thefree
value, but for the later versions of the Kernel, its a bit different:Courtesy: http://manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html
So, the specific answer to your questions would be:
free
includes buffers/cache in the calculations ofMem used/free
values.+/- buffers/cache
value that used to be there in previous versions offree
is now available as:used
= CurrentMem used
column (Its calculation is detailed above)free
is available as the more accurate value in the current new columnavailable
N.B: The
kb_*
variable names are the internal names used in the source code.