Swap分区介绍
Swap分区,即交换分区。它的功能就是在物理内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,当程序需要用到交换空间内的数据的时候,操作系统再将数据从交换分区恢复到物理内存中。这样,系统总是在物理内存不够时,才进行Swap交换。
如何设置Swap分区大小
以上是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。如下,提供了两种方案。
方案一
在Linux系统中,我们可以参照Red Hat公司为RHEL 7推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
- 内存小于2GB,推荐2倍于内存的swap空间;
- 内存2GB~8GB,推荐和内存大小一样的swap空间;
- 内存8GB~64GB,推荐至少4GB的swap空间;
- 内存大于64GB,推荐至少4GB的swap空间。
实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。
在OpenStack中,默认的CPU超配比例是1:16,内存超配比例是1:1.5。当宿主机使用swap交换分区来为虚拟机分配内存的时候,则虚拟机的性能将急速下降。生产环境上不建议开启内存超售(建议配置比例1:1)。另外,建议设置nova.conf文件中的reserved_host_memory_mb 参数,即内存预留量(建议至少预留4GB),保证该部分内存不能被虚拟机使用。
方案二
系统在什么情况下才会使用Swap?实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制的。1
2# cat /proc/sys/vm/swappiness
60
该值默认值是60。
- swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间。
- swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
由于,现在服务器的内存一般是上百GB,所以我们可以把这个参数值设置的低一些(如10-30之间),让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高宿主机系统和虚拟机的性能。
永久性修改1
echo 'vm.swappiness=10' >>/etc/sysctl.conf
保存,重启就生效了。
查看系统当前SWAP 空间大小1
free –h
小结
为了保证主机系统和应用程序的稳定运行(内存不足或泄露,易导致系统或应用崩溃),建议在实际使用过程中,服务器仍然需要创建一定的Swap分区。其分区大小可以结合以上两种方案进行设置,已达到最佳效果。
FAQ
1.释放SWAP 空间
假设我们的系统出现了性能问题,我们通过vmstat命令看到有大量的swap,而我们的物理内存又很充足,那么我们可以手工把swap 空间释放出来。让进程去使用物理内存,从而提高性能。
我们对swap 空间的释放,可以通过关闭swap分区,再启动swap 分区来实现。1
2
3 vmstat 1 5 // 1表示每隔1秒采集一次服务器状态,5表示只采集5次
free -h
swapon -s //显示交换分区的使用状况
关闭swap 交换分区:1
2 swapoff /dev/sda2
swapon -s
启用swap分区:1
swapon /dev/sda2
验证状态:1
swapon -s
Swap分区的拓展和缩小:https://www.e-learn.cn/content/linux/339010