我有一个cpu饥饿的进程A,它占用了太多的CPU负载(100%),导致进程B没有足够的周期... B与Web响应有关...所以当我做了一个基准测试两个没有cgroups的进程的web响应,结果是5秒......现在当我创建两个组并给两个进程等量的cpu.shares时,所花费的时间增加到15秒。
我得到了很好的结果,cpu的比例很高,必须给予更高的优先级......但是对于默认值下这种奇怪的行为真的很好奇......
为什么响应时间会随着两组的默认共享值1024而增加,不应该与没有cgroups相同???
现在,当我将两个进程放在同一组中时,响应再次回到5秒......
是否与调度程序有关...
答案 0 :(得分:0)
[如果您使用cpu挂载cpuacct cgroup,您可以查看使用数量以检查两个cgroup是否获得相同的份额。 ]
我的猜测是你的设置有一些在cgroups外运行的进程。当您在cgroups下移动某些进程时,仍在外部的进程将获得比两个cgroup更高的cpu份额(总计)。 (每个顶级进程获得相当于1024个共享)。为了实现你想要的,所有进程都应该在某个cgroup下。