第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 スレッドは以下のイベントのいずれかが発生するまで実行されます。
  • スレッドはスリープ状態になるか、またはイベントの待機を開始します。
  • 優先度の高いリアルタイムスレッドが実行できるようになります
これらのイベントのいずれかが発生すると、スレッドはそのプロセッサー上で無期限に実行され、優先順位の低いスレッドを実行できなくなります。これにより、システムサービススレッドの実行に失敗し、メモリースワップやファイルシステムデータのフラッシュが期待どおりに行われない可能性があります。