What common older versions of free are telling you

August 12, 2015

Yesterday I wrote about what free was really telling you, using the output (and manpage) from the version of free on Fedora 22. As Alan noted in a comment on my entry, there are actually two versions of free, with somewhat different output. The older version reports:

; free -m
             total   used   free  shared  buffers  cached
Mem:         16018  15760    258       3       72   12924
-/+ buffers/cache:   2763  13254
Swap:         3811     19   3792

This version is apparently on Debian machines and is definitely on Ubuntu up to 14.04 LTS and RHEL/CentOS up to RHEL 7, which covers most of the machines out there. The change in output turns out to have been introduced in procps-ng 3.3.10, which was released around September of 2014. Very few distributions seem to have picked up the new version, although it is in Debian testing (and Fedora, obviously).

(Although Debian and Ubuntu call the package 'procps', they're actually using procps-ng. The history here is tangled.)

The useful thing to know here is that in this older version of free, what is reported in cached is only the /proc/meminfo Cached field. The Slab memory usage is not reported anywhere, which matters because a certain amount of kernel caches are actually in slabs, not in the page cache.

So, you might ask, how much kernel memory is typically used in slabs? The answer appears to be 'generally not much'. On our fleet of machines slab usage seems to typically run in the 150 MB to 300 MB range; several machines have several hundred MB, and a few exceptions have around 1 GB to 1.5 GB of slab usage. My office workstation is a drastic outlier, but that's because ZFS on Linux currently puts much of the ZFS ARC into the slab allocation system instead of having it as part of the page cache.

(On our big-slab machines, 'slabtop -s c' says that most of the slab usage seems to be eaten up by dentry and inode slabs, either for local filesystems or for NFS depending on the machine.)

(This is yet another case where writing entries here has turned out to be educational.)

Written on 12 August 2015.
« What free is really telling you, and some bits from /proc/meminfo
Enabling services on package updates is a terrible mistake »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Aug 12 01:38:49 2015
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.