控制SWAP分区的使用
linux上有一个swap分区,直白的说,其作用就是在物理硬盘上划出一块大小当内存来用。这和windows上的虚拟内存应该是同一个道理 。但有时你会发现,SWAP分区明明已经被用了很大一部分,磁盘IO并不高。为什么?因为SWAP分区是用来进行进程调度–进程是正在运行的程序–把当前不用的进程调成‘等待(standby)‘,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就躺到SWAP分区睡大觉,把内存空出来让给‘活动’的进程。
但当我们有足够大的内存时,其实没必要冒IO有可能会上去的险(当进程调度频繁,硬盘的IO就活跃了) 。这时候可能通过一个参数swappiness修改来改变使用的优先级。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。其默认值是60 。而要查看当前系统设置的值可以通过如下方法:
1[root@localhost ~]# sysctl -a|grep vm.swapp
2vm.swappiness = 60
当前生效可以通过调整proc参数实现:
1echo 10 > /proc/sys/vm/swappiness
永久生效可以利用如下方法:
1echo “vm.swappiness=10″ >> /etc/sysctl.conf
2sysctl -p
注:按以两种方法任一种操作后,通过free -m查看时,会发现目前的内存使用情况并不会有多大的改变(除非你有新的程序启用)。原因很简单,当前的设置并未对已经运行的进程有效。这就需要我们重启主机或者重启最大占用内存的进程,使其使用当前的配置。
另外普及一下mem与swap方面的知识。根据一般的使用情况,两者的比例关系如下:
1RAM Size Swap Size
21-2G 1.5 倍 RAM
32-8G 1 倍 RAM
4>8G 0.75 RAM
当的Memory >32G 时,一般都会将Swap 空间设置在10g 以内,甚至更小。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/linux-swap-mem-optimization/2493.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.