私はいくつかのスケジューリングの概念を学んでいます。現在のところ、私の理解は以下の通りです。
- リアルタイムプロセスと非リアルタイムプロセスがあります。
- 非リアルタイムプロセスを持つことができる
nice
の範囲内でその優先順位の値を-20に+20。高い正の値は、プロセスの優先度が低いことを示します。 - ここ
-
でこの答えで説明されるようにリアルタイムプロセスにniceness値がリストされるでしょう。これは主に、リアルタイムプロセスが非リアルタイムプロセスよりも高い優先度を持ち、ナイスネス値が適用されないためです。 - これ
chrt
で、プロセスのリアルタイムの属性を確認できます。
リアルタイムプロセスの場合、chrt
出力は次のようになります。
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
プロセス5でわかるように、優先度は99で最高です。また、スケジューリングポリシーはSCHED_FIFO
さて、非リアルタイムプロセスのために、 chrt
出力は次のようになります。
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
プロセス22383でわかるようにでに、優先順位は0で、スケジューリングポリシーはSCHED_OTHER
です。
ご質問
- プロセスをリアルタイムプロセスとして作成することは可能ですか?
- 私が他のスケジューリングアルゴリズムを設定することは可能ですか?
SCHED_OTHER
非リアルタイムプロセスですか? ここから、実行中のプロセスの属性を次のように変更できることもわかります。
chrt -p prio pid
また、
chrt -m
スケジューリングアルゴリズムのリストが表示されます。このコマンドにより、出力が次のようになります。SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
さて、上記で提案したように、
chrt -p 55 22383
使用するアルゴリズムを設定するとどうなりますか?