程序運行緩慢,查看內存剩余的時候發現Linux系統內存還有60G剩余就開始使用swap交換區了。發現vm/swappiness設置是默認值60,也就是內存使用超過40%(100-60)的時候就會使用交換區了。
系統把物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區中,等到那些程序要運行時,再從Swap分區中恢復保存的數據到內存中。
這個swap交換區是從硬盤中預先划分一定的空間,所以使用swap交換區就需要在硬盤和內存間讀寫,增加IO,影響系統性能。
查看vm.swappiness
cat /proc/sys/vm/swappiness
設置vm.swappiness=0 后並不代表禁用swap分區,只是告訴內核,能少用到swap分區就盡量少用到,設置vm.swappiness=100的話,則表示盡量使用swap分區,默認的值是60
修改vm.swappiness
echo 0 > /proc/sys/vm/swappiness
永久設置
/etc/sysctl.conf增加一行 vm.swappiness = 0
可以使用vmstat命令查看swap交換區使用情況
si
- Amount of memory swapped in from disk (/s).
- 從磁盤交換到swap虛擬內存的交換頁數量,單位:KB/秒。如果這個值大於0,表示物理內存不夠用或者內存泄露了
參考:
https://v2ex.com/t/615860
