Frequently Asked Question

What is the difference between Buffers and Cached in /proc/meminfo?

Both are part of the same page cache mechanism, but they account for different things. Cached is the size of the page cache for the contents of regular files, every block of every file you have read recently, sitting in RAM in case you read it again. Buffers is the much smaller cache of raw block-device data: filesystem metadata (inodes, directory blocks, journal buffers) and the staging area for in-flight I/O. Historically the two were separate subsystems in Linux 2.2; since 2.4 they share the same underlying pages, but the accounting kept the two labels for backwards compatibility.

On a typical desktop you might see a few hundred megabytes of Buffers and several gigabytes of Cached, the cache is dominated by file contents. On a machine doing very heavy metadata work (find over a million files, for example), Buffers can grow noticeably. Both are listed under "available" and both can be evicted under memory pressure. You almost never need to manage them by hand; the rare case is echo 3 > /proc/sys/vm/drop_caches for benchmarking, which forces the kernel to drop all clean caches.

Further reading and video