2.6 および 3.0 カーネルを搭載したサーバーでの dirty_expire_centisecs パラメータの動作を理解しようとしています。
カーネルのドキュメント (vm.txt/dirty_expire_centisecs) には、「この間隔よりも長くメモリ内でダーティになっているデータは、次にフラッシャ スレッドが起動したときに書き出されます」と記載されています。
つまり、この間隔よりも短い間メモリ内にあったダーティ データは書き込まれません。
私のテストによると、dirty_expire_centisecs の動作は次のとおりです。有効期限タイマーの前にライトバック タイマーが起動すると、ページはフラッシュされず、それ以外の場合はすべてのページがフラッシュされます。background_bytes の制限に達すると、両方のタイマーに関係なく、レートに応じてすべてまたは一部をフラッシュします。
私のテストでは、低い書き込み速度 (1 秒あたり 1MB 未満) では、dirty_background_bytes トリガーはすべてのダーティ ページをフラッシュし、わずかに高いデータ レート (1 秒あたり 2MB を超える) では、有効期限に関係なく、ダーティ データの一部のみをフラッシュします。価値。
これは、vm.txt に記載されている内容とは異なります。最新のデータをフラッシュしないことは理にかなっています。私にとって、観察された行動は論理的ではなく、実際には役に立たない. 皆さんはどう思いますか ?
私のテスト セットアップ: Suse 11 SP1、SP2、および RedHat 6.2 を実行する 16 GB の RAM を搭載したサーバー (マルチ ブート セットアップ)
vm.dirty_bytes = 50000000 // 50MB <br>
vm.dirty_background_bytes = 30000000 // 30MB <br>
vm.dirty_writeback_centisecs = 1000 // 10 seconds <br>
vm.dirty_expire_centisecs = 1500 // 15 seconds <br>
write() の 1 秒あたりの速度とサイズを制御できるファイル書き込みツールを使用します。