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

 

posted @ 2020-10-31 14:08  zbs666  阅读(1175)  评论(0编辑  收藏  举报