运行docker时出现警告:
警告:您的内核不支持交换限制功能或未装入cgroup。内存有限,无需交换。
我正在尝试弄清楚这意味着什么,特别是短语“没有交换就限制了内存”。
这是否意味着容器可以使用比通过使用主机的交换空间通常允许的更多的内存?还是意味着即使主机完全用尽了内存,容器也无法使用交换空间?是由于未配置交换空间引起的吗?如果您不使用交换功能,这是否无关紧要?
注意:我对如何解决它不感兴趣-Google对此有很多结果。我对它的含义以及为什么重要很感兴趣。
Docker守护程序依靠以下虚拟文件来实现内存和交换限制:
/sys/fs/cgroup/memory/memory.limit_in_bytes
/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes
如果您的内核不支持交换内存限制,则第二个文件将不存在,并且docker run
不会对交换空间的使用施加任何限制。这样,甚至允许容器使用比-m, --memory
设置更多的交换,就好像--memory-swap
已将其设置为一样-1
。显然,容器使用的交换空间不能超过系统上配置的空间。
但是,警告消息还试图说明该选项-m, --memory
仍将生效,并且最大用户内存量(包括文件缓存)将按预期设置。
提到的cgroup安装点可能有所不同,请参阅/proc/self/mounts
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句