回転するドライブのLinux I / Oスケジューラを正しく調整するのに役立ちます。
大容量(4〜16 TB)のメモリマッピングファイルにデータを書き込み、SHED_FIFOを使用するプロセスがあります。その後、カーネルは私に未知の経験的な方法に基づいてダーティページをファイルに自動的にフラッシュします。データ書き込みプロセスはリアルタイムで作業上重要であるため、一括ディスク書き込みは読み取りよりも優先されます。
ビジネス上の重要ではないメモリマッピングを介してファイルからデータを読み取るためのさまざまなプロセスがあります。ディスクが書き込みと読み取りに追いつくことができない場合は、書き込みに影響を与えずにできるだけ早く読み取りを実行して、マシンのメモリが不足しないようにする必要があります。
さて、さまざまなI / Oスケジューラを見てみると、次のような動作が見つかりました。
- 締め切り:読み取り優先順位が書き込みよりも高いです。
- cfq:読み取りと書き込みの優先順位は同じです。
読み込みよりも書き込みを優先するスケジューラは存在しないようです。
私の最初の考えは、「cfq」スケジューラを使用してから、読み取りプロセスで高い値を持つ「ionic」を使用することでした。理論的には、カーネルが常にダーティページを正しく消去できるようにする必要があると思いましたか?
これは本当に効果がありますか?もっと良い方法がありますか?
編集する:
見ている「Linuxページのキャッシュとpdflushの概念について」締め切りスケジューラのいくつかの設定を使用することは可能です。
私たちは以下を試しています:
- writes_starved: 2 (デフォルト) => 1
- write_expire: 5000 (デフォルト) => 500
- read_expire: 500 (デフォルト) => 5000
これは合理的に聞こえますか?
答え1
イオアニス各プロセスの優先順位を変更できます。私が理解しているように、私は書くプロセスと読むプロセスがあります。マニュアルページCFQスケジューラで動作すると言います。