cgroup 的 memory.stat 檔案列出了該 cgroup 的頁面快取使用情況(在cache 和total_cache 欄位中)。頁面快取使用情況是如何得出的?
例如,檔案a.txt被cgroup A和B都開啟。或是a.txt的快取是在A和B之間共用的嗎?如果是共享的,A 和 B 的 memory.stat 頁面快取使用量是否會增加相同的數量(總數)?
另外,為什麼 memory.stat 不包含緩衝區快取或交換快取欄位?
發行版是 Linux Mint 18.2。
答案1
這在第 2.3 節中討論https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt…
2.3 共享頁面計費
共享頁面依照首次接觸方式進行統計。第一個接觸頁面的 cgroup 被計入該頁面。這種方法背後的原理是,積極使用共享頁面的 cgroup 最終將為此付費(一旦它從引入它的 cgroup 中釋放出來 - 這將在記憶體壓力下發生)。
至於其他問題...
從Linux 2.4開始,緩衝區被加入到快取中(參見https://stackoverflow.com/a/14671569)。因此,您不會在 memory.stat 中找到單獨的緩衝區欄位。
為了在 memory.stat 中列出交換,可能需要使用 CONFIG_MEMCG_SWAP_ENABLED 來編譯核心。