打印无限 docker 容器的值,我得到值 9223372036854771712,即 0x7FFFFFFFFFFFF000(这是 XUbuntu 主机的相同值)。我找不到任何参考资料表明这是 Docker 或 Linux 的默认值,表示无限内存资源。
这个值从哪里来?容器虚拟化或 Linux 发行版/位数之间有什么不同吗?
答案1
该值来自内存管理层中的cgroup设置;默认情况下,它是设置PAGE_COUNTER_MAX
,即LONG_MAX / PAGE_SIZE
在 64 位平台上,以及PAGE_SIZE
读取时再次乘以。
答案2
这是最大的正符号 64 位整数 (2 63 -1),向下舍入为 4096 (2 12 ) 的倍数,这是 x86 系统上最常见的页面大小。在避免有符号和无符号之间可能混淆的同时,似乎很难获得更高的值,因此它看起来至少是无穷大的合理近似值。
也就是说,我不确定,这只是一个猜测。