0

我有一个 cpu 饥饿的进程 A,它占用了太多的 cpu 负载(100%),这导致进程 B 没有足够的周期……B 与 web 响应有关……所以当我用两个没有 cgroups 的进程,结果都是 5 秒......现在当我创建两个组并给两个进程相同数量的 cpu.shares 时,所花费的时间增加到 15 秒。

我得到了很好的结果,cpu 与进程的高份额比率必须给予更多优先级......但真的很好奇默认值下的这种奇怪行为......

为什么响应时间会随着两个组的默认共享值 1024 增加,不应该与没有 cgroups 相同吗?

现在,当我将两个进程放在同一个组中时,响应再次回到 5 秒......

是不是跟调度器有关系...

4

1 回答 1

0

[如果你有 cpuacct cgroup 与 cpu 一起挂载,你可以查看使用数量来检查两个 cgroup 是否获得相等的份额。]

我的猜测是您的设置有一些在 cgroups 之外运行的进程。当您将某些进程移到 cgroup 下时,仍在外面的进程将获得比两个 cgroup 更高的 CPU 份额(总计)。(每个顶级进程获得相当于 1024 个共享)。为了实现你想要的,所有进程都应该在某个 cgroup 下。

于 2014-04-01T20:21:29.120 回答