6.6. buffermem 参数

buffermem 文件也与 Linux 内核的虚拟内存 VM 子系统的操作密切相关。此文件中的值/proc/sys/vm/buffermem控制应该用于缓冲区内存的内存百分比。重要的是要注意,该百分比是根据系统总内存的百分比计算的。

Red Hat Linux 下 buffermem 参数的默认设置是"2 10 60"

Version 6.1 only

要更改 buffermem 的值,请在终端上键入以下命令
            [root@deep] /# echo "70 10 60" >/proc/sys/vm/buffermem
            
您可以将上述命令添加到/etc/rc.d/rc.local脚本文件中,下次重启系统时您不必再次键入它。

Version 6.2 only

编辑/etc/sysctl.conf文件并添加以下行
            # Improve virtual memory performance
            vm.buffermem = 70 10 60
            
您必须重启网络才能使更改生效。手动重启网络的命令如下
            [root@deep] /# /etc/rc.d/init.d/network restart
            

设置网络参数 [ 确定 ] 启动接口 lo [ 确定 ] 启动接口 eth0 [ 确定 ] 启动接口 eth1 [ 确定 ]

根据/usr/src/linux/Documentation/sysctl/vm.txt文件,第一个参数 80% 表示使用至少 80% 的内存用于缓冲区缓存;即应该用于缓冲区内存的最小内存百分比。最后两个参数 10 和 60 系统未使用,因此我们无需更改默认值。

根据服务器中 RAM 的数量,80% 的值可能会有所不同。当您的服务器负载很高并且所有应用程序都在使用时,您可以详细了解系统需要和使用了多少内存。对于 RAM 低于 256 MB 的系统,buffermem 参数的 80% 似乎太多了。在提示符下执行 free-m命令,您的系统将显示系统中可用和已用内存量。执行此命令 free -m 后,检查-/+ buffers/cache值,并获取与最小 (-) 相关的那个值,以设置您的 buffermem 值。

示例 6-1. 对于 128 MB RAM

              128 * 80% = 102.4 MB
              128 - 102.4 = 25.6 MB
              
                [root@deep] /#free -m
                

                              total       used       free     shared    buffers       cached
                Mem:            124        121          3         30         43           48
                -/+ buffers/cache:          29         95
                Swap:           128          2        126
                
结果表明-/+ buffers/cache至少需要 29 MB 才能正常运行系统,而在 128 MB RAM 设置为 80% 的情况下,我们只有 25.6 MB 可用。嗯!问题,我猜。所以我们回到计算器再次这样做
                128 * 70% = 89.6
                128 - 89.6 = 38.4 MB                
              
很好地解决了!

Tip: 查看/usr/src/linux/Documentation/sysctl/vm.txt以获取有关如何改进与虚拟内存相关的内核参数的更多信息。