vm.dirty_ratio和vm.dirty_background_ratio之间的区别?

时间:2015-01-12 10:47:00

标签: linux performance linux-kernel

我目前正在试验/proc/sys/vm中的内核参数,尤其是dirty_ratiodirty_background_ratio

内核文档对两者都有以下解释:

  

dirty_background_ratio

     

包含占包含可用页面的总可用内存的百分比   和可回收页面,后台内核的页数   刷新线程将开始写出脏数据。

  

dirty_ratio

     

包含占包含可用页面的总可用内存的百分比   和可回收的页面,一个进程的页面数   生成磁盘写入本身就会开始写出脏数据。

在我的linux系统dirty_background_ratio上是10而dirty_ratio是20.我明白不同之处在于脏数据写的是谁。因此,如果我的已用内存达到10%,则内核开始回写,永远不会达到20%。

我现在的问题是:dirty_background_ratiodirty_ratio的价值是否更高,或者仅仅是"什么是较低的价值和谁拥有它"?

2 个答案:

答案 0 :(得分:22)

  

dirty_background_ratio和dirty_ratio的值是否有任何意义,或者只是“什么是较低的值以及谁拥有它”?

更简单的说法:

vm.dirty_background_ratio 是系统内存的百分比,当脏时系统可以开始将数据写入磁盘。

vm.dirty_ratio 是系统内存的百分比,当脏时,执行写操作的进程会阻塞并将脏页写入磁盘。

此可调参数取决于系统运行的内容,如果运行大型数据库,建议将这些值保持在较低值以避免I / O瓶颈以及系统负载增加时。

前:

vm.dirty_background_ratio=10
vm.dirty_ratio=15

在此示例中,当脏页超过vm.dirty_background_ratio=10 I / O启动时,即它们开始刷新/写入磁盘。当脏页总数超过vm.dirty_ratio=15时,所有写入都会被阻止,直到某些脏页写入磁盘。您可以将vm.dirty_ratio=15视为上限。

答案 1 :(得分:2)

我对这个问题很感兴趣,因此对我的问题进行了一些实验 使用sysbench 0.4.12运行Linux 3.2.0-4-amd64的Debian 7.10系统,修改:

  • 的/ proc / SYS / VM / dirty_ratio
  • / proc / sys / vm / dirty_background_ratio

这些设置是延迟写入磁盘的一种方法。只要您拥有不经常写入或以小块(例如Web浏览器)编写的应用程序,它们就很有用。如果系统上只有一个应用程序只是以大于磁盘支持的最大速率生成数据,那么没有任何设置重要。写作将花费尽可能多的时间。

脏比率(DR)会导致导致脏页数超过阈值的进程被阻止。 脏背景比率(DBR)控制在后台写入脏页。因此,如果您的DBR较低,那么较高的DR和所有进程都会以小块的形式写入,从而不会超过支持的磁盘写入速度(例如50 MB / s),那么您会发现一个响应非常快的系统。当我们记住写入RAM通常快100倍(5 GB / s)时,这是令人印象深刻的!这是DBR的重要性。

当您对不经常写入的应用程序感到困扰时,配置参数非常有用。您不希望进程写入一个字节或读取几KB以停止20秒,因为脏数据太多。这是没有太高DR的重要性。它还确保有一些内存可用于缓存最近使用的数据。