回答:
必要なコマンドは次のとおりです。
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}
niceLinux のコマンドは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スケジューラーによっては、実際には何も影響しない可能性があることに注意してください。特に、noopI / Oスケジューラーは優先度やスケジューリングクラスをまったくサポートしていません。また、deadlineスケジューラー(レガシースケジューラーとblk-mqスケジューラーの両方)もサポートしていないと確信しています。
あなた自身のプログラムのために、または他のプロセスのために調整するためにこれをプログラムで行いたい場合は、sched_setschedulerおよびのioprio_setシステムコールのmanページを確認してください(より多くのバックグラウンドも必要な場合は両方とも読む価値があります)。