如果内存不受限制/不受限制,cgroup 的 limit_in_bytes 的值是多少?

如果内存不受限制/不受限制,cgroup 的 limit_in_bytes 的值是多少?

打印无限 docker 容器的值,我得到值 9223372036854771712,即 0x7FFFFFFFFFFFF000(这是 XUbuntu 主机的相同值)。我找不到任何参考资料表明这是 Docker 或 Linux 的默认值,表示无限内存资源。

这个值从哪里来?容器虚拟化或 Linux 发行版/位数之间有什么不同吗?

答案1

该值来自内存管理层中的cgroup设置;默认情况下,它是设置PAGE_COUNTER_MAX,即LONG_MAX / PAGE_SIZE在 64 位平台上,以及PAGE_SIZE读取时再次乘以

这证实了伊尔卡丘解释:该值是最大 64 位有符号整数,四舍五入到最近的页(通过删除最后位)。

答案2

这是最大的正符号 64 位整数 (2 63 -1),向下舍入为 4096 (2 12 ) 的倍数,这是 x86 系统上最常见的页面大小。在避免有符号和无符号之间可能混淆的同时,似乎很难获得更高的值,因此它看起来至少是无穷大的合理近似值。

也就是说,我不确定,这只是一个猜测。

相关内容