Memory

如果記憶體不受限制/無限制,cgroup 的 limit_in_bytes 的值是多少?

  • February 1, 2018

列印無限 docker 容器的值,我得到值 9223372036854771712,即 0x7FFFFFFFFFFFF000(這與 XUbuntu 主機的值相同)。我找不到表明這是 Docker 或 Linux 預設值的參考,表明記憶體資源不受限制。

這個價值從何而來?Container Virtualizations 或 Linux Distributions/Bitnesses 之間有什麼不同嗎?

該值來自記憶體管理層中的 cgroup 設置;預設情況下,它設置為PAGE_COUNTER_MAXLONG_MAX / PAGE_SIZE在 64 位平台上,讀取時再次乘以PAGE_SIZE

這證實了ilkkachu解釋:該值是最大的 64 位有符號整數,四捨五入到最近的頁面(通過刪除最後一位)。

這是最高的正符號 64 位整數 (2 63 -1),向下舍入為x86 系統上最常見的頁面大小4096 (2 12 ) 的倍數。在避免有符號和無符號之間可能的混淆的同時,似乎很難得到更高的值,因此它似乎至少是無窮大的合理近似值。

也就是說,我不確定,這只是一個猜測。

引用自:https://unix.stackexchange.com/questions/420906