Linuxのプライオリティ

Linuxのスケジュール管理は、スケジューリングポリシーと 「静的」なスケジューリング優先度 sched_priority に基づいてスケジュール管理を行なう。
sched_priority に 0 を指定する通常ポリシーでは、nice値として -20 から 19 の範囲の値で、スケジューリングの優先度を定める。nice値のデフォルトの優先度は 0 である。
小さな数字ほど、有利なスケジューリングとなる。

参考:スケジューリング API の概要

プライオリティの変更と確認

設定の変更

$ sudo chrt -f -p <プライオリティ> <pid>
   -f SCHED_FIFO  を指定する場合
   -r SCHED_RR    を指定する場合(デフォルト)
   -o SCHED_OTHER を指定する場合
$ sudo renice -n <nice値> -p <pid>

設定の確認

$ cat /proc/[pid]/sched

policy : スケジューリングポリシー
 /include/uapi/linux/sched.h 
 #define SCHED_NORMAL    0
 #define SCHED_FIFO      1
 #define SCHED_RR        2
 #define SCHED_BATCH     3
 #define SCHED_IDLE      5

prio : タスクの優先度(0-139)
 RTタスクは 0 - 99、CFSクラスは 100 - 139 の値。nice値は -20 - 19 の範囲で動かせるが、
 CFSクラスの優先度デフォルト値が 120 なので、120 + nice がカーネル内で使われる (CFSクラスの) タスクの優先度。
$ cat /proc/[pid]/stat | awk -F' ' '{print $18,$19}'

 1 pid       プロセスID
 2 comm      実行ファイル名
 3 state     状態:"RSDZTW" のどれか1文字
 4 ppid      親プロセスID
18 priority  リアルタイム・スケジューリングポリシーのスケジューリング優先度
             スケジューリング優先度を マイナスにした値で、値は -2 から -100 までの範囲の数値となり
             それぞれリアルタイム優先度の 1 から 99 に対応する。
19 nice      nice値

取得情報の一覧

/proc/[pid]/sched/proc/[pid]/statprioritynice
prioprioritynice
RTタスク0-1000990SCHED_FIFO、SCHED_RR の最高
1-990980
97-3020
98-2010SCHED_FIFO、SCHED_RR の最低
CFSクラス1000-200-20SCHED_OTHER、SCHED_BATCH の最高
1011-190-19
11919-10-1
12020000SCHED_OTHER、SCHED_BATCH のデフォルト
12121101
1383818018
1393919019SCHED_OTHER、SCHED_BATCH の最低

参照:PROC


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS