8

我从“sudo docker -d”收到此警告:

警告:您的内核不支持 cgroup 交换限制。

即使按照步骤操作(如在此链接中):

  • 修改 /etc/default/grub 中的以下几行(我都做了很好的衡量)

    RUB_CMDLINE_LINUX_DEFUALT="cgroup_enable=内存交换帐户=1" GRUB_CMDLINE_LINUX="cgroup_enable=内存交换帐户=1"

  • 然后通过 update-grub/reboot

    须藤更新-grub;须藤重启

我的问题是:

1)我应该担心这个警告吗?

我想我应该是因为我试图在强制执行内存限制很重要的用例中使用 docker 容器。

2) 更改内存 use_hierarchy 设置是个好主意吗?-- 或 -- 解决此问题的最佳方法是什么?

我在“dmesg”中看到了这个警告。我不确定尝试将 use_hierarchy 设置更改为 '1' 是否是个好主意(也不知道如何做到这一点)

cgroup:“内存”需要在根目录上将 use_hierarchy 设置为 1。”

或者,有没有更好的方法来解决这个问题?我只是在这里开枪,也许内核升级会有所帮助?我看到一些 3.16 内核升级是可能的。

环境: 我正在运行 Ubuntu 14.04 x64(内核:3.13.0-43-generic x86_64)和 docker 版本 1.0.1

其他注意事项: 我已经阅读了其他关于类似 docker/cgroup 错误的在线帮助文​​章,这些错误说安装 apparmor_parser 可以修复它。但是,在我的系统上,apparmor 已安装并且似乎可以正常启动(根据 dmesg)。此外,此文件存在:/sbin/apparmor_parser

此外,我对 linux 服务器上的管理任务还比较陌生。

4

1 回答 1

5

如果您正在使用交换并且想要强制执行包括内存和交换的内存限制,则 cgroup 交换限制很重要。我有没有交换的 m/c,所以我从未启用它。

如果您希望报告的内存使用情况包括所有子组报告的内存,则 use_hierarchy 很有用。例如,使用 use_hierarchy=1,/sys/fs/cgroup/memory/parent 将报告该 cgroup 下的进程以及任何子 cgroup(如 /sys/fs/cgroup/memory/parent/child)使用的内存。这始终是启用的有用设置。但它在大多数操作系统上默认不启用。

总之,您的 docker 容器在没有这两种设置的情况下都可以正常工作。启用这些会给你一些额外的好处 - 特别是。如果您关心限制交换使用并获得准确的内存报告。

于 2015-03-03T23:29:48.343 回答