內存還剩餘不少,卻使用 swap 分區

內存還剩餘不少,卻使用 swap 分區

做者:張首富
時間:2020-06-18
w x:y18163201

緣由

今天早上 AI 部門工程師來找我說,你會給 ubuntu 設置 swap 分區嗎,咱們機器內存好像不咋夠用了,給我搞個 swap 分區吧!我說好的,這麼簡單分分鐘鐘的事情,我三下五除二的就給他搞定了,給他說好了,你用吧,可是過一會他就跑來講,你給我弄好 swap 分區以後這臺機器就特別特別卡,你能幫我看看什麼問題嗎?ubuntu

排查

我登陸到機器上,查看機器內存free -h結果以下圖centos

image-20200618110616351

從結果能夠看出來,機器在內存還剩 148G 可是 swap 分區卻徹底被使用完了,這說明我給他建立好 swap 分區以後徹底他徹底不使用內存了,這是什麼狀況,查閱資料獲得以下解決辦法緩存

解決問題

swappiness的值的大小對如何使用swap分區是有着很大的聯繫的。bash

swappiness=0的時候表示最大限度使用物理內存,而後纔是 swap空間,swappiness=100的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。app

當該參數= 0,表示只要有可能就盡力避免交換進程移出物理內存; 該 參數=100,這告訴內核瘋狂的將數據移出物理內存移到swap緩存中。ide

這個值只是一個Linux在判斷是否交換內存(swap)的一個「傾向」參考值,而並非說,設置爲0之後,Linux就徹底不會使用內存交換空間code

而後 ubuntu 和 centos 通常默認都是 60 ,就是當內存使用=(100%-60%)*內存總量blog

cat /proc/sys/vm/swappiness
60

因此纔會出現咱們上面那種狀況,這個時候咱們只須要調整這個值便可,進程

sysctl vm.swappiness=10 #臨時修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

改完以後就會使用物理內存了,剛纔卡的狀況也解決了內存

相關文章
相關標籤/搜索