Linuxスケジューリング2

続きです。

スケジューリングポリシーには、ざっくり言って公平性とリアルタイム性があります。

🔴公平性

  • すべてのプロセスに対して公平に実行優先度を割り当てること
  • たとえばkernel 2.6.23まではO(1)スケジューラという方針が適用されていた。

    O(1)スケジューラは、動的な優先度も付けます。つまり、長時間実行されるプロセスには優先度を下げることで公平性を担保しています。

 2.6.24からはCFS(Complete Fair Scheduler)に変わったらしいです。ここには動的な優先度が付いていません。

CFSには、プロセスを複数まとめたグループに対しても公平性を保てるようです。

O(1)スケジューラからCFSに変わった背景として、O(1)スケジューラが経験則に基づくものでありメンテナンスが難しくなったためというのがあるそうです。

ポリシーを示すマクロは

SCHED_OTHER SCHED_BATCH SCHED_IDLE

です。

🔴 リアルタイム性

  • 決められた時間内に処理結果を出すことを最優先にすること

  • たとえばグラフィック処理などは、ある数msec以内に描画しないと、絵がおかしくなるのでリアルタイム性が必要になる (優先度待ちしてたら絵が出ない)

ポリシーを示すマクロは、

SCHED_FIFO SCHED_RR

です。

次の記事ではcgroupを使ったCPUの利用率制御を試してみたいと思います。

広告を非表示にする