Linux cgroup: CPU 速度に関係なく、絶対的な基準で CPU 使用量を制限します。

Linux cgroup: CPU 速度に関係なく、絶対的な基準で CPU 使用量を制限します。

2.4GHzプロセッサを搭載したサーバーがあります。また、複数のグループがあり、各グループはCPUの25%を使用できます。これは600MHzに相当します。

その後、CPUを高速3.0GHzに変更しました。私がcpu.shares使うなら

これは、CPUを変更した後、cgroupがCPUの20%以下を消費するようにcgroupを再構成する必要があることを意味します。

CPUをアップグレードするときにこの問題を回避する方法はありますか?

答え1

グループ間の持分は相対的です。たとえば、CPUの25%を割り当てるということは、cgroupが「少なくとも」それだけのCPUを見ることになりますが、もっと使うことができるという意味です。 ~からcgroupのRed Hatドキュメント:

CPU 時間共有は、マルチコアシステムのすべての CPU コアに分散されます。 cgroupがマルチコアシステムでCPUの100%未満に制限されていても、個々のCPUコアを100%使用できます。

...

cgroup に使用できる実際の CPU 時間は、システムに存在する cgroup の数によって異なります。 1つのcgroupの相対シェアが1000で、他の2つのcgroupの相対シェアが500の場合、すべてのcgroupのプロセスがCPUの100%を使用しようとすると、最初のcgroupは合計CPU時間の50%を取得します。ただし、相対共有が1000の別のcgroupを追加すると、最初のcgroupはCPUの33%しか使用できません(残りのcgroupはCPUの16.5%、16.5%、33%)。

CPU帯域幅に厳しい制限を適用するには、cpu.cfs_quota_usおよびを使用できますcpu.cfs_period_us。 ~からカーネルのCFS文書:

クォータと期限を使用して、グループに許可される帯域幅を指定します。グループは、所与の各「期間」(マイクロ秒)の間、最大「割当量」マイクロ秒のCPU時間のみを使用することができる。グループのCPU帯域幅消費がその期間にこの制限を超えると、その階層に属するタスクは制限され、次の期間まで再実行は許可されません。

ただし、どちらのオプションも cgroups 構成を変更せず、異なる CPU 間でグループを移行することはできません。

関連情報