- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-10-01T16:02:29+09:00","default:honma","honma")
#author("2019-05-29T16:19:54+09:00","default:honma","honma")
* Linuxのプライオリティ [#zeed6435]
Linuxのスケジュール管理は、スケジューリングポリシーと 「静的」なスケジューリング優先度 sched_priority に基づいてスケジュール管理を行なう。~
sched_priority に 0 を指定する通常ポリシーでは、nice値として -20 から 19 の範囲の値で、スケジューリングの優先度を定める。nice値のデフォルトの優先度は 0 である。~
小さな数字ほど、有利なスケジューリングとなる。
参考:[[スケジューリング API の概要:https://linuxjm.osdn.jp/html/LDP_man-pages/man7/sched.7.html]]
* プライオリティの変更と確認 [#a71bc357]
** 設定の変更 [#n16806b6]
$ sudo chrt -f -p <プライオリティ> <pid>
$ sudo renice -n <nice値> -p <pid>
$ sudo chrt -f -p <プライオリティ> <pid>
-f SCHED_FIFO を指定する場合
-r SCHED_RR を指定する場合(デフォルト)
-o SCHED_OTHER を指定する場合
$ sudo renice -n <nice値> -p <pid>
** 設定の確認 [#ge3e696d]
$ 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値
取得情報の一覧
** 取得情報の一覧 [#m6fead6e]
||/proc/[pid]/sched|>|/proc/[pid]/stat|priority|nice||
|~|prio|priority|nice|~|~|~|
|RTタスク|0|-100|0|99|0 |SCHED_FIFO、SCHED_RR の最高|
|~|1|-99|0|98|0||
|~|||||||
|~|97|-3|0|2|0||
|~|98|-2|0|1|0|SCHED_FIFO、SCHED_RR の最低|
||||||||
|CFSクラス|100|0|-20|0|-20|SCHED_OTHER、SCHED_BATCH の最高|
|~|101|1|-19|0|-19||
|~|||||||
|~|119|19|-1|0|-1||
|~|120|20|0|0|0|SCHED_OTHER、SCHED_BATCH のデフォルト|
|~|121|21|1|0|1||
|~|||||||
|~|138|38|18|0|18||
|~|139|39|19|0|19|SCHED_OTHER、SCHED_BATCH の最低|
参照:[[PROC:https://linuxjm.osdn.jp/html/LDP_man-pages/man5/proc.5.html]]