第5章 優先順位およびポリシー
すべての Linux スレッドには、以下のいずれかの スケジューリングポリシー があります。
SCHED_OTHER
またはSCHED_NORMAL
: デフォルトポリシーSCHED_BATCH
:SCHED_OTHER
と同様ですが、スループットが維持されます。SCHED_IDLE
:SCHED_OTHER
より低い優先度SCHED_FIFO
: 最初にリアルタイムポリシーを出力SCHED_RR
: ラウンドロビンのリアルタイムポリシー
Red Hat Enterprise Linux for Real Time に重要なポリシーは
SCHED_OTHER
SCHED_FIFO
および SCHED_RR
です。
SCHED_OTHER
または SCHED_NORMAL
は、Linux スレッドのデフォルトスケジューリングポリシーです。スレッドの特性に基づいてシステムによって変更される動的な優先度があります。SCHED_OTHER
スレッドの優先度に悪影響を与えるもう 1 つのものは、nice 値です。nice 値は、-20 (最も高い優先度) と 19 (最も低い優先度) の数値です。デフォルトでは、SCHED_OTHER
スレッドの適切な値は 0 になります。nice 値を調整すると、スレッドの処理方法が変わります。
SCHED_FIFO
ポリシーのあるスレッドは、SCHED_OTHER
タスクよりも先に実行されます。適切な値を SCHED_FIFO
使用する代わりに、1 (最低) と 99 (最大) の優先度を使用します。優先度が 1 の SCHED_FIFO
スレッドは常に SCHED_OTHER
スレッドよりも先にスケジュールされます。
この
SCHED_RR
ポリシーは、SCHED_FIFO
ポリシーと非常に似ています。SCHED_RR
ポリシーでは、優先度が等しいスレッドは ラウンドロビン方式 でスケジュールされます。通常、SCHED_FIFO
は、SCHED_RR
よりも優先されます。
SCHED_FIFO
および SCHED_RR
スレッドは以下のイベントのいずれかが発生するまで実行されます。
- スレッドはスリープ状態になるか、またはイベントの待機を開始します。
- 優先度の高いリアルタイムスレッドが実行できるようになります
これらのイベントのいずれかが発生すると、スレッドはそのプロセッサー上で無期限に実行され、優先順位の低いスレッドを実行できなくなります。これにより、システムサービススレッドの実行に失敗し、メモリースワップやファイルシステムデータのフラッシュが期待どおりに行われない可能性があります。