web-dev-qa-db-ja.com

cpu.cfs_period_usでより長い/より短い期間を使用する利点は何ですか?

プロセスあたりのCPU時間を制限したい場合は、cgroupsを介して行うことができます。ジョブを実行できるパラメーターは2つあります。cpu.cfs_period_usおよびcpu.cfs_quota_us

ここにパラメータに関する情報があります

  • cpu.cfs_period_us:帯域幅を決定するための、各スケジューラー期間のマイクロ秒単位の期間。これはデフォルトで100000usまたは100msになります。スケジューラーはCPUにバインドされたワークロードをより長く維持できるため、期間を長くすると、レイテンシーを犠牲にしてスループットが向上します。短い期間の場合はtrueの反対です。これは、CFSスケジューラによってスケジュールされた非RTタスクにのみ影響することに注意してください。
  • cpu.cfs_quota_us:現在のグループの各cfs_period_usのマイクロ秒単位の最大時間の実行が許可されます。たとえば、cpu_period_usの半分に設定されている場合、cgroupは50%の時間しかピーク実行できません。これは、システム内のすべてのCPUの合計時間を表すことに注意してください。したがって、たとえば2つのCPUを完全に使用できるようにするには、この値をcfs_period_usの値の2倍に設定する必要があります。

プロセスを1CPUコアに制限したいとします。これは、次の方法で実行できます。

cpu.cfs_quota_us   1.000.000
cpu.cfs_period_us  1.000.000

vs.

cpu.cfs_quota_us   100.000
cpu.cfs_period_us  100.000

vs.

cpu.cfs_quota_us   10.000
cpu.cfs_period_us  10.000

3つのオプションの違いは何ですか? Firefoxプロセスがあるとしましょう。何cpu.cfs_period_usはそれよりも優れています-長いか短いか、そしてその理由は?

4

引用が言うように、数値が小さいほどレイテンシーは低くなります。プロセスは、スケジュールされるまで長く待つ必要はありません。すべてのプロセスがすぐに順番になります。ただし、再スケジュールのオーバーヘッドはさらに大きくなります。時間がなくなるたびに、実行する準備ができている他のプロセスがある場合は、再スケジュールがあります。

再スケジュールには、スタック上のすべてのレジスタの保存、スタックポインタのタスク制御ブロックへの保存、タスク制御ブロックの切り替え、仮想ページテーブルの一部の無効化/有効化、スタックポインタの再読み込みが含まれます。レジスタを復元します。また、キャッシュミスが増える可能性もあります。つまり、実行速度が遅くなります。

長時間実行される非対話型タスクの場合、スケジューラー期間を長くすることをお勧めします。バッチスケジューラはスケジューラ期間が長く、標準のインタラクティブスケジューラよりも低い優先度で実行されます。

1
ctrl-alt-delor