我已经使用 LXC 容器几年了,最近扩展了在容器环境中运行的应用程序类型。
我现在开始使用以下配置参数限制容器级别的资源:
lxc.cgroup.cpuset.cpus = 16-23
lxc.cgroup.memory.limit_in_bytes = 30720M
lxc.cgroup.memory.memsw.limit_in_bytes = 32768M
我正在与使用“调整”工具 ( pgtune ) 为将在 LXC 环境中运行的 Postgres 数据库生成配置的开发人员合作。该工具较旧,并且不太支持 VM 或容器。它根据对系统可见的 RAM 提出大小建议。
那时我意识到,在某些情况下,容器实例可以看到所有主机系统的 RAM (96GB) 可能是有害的。
是否有任何解决方法,或者它只是在使用 LXC 时给定的?
目前,
proc
文件系统在挂载命名空间中不是“容器感知”的,因此基于其逻辑的工具将获取与主机相关的值,而不是与容器相关的值。但是一项工作正在进行中,它被称为lxc-fs并且很少有可用的版本在这里。这是一种用户空间的解决方法,可以通过绑定挂载
/proc
来使容器内的内容保持一致。似乎没有办法解决它。LXC 使用 cgroups 来限制 RAM,非虚拟化感知工具读取LXC
/proc/meminfo
中不包含的统计信息,并将输出系统中的整体 RAM。在容器内运行时,您可以看到此行为,也可以看到此行为free
。top
来源: http: //fabiokung.com/2014/03/13/memory-inside-linux-containers/