プロセスは、実行中のLinuxシステムのコアを形成します。プログラムがプロセスに変換されるとき(つまり、プログラムが実行されるとき)、多くの属性が設定されます。場合によっては、実行時にこれらの属性を変更したいことがあります。コマンドラインツールchrtがあります これが可能になります。
このチュートリアルでは、このユーティリティについて、わかりやすい例をいくつか挙げて説明します。ただし、その前に、この記事のすべての例がUbuntu18.04LTSマシンでテストされていることを言及する価値があります。
Linuxchrtコマンド
上記の紹介セクションですでに述べたように、chrtコマンドを使用すると、プロセスのリアルタイム属性を操作できます。その構文は次のとおりです。
chrt [options] -p [prio] pid
そして、ツールのマニュアルページで説明されているのは次のとおりです。
chrt sets or retrieves the real-time scheduling attributes of an exist?
ing pid, or runs command with the given attributes. Both policy (one
of SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH, or SCHED_IDLE) and
priority can be set and retrieved.
The SCHED_BATCH policy is supported since Linux 2.6.16. The SCHED_IDLE
policy is supported since Linux 2.6.23.
The SCHED_RESET_ON_FORK flag for policies SCHED_RR and SCHED_FIFO is
supported since Linux 2.6.31.
以下は、chrtコマンドがどのように機能するかについての良いアイデアを与えるはずのQ&Aスタイルの例です。
Q1。 chrtコマンドの使用方法は?
geditプロセスのスケジューリングポリシーまたは優先度を操作することに関心があるとします。したがって、最初に行う必要があるのは、このプロセスのプロセスIDを取得することです。これは、pidofコマンドを使用して実行できます。
pidof gedit
たとえば、私のシステムでは、上記のコマンドはpid'6063'を出力として提供しました。ここで、geditプロセスの現在のスケジューリングポリシーと優先度を取得するには、次の方法でchrtを使用します。
chrt -p 6063
そして、これが私のシステムで生成されたこのコマンドの出力です:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Q2。 chrtに最小/最大の有効な優先順位を表示させる方法は?
これは、-mコマンドラインオプションを使用して実行できます。
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
スケジューリングポリシーを設定する際の優先度設定については、これらの値を参照する必要があります。
Q3。スケジューリングポリシーをSCHED_BATCHに設定するにはどうすればよいですか?
これは、-bコマンドラインオプションを使用して実行できます。
例:
chrt -b -p 0 6063
ここで、次のコマンドを使用してgeditのスケジューリングポリシーを再度確認すると、次のようになります。
chrt -p 6063
次のような出力が表示されます。これは、行った変更が適用されたことを示します。
pid 6063's current scheduling policy: SCHED_BATCH
pid 6063's current scheduling priority: 0
Q4。スケジューリングポリシーをSCHED_FIFOに設定するにはどうすればよいですか?
これは、-fコマンドラインオプションを使用して実行できます。
chrt -f -p 20 6063
前のQ&Aで行ったように、 chrt -pを使用して変更を相互検証できます。 指図。 -fコマンドラインオプションを使用するには、root権限が必要になる場合があることに注意してください。
Q5。スケジュールポリシーをSCHED_OTHERに設定するにはどうすればよいですか?
これは、-oコマンドラインオプションを使用して実行できます。
chrt -o -p 0 6063
確認するには、chrt-pコマンドを使用します。
chrt -p 6063
私の場合の出力は次のとおりです。
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
同意します。chrtコマンドは、毎日使用できる種類のツールではありません。ちなみに、システム管理に取り掛かるまで、またはカーネルスケジューリング関連の作業に取り組むまでは、それは必要ないかもしれません。ただし、少なくともそのようなツールが存在することを知っておく価値があります。 chrtの詳細については、manページにアクセスしてください。