#author("2019-05-29T16:19:54+09:00","default:honma","honma") #author("2019-10-02T09:12:53+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> -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]] ~ #htmlinsert(amazon_pc.html);