bdflush 文件与 Linux 内核的虚拟内存 VM 子系统的运行密切相关,并且对磁盘使用有轻微影响。此文件/proc/sys/vm/bdflush控制 bdflush 内核守护进程的运行。我们通常调整此文件以提高文件系统性能。通过更改一些默认值(如下所示),系统似乎响应更快;例如,它会等待更长时间才写入磁盘,从而避免一些磁盘访问争用。
Red Hat Linux 下 bdflush 参数的默认设置是"40 500 64 256 500 3000 500 1884 2"要更改 bdflush 的值,请在终端上键入以下命令
[root@deep] /# echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush |
# 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文件 -
控制缓冲区缓存中脏缓冲区的最大数量。“脏”表示缓冲区的内容仍需要写入磁盘,与“干净”缓冲区相反,“干净”缓冲区可以被忽略。将其设置为较高的值意味着 Linux 可以长时间延迟磁盘写入,但也意味着当内存不足时,它将不得不一次执行大量 I/O。较低的值将更均匀地分散磁盘 I/O。
这给出了 bdflush 一次可以写入磁盘的脏缓冲区的最大数量。较高的值意味着延迟的、突发性的 I/O,而较小的值可能会导致内存短缺,当 bdflush 没有被足够频繁地唤醒时。
这是当调用 refill_freelist() 时,bdflush 将添加到空闲缓冲区列表的缓冲区数量。预先分配空闲缓冲区是必要的,因为缓冲区的大小通常与内存页不同,并且需要预先完成一些簿记工作。数字越高,浪费的内存就越多,并且 refill_freelist() 需要运行的频率就越低。
当遇到超过 nref_dirt 个脏缓冲区时,它将唤醒 bdflush。
最后,age_buffer50*HZ和 age_super 参数5*HZ控制 Linux 在将脏缓冲区写入磁盘之前等待的最长时间。该值以 jiffies(时钟滴答)表示;每秒的时钟滴答数为 100。Age_buffer 是数据块的最大寿命,而 age_super 是文件系统元数据的最大寿命。
这些系统未使用,因此我们不需要更改默认值。
: 查看/usr/src/linux/Documentation/sysctl/vm.txt以获取有关如何改进与虚拟内存相关的内核参数的更多信息。