swap:内存置换空间(swap 的功能就是在应付物理内存不足的情况下所造成的内存延伸记录的功能。)
#Redhat官方建议如下:
物理内存小于等于2GB的swap应设置为物理内存的2倍
物理内存大于2GB小于等于8G时swap应设置为等同与物理内存的大小
物理内存大于8GB时swap应设置为大于等于4GB但不超过8GB。
实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。
系统SWAP什么时候使用是由swappiness 参数值控制。
swappiness参数的含义:
swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。
swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间。Ubuntu系统swappiness默认值为60,表示的含义可以这样来理解,当剩余物理内存低于40%(40=100-60)时,开始使用swap分区。CentOS系统此参数的默认值是30。我个人喜欢将作为服务器的Linux系统的swappiness参数设置为10。设置为100可能会影响整体性能,如果内存充足,就可以将这个值设置很低,甚至为0,以避免系统进行swap而影响性能(swap是存在磁盘上的,磁盘的速度和内存相比慢了好几个数量级)。
cat /proc/sys/vm/swappiness
30
该值在centos 7上默认值是30,意味着当物理内存超过70%就开始使用swap分区(在Centos 6上是60)。
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。特别是对于性能要求较高的数据库服务器,要求全部使用内存。
使用free命令即可查看系统的SWAP。
修改swappiness参数
临时性修改:
sysctl vm.swappiness=10
vm.swappiness = 10
cat /proc/sys/vm/swappiness
10
永久修改:
在/etc/sysctl.conf 文件里添加如下参数:
vm.swappiness=10
最后重启系统:
reboot