设置swap尽量使用物理内存
wappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60,具体如下:
cat /proc/sys/vm/swappiness
#60
也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统IO,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。
临时调整的方法如下,我们调成10:
sysctl vm.swappiness=10
#vm.swappiness=10
cat /proc/sys/vm/swappiness
#10
这只是临时调整的方法,重启后会回到默认设置的.
要想永久调整的话,需要在/etc/sysctl.conf修改,加上:
sudo vim /etc/sysctl.conf
加上
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296 #这一个可以不用设置
vm.swappiness = 10
生效
sudo sysctl -p
这样便完成修改设置!
swap配置多大比较合适呢?
前一段时间,我们机房中一台Linux服务器运行缓慢,系统服务出现间歇性停止响应,让我过去处理一下这一问题,登录到服务器之后,发现此服务器的物理内存是16G,而最初装机的时候,系统管理人员却只分配了4G的虚拟内存(这个地方和linux内存管理中的虚拟内存不是同一回事)。查看内存的使用状况,物理内存并没有完全耗尽,但虚拟内存已经耗尽,整个系统CPU负载和磁盘IO都非常高。
知道了问题所在是由于交换分区不足导致,那么解决方法就是:将虚拟内存通过虚拟文件的方式增加到16G,系统运行状况明显好转。
swappiness=0 的时候表示最大限度使用物理内存,然后才是swap空间;swappiness=100 的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。对于现在动辄几十GB、上百GB物理内存的服务器来说,究竟为其Linux系统设置多大的交换分区合适呢?为此,我引用红帽官方里的一段文字进行简单说明一下,嘿嘿。
目前红帽官方推荐交换分区的大小应当与系统物理内存的大小保持线性比例关系,不过在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的(个人理解设置为2倍的原因为swap要能将内存中所有的东西放下,内存里有了新数据后还能与swap发生数据交换),如果内存大小多于2GB,交换分区大小应该是。
注:
1.但我们平时安装系统时,默认都分内存的2倍,因为现在有硬盘空间都很大,也不在乎那几十G的空间。
2.其它操作系统也是类似。
转载自:https://www.cnblogs.com/EasonJim/p/7777904.html
https://www.linuxidc.com/Linux/2013-05/84252.htm