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


24

私はいくつかのスケジューリングの概念を学んでいます。現在のところ、私の理解は以下の通りです。

  • リアルタイムプロセスと非リアルタイムプロセスがあります。
  • 非リアルタイムプロセスを持つことができる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です。

ご質問

  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使用するアルゴリズムを設定するとどうなりますか?

回答:


19

質問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コマンドを使用して利用可能なスケジューリングアルゴリズムと優先順位を確認し、必要に応じてスケジューリングアルゴリズムを使用する必要があります。さまざまな優先順位を設定するには、上記のコマンドを使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.