调节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

标签:Centos, 缓存, swap, swappiness, sysctl

添加新评论