我在一台单核机器上有3个进程。每个进程都是完全相同的,并且尽可能快地消耗CPU (紧密循环)。其中两个(A和B)由cgexec组成不同的组,其股票设置为512和512。第三款(C)是定期推出的,而不是cgexec。
一旦全部启动并运行,C将获得66%的CPU,而A和B则分别占33%。如果我杀了C,那么A和B各得到50% (和预期的一样)。
为什么C获得66%?在这种情况下,我希望每个人都能得到33%,或者50% (C),25% (A)和25% (B)。然而,无论我怎么做数学,66%的人上C都是行不通的。
一般来说,我想了解在资源共享方面,没有cgexec启动的进程是如何与cgexec启动的进程交互的(尤其是CPU,但是如果不是太复杂的话,我们会更喜欢一个更一般的答案)。
发布于 2016-05-31 20:53:22
C组是等级化的,所有子进程都继承它们。因此,所有进程都必须在某个cgroup中。默认情况下,它是根cgroup,默认情况下它有1024个共享,在您的示例中是A和B的两倍。
CPU时间根据在cpu.shares中分配给它们的权重在CPU组之间共享。
如果A有1024股,B 512、C 256和D 256,cpu时间分布为A-50%、B-25%、C和D12.5%。
https://unix.stackexchange.com/questions/224289
复制相似问题