您的位置:首頁技術文章
文章詳情頁

容器內存占用之系統cache介紹

瀏覽:199日期:2022-06-04 09:41:39

緣起:

監控(docker stats)顯示容器內存被用完了,進入容器瞅了瞅,沒有發現使用內存多的進程,使用awk等工具把容器所有進程使用的內存加起來看看,距離用完還遠了去了,何故?

分析:

該不會docker stats計算錯誤?

進入/sys/fs/cgroup/memory/docker/xxxxx/ 查看memory.usage ,確認計算沒有錯誤

我們知道,系統內存會有一部分被buffer、cache之類占用,linux也會把這部分內存算到已使用,對于容器來講,也應該存在此“問題”,而且非常有可能linux會把某容器引發的cache占用算到容器占用的內存上;驗證很簡單,進容器dd一個大文件就知道了:

dd 大文件后,docker stat顯示已用內存變多

宿主機上: echo 3 > /proc/sys/vm/drop_caches 后,docker stat顯示已用內存變少

至此,原因查明

問題:

對于宿主機來講,計算內存占用時,可以拿已用內存減去cache/buffer ,那么對于容器來講,如果減去容器部分的cache/buffer 呢?如果不減去,也會造成誤報警

測試發現: dd 產生的文件cache占用的內存會計算到 inactive_file 的頭上

相關文章:
国产综合久久一区二区三区