私はいくつかのスケジュール管理の概念を学びました。私の現在の理解は次のとおりです。
- リアルタイムプロセスと非リアルタイムプロセスがあります。
- 非リアルタイムプロセスの優先順位の値は、
nice
次の範囲内にあります。-20到着+20。正の値が高いほど、プロセスの優先順位が低いことを示します。 -
この回答で述べたように、リアルタイムプロセスは良い値を持っています。ここ。これは主に、リアルタイムプロセスが非リアルタイムプロセスよりも優先順位が高く、良い値が適用されないためです。- これで、
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
どのアルゴリズムを使用するかを設定するとどうなりますか?
ベストアンサー1
質問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と質問3
スケジュールポリシーをに設定するには、SCHED_FIFO
次のように入力します。
chrt -f -p [1..99] {pid}
スケジュールポリシーをに設定するには、SCHED_RR
次のように入力します。
chrt -r -p [1..99] {pid}
したがって、質問3に答えるには、コマンドを使用して利用可能なスケジューリングアルゴリズムと優先順位を確認し、必要に応じてスケジューリングchrt -m
アルゴリズムを使用する必要があります。他の優先順位を設定するには、上記のコマンドを使用できます。