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 間でグループを移行することはできません。