最終更新:2015-08-24 (月) 07:58:13 (1982d)  

Linux/スケジューラ
Top / Linux / スケジューラ

実行可能なプロセス群全体を監視し、どのプロセスに実行権を与えるか判断を下す

概要

  • 現在動作中のタスク?を停止(プリエンプト?)して、次に実行すべきタスク?を決定し、そのタスク?CPUを割り当てる(ディスパッチ)する役割をもつ機能モジュール

経緯

  • 従来は Linux カーネルの I/O スケジューラは一種類だけで、コンパイル時に固定されていました。しかし Linux 2.6.10?からは複数の I/O スケジューラをデバイス毎に切り替えて、ハードウェアや用途に最適なスケジューラを選べるようになりました。

種類

noop?

  • 何もしない
  • 普通のパソコンでは noop スケジューラを指定すると性能が落ちる

anticipatory?

  • 比較的低速のハードディスクを用いた環境用

deadline

  • データベース向き
  • スループットよりもレイテンシに最適化したスケジューリング

cfq?

  • プロセス毎の I/O キューを持ち、極力公平なスケジューリングをしようとする
  • Fedora Coreのカーネルパッケージのデフォルト

スケジューラ

O(1)スケジューラ?

  • Linux2.6.22?まで
  • 優先度を-20~+19のナイス値 (Nice Value) によって決定
  • ランキューを利用

Completely Fair Scheduler? (CFQ)

  • Linux 2.6.23?以降で利用可能

スケジューリングの契機

優先度? (nice値?)

  • -20から19の範囲
  • タスク起動時のデフォルトは0
  • nice()システムコールで変更

関連

  • タイムスライス?

参考