Docker

–memory-reservation 標誌在實踐中做了什麼?

  • December 9, 2021

文件說:

在這種配置下,當容器消耗的記憶體超過 200M 且小於 500M 時,下一次系統記憶體回收會嘗試將容器記憶體收縮到 200M 以下。

但這實際上意味著什麼?

假設我有一個執行 Solr 的容器,並且:

docker run -m 1G --memory-reservation 768M solr

開始使用800M記憶體對容器內的Solr程序有什麼影響?沒有?

僅當/當記憶體使用量隨後降至 768M 以下時…此標誌允許 docker 從 solr 容器中回收記憶體?…否則容器將繼續消耗高水位記憶體使用量?

這與群調度有什麼關係?如果 swarm 總是為容器分配 1G,因為-mthen--memory-reservation在這種情況下沒有用嗎?

memory-reservation選項是名為memory.soft_limit_in_bytes. 您可以閱讀“軟限制”部分下的(過時的)手冊:https ://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt

有關回收過程的更多資訊在這裡: http: //linux-mm.org/PageOutKswapd

據我所知,您的 Solr 程序可以使用 800MB,只要沒有來自其他 cgroup 的爭用,記憶體就不會被回收。它可以保留記憶體並使用高達 1GB 的硬限制。如果存在爭用,則核心將嘗試回收記憶體,但根據文件的soft limits is a best-effort feature.. no guarantees.

引用自:https://serverfault.com/questions/753010