6.5. bdflush 参数

bdflush 文件与 Linux 内核的虚拟内存 VM 子系统的运行密切相关,并且对磁盘使用有轻微影响。此文件/proc/sys/vm/bdflush控制 bdflush 内核守护进程的运行。我们通常调整此文件以提高文件系统性能。通过更改一些默认值(如下所示),系统似乎响应更快;例如,它会等待更长时间才写入磁盘,从而避免一些磁盘访问争用。

Red Hat Linux 下 bdflush 参数的默认设置是"40 500 64 256 500 3000 500 1884 2"要更改 bdflush 的值,请在终端上键入以下命令

Version 6.1 only

          [root@deep] /# echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush
          
您可以将上述命令添加到/etc/rc.d/rc.local脚本文件中,下次重启系统时您就不必再次键入它。

Version 6.2 only

编辑/etc/sysctl.conf文件并添加以下行
          # Improve file system performance
          vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
          
您必须重启网络才能使更改生效。手动重启网络的命令如下
          [root@deep] /# /etc/rc.d/init.d/network restart
          

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

在上面的示例中,根据the/usr/src/linux/Documentation/sysctl/vm.txt文件 -

第一个参数 100 %

控制缓冲区缓存中脏缓冲区的最大数量。“脏”表示缓冲区的内容仍需要写入磁盘,与“干净”缓冲区相反,“干净”缓冲区可以被忽略。将其设置为较高的值意味着 Linux 可以长时间延迟磁盘写入,但也意味着当内存不足时,它将不得不一次执行大量 I/O。较低的值将更均匀地分散磁盘 I/O。

第二个参数 1200 ndirty

这给出了 bdflush 一次可以写入磁盘的脏缓冲区的最大数量。较高的值意味着延迟的、突发性的 I/O,而较小的值可能会导致内存短缺,当 bdflush 没有被足够频繁地唤醒时。

第三个参数 128 nrefill

这是当调用 refill_freelist() 时,bdflush 将添加到空闲缓冲区列表的缓冲区数量。预先分配空闲缓冲区是必要的,因为缓冲区的大小通常与内存页不同,并且需要预先完成一些簿记工作。数字越高,浪费的内存就越多,并且 refill_freelist() 需要运行的频率就越低。

refill_freelist() 512

当遇到超过 nref_dirt 个脏缓冲区时,它将唤醒 bdflush。

age_buffer 50*HZ, age_super 参数5*HZ

最后,age_buffer50*HZage_super 参数5*HZ控制 Linux 在将脏缓冲区写入磁盘之前等待的最长时间。该值以 jiffies(时钟滴答)表示;每秒的时钟滴答数为 100。Age_buffer 是数据块的最大寿命,而 age_super 是文件系统元数据的最大寿命。

第五个参数 15 和最后两个参数 1884 和 2

这些系统未使用,因此我们不需要更改默认值。

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