调节swap使用
今天发现一台8G内存的服务器可用内存剩余7G,但已经频繁使用swap。
解决这个问题之前,首先我们来了解一下linux系统的缓存机制:
linux会使用硬盘的一部分做为SWAP分区,用来进行进程调度--进程是正在运行的程序--把当前不用的进程调成‘等待(standby)‘,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就躺到SWAP分区睡大觉,把内存空出来让给‘活动’的进程。
如果内存够大,应当告诉linux不必过多的使用SWAP分区, 可以修改swappiness
的值。swappiness=0
的时候表示最大限度使用物理内存,然后才是swap分区;swappiness=100
的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
在centos6.5中,默认swappiness的值是60。如果内存较小,而进程调度频繁,硬盘的响动就会大了。
查看当前swappiness的值
cat /proc/sys/vm/swappiness
修改swappiness值为10
sysctl vm.swappiness=10
这只是临时性的修改,在重启后会恢复之前的默认值,为长治久安,还要更进一步:
编辑/etc/sysctl.conf
文件,在最后一行增加:
vm.swappiness=10
然后保存,重启。
如果不想重启,可以使用命令
sysctl -p
动态加载/etc/sysctl.conf
文件,但建议这样做之前先清空swap
swapoff -a && swapon -a