Linux系统内存还有剩余就开始使用swap交换区了
程序运行缓慢,查看内存剩余的时候发现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
浪漫家园,没事就来逛逛