日期:2014-05-16  浏览次数:20621 次

Linux SWAP 交换分区配置说明

 

一.SWAP 说明

 

1.1 SWAP 概述

当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

 

这个是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。

 

一般来说可以按照如下规则设置swap大小:

4G以内的物理内存,SWAP 设置为内存的2倍。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。

 

实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。

 

1.2 系统在什么情况下才会使用SWAP?

 

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

 

[root@rhce ~]# cat /proc/sys/vm/swappiness

60

 

该值默认值是60.

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

 

现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。

 

1.3 如何修改swappiness参数?

 

--临时性修改:

[root@rhce ~]# sysctl vm.swappiness=10

vm.swappiness = 10

[root@rhce ~]# cat /proc/sys/vm/swappiness

10

这里我们的修改已经生效,但是如果我们重启了系统,又会变成60.

 

--永久修改:

在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

 

或者:

[root@rhce ~]# echo 'vm.swappiness=10' >>/etc/sysctl.conf

 

保存,重启,就生效了。

 

二.管理SWAP

 

2.1 查看系统当前SWAP 空间大小

 

[root@dave ~]# free -m

            total       used       free    shared    buffers     cached

Mem:         1954       1923         31          0         21       1345

-/+ buffers/cache:        555       1399

Swap:        1999         21       1978

 

2.2 释放SWAP 空间

 

假设我们的系统出现了性能问题,我们通过vmstat命令看到有大量的swap,而我们的物理内存又很充足,那么我们可以手工把swap 空间释放出来。让进程去使用物理内存,从而提高性能。

 

[root@dave ~]# vmstat 1 5

procs -----------memory---------- ---swap-------io---- --system-- -----cpu-----

 r  b  swpd   free   buff cache   si   so   bi    bo   in  cs us sy id wa st

 0  0 22272  32620  22032 1378312    0   0    33    38   0   41 1  2 96  0  0

 0  0 22272  32612  22032 1378340    0   0     0     0 902 1627  0  5 95 0  0

 0  0 22272  32612  22032 1378340    0   0     0     0 905 1636  1  8 91 0  0

 0  0 22272  32612  22032 1378340    0   0     0    32 907 1616  0  6 94 0  0

 0  0 22272  32612  22032 1378340    0   0