systemdサービスファイルでは、次のスケジュール関連オプションを設定できます(systemd.exec
manページから、間違っている場合は修正してください)。
Nice 実行されたプロセスのデフォルトのniceレベル(スケジューリング優先度)を設定します。-20(最高の優先度)から19(最低の優先度)の間の整数を取ります。詳細については、setpriority(2)を参照してください。
おなじみのいいレベルです。最近のLinuxカーネルの「オートグループ」機能により、その効果はいくぶん「覆された」ようです。したがって、以下のオプションは、デスクトップエクスペリエンスでプロセスが適切に動作し続けるように設定したいものです。
CPUSchedulingPolicy 実行されたプロセスのCPUスケジューリングポリシーを設定します。その他、バッチ、アイドル、FIFO、またはRRのいずれかを取ります。詳細については、sched_setscheduler(2)を参照してください。
CPUSchedulingPriority 実行されたプロセスのCPUスケジューリング優先順位を設定します。使用可能な優先度の範囲は、選択したCPUスケジューリングポリシーによって異なります(上記を参照)。リアルタイムスケジューリングポリシーでは、1(最低の優先度)から99(最高の優先度)までの整数を使用できます。詳細については、sched_setscheduler(2)を参照してください。
CPUSchedulingResetOnFork ブール引数を取ります。trueの場合、実行されたプロセスがフォークすると、CPUスケジューリングの優先順位とポリシーの昇格がリセットされるため、子プロセスにリークすることはできません。詳細については、sched_setscheduler(2)を参照してください。デフォルトはfalseです。
最後のオプションを理解しました。最初の2つの説明から、スケジューリングポリシーを選択し、そのポリシーを優先することができると説明しました。どの種類のタスクのために何を選択すべきかは、私には完全に明確ではありません。たとえば、バックアップタスクに「アイドル」を選択しても安全ですか(重複排除のために比較的CPUに負荷がかかります)、それとも別の方が適していますか?
一般に、各ポリシーの概要と、その優先順位と特定の目的への適合性を理解することは、私が探しているものです。niceレベルとの相互作用も興味深いものです。
CPUスケジューリングの次に、IOスケジューリングがあります。これはionice
(間違っている場合は修正してください)に相当すると思います。
IOSchedulingClass 実行されたプロセスのI / Oスケジューリングクラスを設定します。0〜3の整数、またはnone、realtime、best-effort、idleのいずれかの文字列を取ります。詳細については、ioprio_set(2)を参照してください。
IOSchedulingPriority 実行されたプロセスのI / Oスケジューリング優先順位を設定します。0(最高の優先順位)から7(最低の優先順位)までの整数を取ります。使用可能な優先度は、選択したI / Oスケジューリングクラスによって異なります(上記を参照)。詳細については、ioprio_set(2)を参照してください。
ここでは、CPUスケジューリングと同じ構造が表示されます。同じ種類の情報も探しています。
すべての「スケジューリング」オプションについて、参照されたマニュアルページは私にとっては十分に明確ではありません。ほとんどは、技術的にやや傾けられたデスクトップユーザーの視点に物事を翻訳することにおいてです。
nice
値がいつ適用されるかについても言及しています)。