Linux buffer memory always stays at zero

One of my hosted server is a Xen guest running Debian and linux kernel 2.6.32 then 2.6.38. It has been running fine for quite some time (more than a year) but I recently noticed something weird. For a few months, the part of the memory allocated to buffers (disk I/O, network) always stays at zero.

The output of free is looking like that:

             total       used       free     shared    buffers     cached
Mem:       2071148    1775284     295864          0          0    1139388
-/+ buffers/cache:     635896    1435252
Swap:       524280      19508     504772

The buffers column always print 0, no matter the usage of the server (this is quite a busy mail server running postfix and courier).

Here is some more information:

  • /proc/meminfo and /proc/slabinfo output: http://pastebin.com/raw.php?i=M8wSkj0S
  • atsar -p (paging/swapping) output from a regular day: http://pastebin.com/VwLdf1L1 (it shows there is little swapping involved)

I also have the impression, but I cannot really measure it, that the system is slow at reading some files, files that are barely used or big files like logs. Hence my wondering if this buffers memory could be misconfigured in some way and that the disk throughput could be increased.

However, it seems there is no linux kernel parameter to govern that buffers memory, at least nothing like the parameters that exist for the cached memory. Or maybe I missed something?

How can this memory always be zero? Is this something I should worry about? How can I possibly change this behavior to put some RAM to better use if it is actually feasible?

Update: After a kernel upgrade (2.6.38 custom kernel from my provider), the behavior remains the same with buffers staying at 0. This is lasting for more than a year now, with the server being quite heavily used (mail server for about 2 hundred users). This server has been running Debian 6 and is now happily running Debian 7. Buffer memory still remaining at 0!


Solution 1:

buffer memory should not be 0, technically, unless the server is idle and doing absolutely nothing. Still then I would expect some buffer usage.

You say that you are noticing this recently. Have anything changed in the server recently.

You are swapping a bit, which could have a detrimental effect on performance but that should have nothing to do with buffer. And performance is a different question and buffer showing 0 is another.

Can you grab these outputs and pastebin them.

cat /proc/meminfo 
cat /proc/slabinfo
mount