私はいくつかのスケジューリングの概念を学んでいます。現在のところ、私の理解は以下の通りです。
Nice
値を持つことができます+20。正の値が大きいほど、プロセスの優先度が低いことを示します。-
としてリストされたniceness値があります。これは主に、リアルタイムプロセスが非リアルタイムプロセスよりも優先度が高く、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
以外のスケジューリングアルゴリズムを設定することは可能ですか?here から、実行中のプロセスの属性を次のように変更できることもわかります。
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
を設定すると、どのアルゴリズムが使用されますか?
質問1
ユーザーがプロセスにリアルタイムの優先度を使用することもできます。この構成は、/etc/security/limits.conf
ファイルから設定できます。そのファイルには以下の内容が含まれています。
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
アイテムセクションを確認すると、ユーザーのリアルタイムの優先度を設定できる以下のエントリが表示されます。
# - rtprio - max realtime priority
質問2と質問
スケジューリングポリシーをSCHED_FIFO
に設定するには、次のように入力します。
chrt -f -p [1..99] {pid}
スケジューリングポリシーをSCHED_RR
に設定するには、次のように入力します。
chrt -r -p [1..99] {pid}
したがって、質問3に答えるには、chrt -m
コマンドを使用して、使用可能なスケジューリングアルゴリズムと優先順位を確認し、必要に応じて任意のスケジューリングアルゴリズムを使用する必要があります。異なる優先順位を設定するには、上記のコマンドを使用できます。