web-dev-qa-db-ja.com

vm.dirty_ratioとvm.dirty_background_ratioの違いは?

現在、/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の高い値は何か意味がありますか、それとも単に「低い値とその所有者」の問題ですか?

17
happyMOOyear

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を上限として。

26
askb

私はこのまさに質問に興味をそそられており、Linux 3.2.0-4-AMD64を実行しているDebian 7.10システムで sysbench 0.4.12を使用して、少し変更して実験しました。

  • / proc/sys/vm/dirty_ratio
  • / proc/sys/vm/dirty_background_ratio

これらの設定は、ディスクへの書き込みを遅らせる方法です。頻繁に書かないアプリケーションや小さなチャンク(Webブラウザなど)で書かれているアプリケーションがある限り、これらは便利です。ディスク上でサポートされている最大速度を超える速度でデータを生成しているアプリケーションがシステム上に1つしかない場合、設定は問題になりません。執筆には時間がかかります。

Dirty Ratio(DR)は、ダーティページの数がしきい値を超えてブロックするプロセスをもたらします。 ダーティバックグラウンド比(DBR)は、バックグラウンドでダーティページの書き込みを制御します。したがって、DBRが低く、DRが高く、すべてのプロセスがディスクのサポートされている書き込み速度(例:50 MB/s)を決して超えない小さなチャンクで書き込みを行う場合、非常に応答性の高いシステムが見つかります。これは、RAMへの書き込みが通常100倍(5 GB/s)であるという事実を念頭に置いている場合に印象的です!これはDBRの重要性です。

構成パラメーターは、頻繁に作成しないアプリケーションに煩わされる場合に役立ちます。ダーティなデータが多すぎるため、プロセスがバイトを書き込んだり、数KBを読み取って20秒間停止することは望ましくありません。これは、DRが高すぎないことの重要性です。また、最近使用したデータをキャッシュするためのメモリを確保できます。

2
pdp