CFQ IOスケジューラは優先順位をサポートしていますが、Deadlineがサポートしているかどうかはわかりません(そうではないと思います)。前提は、ジョブを再実行するときに完全に公平なスケジューラでCPUのより大きな部分を占めることです。これはおそらくより頻繁に実行されるため、必要に応じてIOもより頻繁に呼び出されます。そうですか?
IOスケジューラが優先順位をサポートしていない場合でも、ジョブを再割り当てするときにジョブが多いか少ないIOを取得するのか疑問に思います。それともディスク/メモリ管理は完全に別々ですか?
答え1
ディスクとメモリのスケジューリングはまったく異なります。 IO優先順位スケジューラがない場合、IOは先着順として処理されます。システムがIOバインドされている場合、すべてのプロセスはすべてのプロセスがI / Oを待機するまである程度ラウンドロビン方式で実行されます。プロセスの良い優先順位は、スケジューリングの頻度にほとんど影響しません。
最新バージョンのLinuxにはionice
機能が追加されました。アイドル優先順位は、ヘッドがディスクの別の領域に移動したときに発生する可能性があるIOの劣化を防ぎ、他のプロセスの書き込みを遅らせるように設計されています。
I / Oバインディングプロセスを再割り当てしても、平均負荷がCPU数を超えない限り、I / O速度が大幅に低下する可能性はありません。未使用のCPUサイクルを使用できる場合は、I / O速度を通常の優先順位レベルに近づけることができるように、プロセスを頻繁にスケジュールできます。
最新の Linux カーネルは、まだ IO 優先順位が設定されていないプロセスの IO 優先順位を変更します。 40個のCPU優先順位は8個のIO優先順位にマッピングされているため、IO優先順位を変更するにはかなりの変更が必要になる場合があります。
I/O 集約型プロセスの優先順位を超えて実行される CPU 集約型プロセスが多いと、I/O 速度が遅くなることがあります。プロセスは、I/O 発生を引き起こした時間フラグメントを引き続き取得します。