最近一次接到一個反饋linux系統內存占用很高,通過top沒看到異常的服務,使用free 命令查看內存
占用就是很高,操作系統內存在49G,直接就占用了40G,可用的很少,而且反饋說主機重啟之后
直接也就占用了40G的空間
大致分析
在剛開始的時候感覺是應用異常(沒了解少直接重啟也出現類似問題),top之后沒發現異常進程(后邊
打算使用per-tools 以及perf 分析的),再了解到直接啟動之后就40G,而且free 對於內存的計算是基於
/pro/memeinfo 理論上不會出問題的,還是很比較准確的(有一次分析問題,大概看了下計算算法),然后就
感覺不太正常,可能是內核配置是有問題(因為應用業務都是正常的,沒有什么異常服務),查看之后發現了
一個不太多的內核參數配置(關於巨頁的)
vm.nr_hugepages=20480
然后在查看cat /proc/memeinfo, 的確是巨頁占用了大部分內存的使用,按照默認巨頁2M的計算剛好是40G
內存占用的大小剛好對上
解決方法
直接禁用巨頁的使用(業務可以不用巨頁),刪除內核關於巨頁的配置就可以了
說明
關於linux 內核參數的配置還是需要謹慎點,了解系統的需求以及業務場景,合理的調優內核參數