Linuxのリアルタイムプロセススケジューリング

Linuxのリアルタイムプロセススケジューリング

私はいくつかのスケジュール管理の概念を学びました。私の現在の理解は次のとおりです。

  • リアルタイムプロセスと非リアルタイムプロセスがあります。
  • 非リアルタイムプロセスの優先順位の値は、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

質問

  1. どのプロセスもライブプロセスとして設定できますか?
  2. SCHED_OTHER非リアルタイムプロセスに加えて、他のスケジューリングアルゴリズムを設定できますか?
  3. ~からここまた、実行中のプロセスの属性を次のように変更できることがわかりました。

    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アルゴリズムを使用する必要があります。他の優先順位を設定するには、上記のコマンドを使用できます。

おすすめ記事