从昨天开始,我一直在努力解决LXC容器的问题,并且限制每个容器的CPU资源。在我的例子中,像lxc-cgroup -n srv50 cpu.shares 100这样的命令不会带来任何结果-容器仍然平等地使用CPU。
我使用Centos 7& LXC 1.0.8。我检查的所有机器都有相同的效果:设置cpu.shares不会做任何事情。
下面是systemd-cgtop屏幕,来自我的两个核心VM:
Path Tasks %CPU Memory Input/s Output/s
/ 178 199.7 360.8M - -
/lxc - 198.0 16.8M - -
/lxc/srv51 7 99.8 8.4M - -
/lxc/srv50 7 98.2 8.4M - -
/system.slice/NetworkManager.service 2 - - - -
/system.slice/auditd.service 1 - - - -容器srv50将cpu.shares设置为100,而srv51设置为50。两个容器都运行命令dd if=/dev/urandom | bzip2 -9 >> /dev/null。我原以为一个容器占用66%,而其他133% CPU (或类似的东西),但两者都使用100%。
一个提示。当我试图找出哪个容器使用的CPU最多时,我在htop工具中注意到所有容器都有相同的cgroup::name=systemd:/user.slice/user-0.slice/session-1.scope? --不确定这是否正确--只是注意到了这一点。
限制内存工作,CPU不工作。
我刚刚完成了对cgroup的测试,我不能为任何进程设置cpu.share (通过将它移到某个组),所以它是一致的。闻起来像是丢失的内核开关。
他说:我的例子中有一个错误。要查看两个核心机器的负载差异,我们必须至少有两个进程运行100%的每个容器。不管怎样,这不是问题。
发布于 2016-10-08 13:13:37
是的,在这种情况下的问题是测试这个特性。它如预期的那样工作。我在其他有两个核心的云VM上只有一个问题。因为我不需要它,所以我不会再想它了。)干杯!
https://unix.stackexchange.com/questions/315110
复制相似问题