假设您的系统有 2 个处理器。现在创建一个 cgroup 并将该组配置为仅使用 1 个处理器。用足够的进程填充它,使其平均负载为 5(以证明这一点);现在速度慢得令人绝望。
我假设平均负载/proc/loadavg
也将为 5,即使不同的用户可以自由使用另一个 CPU,无需等待时间。
它是否正确?我可以引用这个消息来源吗?
答案1
你的理解是正确的。该指标可能会给人错误的印象,即整个系统超载,而它可能意味着只有特定的 cgroup 超载。
负载平均值是对正在运行的任务量的系统范围度量(另请参阅的描述/proc/loadavg
在man proc
)。
同时,man cgroups
,对于cpu
控制器来说:
当系统繁忙时,可以保证 Cgroup 具有最小数量的“CPU 份额”。如果 CPU 不忙,这不会限制 cgroup 的 CPU 使用率。
因此,如果没有其他用户消耗 CPU,则该 cgroup 将占用所有 CPU。否则,它将受到 cgroup 中设置的任何限制(在您的假设示例中:1 个处理器)。