vm.dirty_background_ratio 的默认值

vm.dirty_background_ratio 的默认值

想知道为什么 Linux 服务器(CentOS 和 Ubuntu)的“vm.dirty_background_ratio”默认值设置为 40。这仅仅是出于安全考虑的建议吗?还是有什么特别的原因?

如果系统总内存超过 32GB,那么释放 40% 就太多了。我在 Google 上搜索了几乎所有地方,但找不到足够的理由来支持该比例。

答案1

我意识到这是一个非常古老的问题;但是现在(2024 年)的答案与提出这个问题时的答案相同。

很简单,当我在 1994 年左右开始使用 Linux 时,vm.dirty_background_ratio 和 vm.dirty_ratio 值就已经存在了。当时典型的系统有 8MB RAM,高端台式机可能有 64-128MB,服务器可能有 512MB-1GB(但也有更快的磁盘),这些值在当时是合适的。

从那时起,一般来说不改变它的想法是:

  1. “不要惹麻烦”。他们不想让任何人的性能下降。(我确实注意到,在某个时候他们最终还是减少了一些;dirty_ratio 现在是 20%,dirty_background_ratio 是 10%,是以前值的一半。并且添加了 vm.dirty_ratio_bytes 和 vm.dirty_background_ratio_bytes,因为在高内存系统上 1% 仍然太高了。

  2. 他们在决定新的值时遇到了问题。有些工作负载建议将其设置为非常低的值,如果 I/O 系统不够快,最好以较慢的速度运行工作负载,而不是随着时间的推移,GB 的写入量不断增加。其他工作负载可能会有大量写入,但它们是突发性的;或者生成临时文件,这些文件在被删除之前不会使用很长时间;一个足够大的值可以容纳突发事件并随时间写出(或者容纳临时文件,如果它们被删除得足够快,则根本不需要写入任何内容)可以大大提高速度。

  3. 这通常不是问题。在桌面上,有人对慢速设备进行大量持续写入的情况并不常见,而且确实发生的写入会在 30 秒后刷新。在服务器设置中,如果确实希望发生这种情况,Linux 供应商和数据库软件、VM 软件等供应商通常会提供调整指南,建议调整此类值。

相关内容