从昨天开始,我一直在努力解决 LXC 容器的问题以及限制每个容器的 CPU 资源的问题。就我而言,命令 likelxc-cgroup -n srv50 cpu.shares 100
不会带来任何结果 - 容器仍然平等地使用 CPU。
我正在使用 Centos 7 和 LXC 1.0.8。我检查的所有机器都具有相同的效果:设置cpu.shares
不执行任何操作。
这是来自我的 2 核虚拟机的 systemd-cgtop 屏幕:
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 - - - -
Containersrv50
设置cpu.shares
为 100,而srv51
设置为 50。两个容器都运行 command 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
任何进程(通过将其移动到某个组),因此它是一致的。闻起来像缺少一些内核开关。
2:我的示例中有一个错误。要查看 2 核计算机上的负载差异,每个容器必须至少有 2 个进程 100% 运行。无论如何,这不是问题。
答案1
是的,本例中的问题是测试此功能。它按预期工作。我在其他具有 2 核的云虚拟机上遇到的唯一问题。因为我不需要它,所以我不会再去想它。 :) 干杯!