我目前正在试验 /proc/sys/vm
中的内核参数,尤其是 dirty_ratio
和 dirty_background_ratio
。
内核文档对两者都有以下解释:
脏背景比
包含,作为包含空闲页面和可回收页面的总可用内存的百分比,后台内核刷新线程将开始写出脏数据的页面数。
和
脏比
包含,作为包含空闲页面和可回收页面的总可用内存的百分比,正在生成磁盘写入的进程本身将开始写出脏数据的页面数。
在我的 linux 系统上 dirty_background_ratio
是 10,而 dirty_ratio
是 20。我知道区别在于脏数据写入的对象。因此,如果我使用的内存达到 10%,内核开始回写并且永远不会达到 20%。
我现在的问题是: dirty_background_ratio
和 dirty_ratio
的较高值是否有任何含义,或者仅仅是“较低的值是什么以及谁拥有它”的问题?
原文由 happyMOOyear 发布,翻译遵循 CC BY-SA 4.0 许可协议
用更简单的话来说:
vm.dirty_background_ratio 是系统内存在脏时导致系统开始向磁盘写入数据的百分比。
vm.dirty_ratio 是系统内存的百分比,当脏时,会导致执行写入的进程阻塞并将脏页写入磁盘。
这些可调参数取决于您的系统正在运行什么;如果您运行大型数据库,建议将这些值保持在较低水平,以避免在系统负载增加时出现 I/O 瓶颈。
例如:
在这个例子中,当脏页超过
vm.dirty_background_ratio=10
I/O 开始,即它们开始被刷新/写入磁盘。当脏页的总数超过vm.dirty_ratio=15
所有的写被阻塞,直到一些脏页被写入磁盘。您可以将vm.dirty_ratio=15
视为上限。