回答:
必要なコマンドは次のとおりです。
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
最初のchrt
コマンドは、物事をバッチスケジューリングクラスに切り替えます。これは、0.5をnice値に追加することと同じです。ioniceの-nオプションは、リアルタイム(-c 1
)およびベストエフォート(-c 2
)オプションの単純な優先順位であり、値が小さいほど、優先順位が低いほど優先順位が高くなります(ただし、範囲は0〜7)。しかし、ioniceコマンドは、I / Oスケジューリングクラスと優先度がCPUのスケジューリングパラメータから導出デフォルトであることから、厳密には必要ではない、とnice -n 19
暗示しますionice -c 2 -n 7
。
ただし、CPUとI / Oの両方のスケジューリングクラスをアイドルに設定することで、リソースの使用量を最小限に抑えることができます。どちらの場合も、「アイドル」スケジューラーは実際にはアイドルスケジューラーではなく、リソースを引き続き使用できます。すべての優先度が高くなるだけです。
CPUスケジューリングクラスの場合、これもchrt
必要ではnice
ありませんが(0
アイドルスケジューリングクラスで優先度をに設定する必要があります)、コマンドを使用し、次のようになります。
chrt -i 0 {command or PID}
nice
Linux のコマンドはSVR4バージョンをミラーリングします。つまり、スケジューリングクラスを変更することはできません。nice値(Linuxでは従来のUNIXとは動作が異なりますが、少しOTです)だけを変更できます。元の代替スケジューリングクラスはPOSIX.1EリアルタイムSCHED_RR
であったSCHED_FIFO
ため、スケジューリングクラスを設定するコマンドが呼び出されていましたchrt
。-i
使用するオプションの指定SCHED_IDLE
スケジューリングクラスを
I / Oスケジューリングクラスには、を使用しますionice
。正確なコマンドは次のようになります。
ionice -c 3 {command or PID}
この-c
オプションは、使用するスケジューリングクラスを指定し、3はアイドルクラスの数です。使用されているブロックI / Oスケジューラーによっては、実際には何も影響しない可能性があることに注意してください。特に、noop
I / Oスケジューラーは優先度やスケジューリングクラスをまったくサポートしていません。また、deadline
スケジューラー(レガシースケジューラーとblk-mqスケジューラーの両方)もサポートしていないと確信しています。
あなた自身のプログラムのために、または他のプロセスのために調整するためにこれをプログラムで行いたい場合は、sched_setscheduler
およびのioprio_set
システムコールのmanページを確認してください(より多くのバックグラウンドも必要な場合は両方とも読む価値があります)。