Linux 缓冲内存始终保持为零

Linux 缓冲内存始终保持为零

我的托管服务器之一是运行 Debian 和 Linux 内核 2.6.32 和 2.6.38 的 Xen 客户机。它已经运行了相当长一段时间(超过一年),但最近我发现有些奇怪。几个月来,分配给缓冲区(磁盘 I/O、网络)的内存部分始终保持为零。

free 的输出如下所示:

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

buffers无论服务器的使用情况如何,该列始终打印 0(这是一个运行 postfix 和 courier 的相当繁忙的邮件服务器)。

以下是更多信息:

我也有这种印象,但我无法真正测量它,即系统在读取某些文件(几乎不使用的文件或日志等大文件)时很慢。因此,我想知道这个buffers内存是否在某种程度上配置错误,以及磁盘吞吐量是否可以增加。

但是,似乎没有 Linux 内核参数来管理该buffers内存,至少没有像cached内存中存在的参数那样的参数。或者我可能错过了什么?

这个内存怎么会一直为零?这是我应该担心的事情吗?如果确实可行,我该如何改变这种行为以更好地利用一些 RAM?

更新:内核升级后(我的提供商提供的 2.6.38 定制内核),行为保持不变,缓冲区保持在 0。这种情况持续了一年多,服务器使用率很高(邮件服务器约有 200 名用户)。该服务器一直运行 Debian 6,现在运行 Debian 7,运行顺利。缓冲区内存仍然保持在 0!

答案1

从技术上讲,缓冲区内存不应为 0,除非服务器处于空闲状态且什么也不做。但即便如此,我还是希望使用一些缓冲区。

你说你最近注意到了这一点。服务器最近有什么变化吗?

你交换了一点,这可能会对性能产生不利影响,但这应该与缓冲区无关。性能是另一个问题,缓冲区显示 0 又是另一个问题。

您可以抓取这些输出并将它们粘贴到 pastebin 中吗?

cat /proc/meminfo 
cat /proc/slabinfo
mount

相关内容