Memory used by kernel buffers (Buffers in /proc/meminfo)
Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
Sum of buffers and cache
Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by the cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in /proc/meminfo, available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free)
1. What is the difference between “buffer”, and the other type of cache?
Buffers reports the amount of page cache used for block devices. The kernel has to deliberately subtract this amount from the rest of the page cache when it reports Cached.
Early UNIX had a “buffer cache” of disk blocks, and did not have mmap(). Apparently when mmap() was first added, they simply bolted the page cache on top of the buffer cache. This is as messy as it sounds. Eventually, UNIX-based OS’s got rid of the buffer cache. So now all file cache is in units of pages. Pages are looked up by (file, offset), not by location on disk. This was called “unified buffer cache”, perhaps because people were more familiar with “buffer cache”.
4. Why might we expect Buffers in particular to be larger or smaller?
In this case it turns out the ext4 journal size for my filesystem is 128M. So this explains why 1) my buffer cache can stabilize at slightly over 128M; 2) buffer cache does not scale proportionally with the larger amount of RAM on my laptop.
For some other possible causes, see What is the buffers column in the output from free? Note that “buffers” reported by free is actually a combination of Buffers and reclaimable slab memory.