阿里云云主机添加swap分区与swap性能优化

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/1762907

swap的功能与相应内核参数

Linux 将物理内存分为内存段的部分被称作“页面”。交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放用于页面的内存。物理内存和交换空间的总大小是可用的虚拟内存的总量。交换空间通常是一个磁盘分区(此分区在安装操作系统时,系统通常会默认划分出一段空间用于交换分区,默认将交换空间的大小设定为内存的1倍到2倍),也可以是一个文件。

内核参数中有一个vm.swappiness参数,此参数代表了内核对于交换空间的喜好(或厌恶)程度。Swappiness 可以有 0 到 100 的值,默认的大小通常是60,但也有的是30。设置这个参数为较低的值会减少内存的交换,从而提升一些系统上的响应度。如果内存较为充裕,则可以将vm.swappiness大小设定为30,如果内存较少,可以设定为60。如果将此数值调整的过大,可能损失内存本来能提供的性能,并增加磁盘IO消耗和CPU的消耗。

关于阿里云云主机swap功能

阿里云提供的云服务器(Elastic Compute Service,简称 ECS),是云主机的一种,当前采用的虚拟化驱动是Xen(这一点可以通过bios vendor和virtual type可以看出)。

默认情况下,阿里云云主机的swap功能是没有启用的,原因当然是通过取消swap功能可以降低磁盘IO的占用率来让用户购买更多的内存、提高磁盘寿命和性能。

阿里当前的做法是:

1.不创建swap分区,由镜像决定

2.将vm.swappiness设定为0,即永不使用swap分区

启用swap分区,确实可以降低内存的使用压力,但并不是长久之计,如果云主机上运行的应用确实需要较高的内存,建议还是购买更多的内存。

如何启用swap分区?

步骤如下:

1.查看当前系统中是否已经启用swap分区


1

2

cat /proc/swaps   

top

2.如果没有启用swap分区功能,则新建一个专门的文件用于swap分区


1

dd if=/dev/zero of=/data/swap bs=512 count=8388616

注:此文件的大小是count的大小乘以bs大小,上面命令的大小是4294971392,即4GB

3.通过mkswap命令将上面新建出的文件做成swap分区


1

mkswap /data/swap

4.查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成30或者60


1

2

3

cat /proc/sys/vm/swappiness   

sysctl -a | grep swappiness    

sysctl -w vm.swappiness=60

注:若想永久修改,则编辑/etc/sysctl.conf文件

5.启用此交换分区的交换功能


1

2

swapon /data/swap   

echo "/data/swap swap swap defaults    0  0" >> /etc/fstab

如何关闭swap分区?


1

2

swapoff /data/swap   

swapoff -a >/dev/null

关于多个交换分区在使用上的优先级    
如果你有多于一个交换文件或交换分区,你可以给它们各自分配一个优先级值(0 到 32767)。系统会在使用较低优先级的交换区域前优先使用较高优先级的交换区域。例如,如果你有一个较快的磁盘 (/dev/sda) 和一个较慢的磁盘 (/dev/sdb),给较快的设备分配一个更高的优先级。优先级可以在 fstab 中通过 pri 参数指定:    


1

2

/dev/sda1 none swap defaults,pri=100 0 0    

/dev/sdb2 none swap defaults,pri=10  0 0

或者通过 swapon 的 ?p (或者 ??priority) 参数:    


1

swapon -p 100 /dev/sda1

如果两个或更多的区域有同样的优先级,并且它们都是可用的最高优先级,页面会按照循环的方式在它们之间分配。

添加效果

PS: 原先对阿里云主机添加swap分区是否起作用表示质疑,现在看来,阿里在云主机中确实没做这方面的手脚。

注:关于top命令中的排序:top命令里面按下f或F,在通过箭头移动想要显示或者排序的列,按d表示显示或取消显示,按下s表示按此列排序,按下R表示翻转排序顺序。

一些可用的参考资料和扩展阅读材料:

Swap https://wiki.archlinux.org/index.php/Swap    
All about Linux swap space https://www.linux.com/news/all-about-linux-swap-space

云服务器 ECS https://www.aliyun.com/product/ecs

tag:Linux swap,阿里云添加swap交换空间,swap性能优化,云主机性能优化,云服务器性能优化

--end--

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1762907

时间: 2024-10-26 16:13:50

阿里云云主机添加swap分区与swap性能优化的相关文章

在阿里云CentOS 7创建swap分区的方法

创建swap分区是为了弥补物理内存的不足,也就是虚拟内存的概念,把硬盘的一部分划分作为虚拟内存,但这个空间不是越大越好,硬盘的速度远低于内存,设置不当反而拖慢系统的速度. 阿里云的主机默认没有swap分区,可以使用free命令查看: 这是在阿里云CentOS 7系统上创建好swap分区后的截图.下面记录在阿里云CentOS 7上创建swap分区的步骤: ①使用dd命令创建一个swap分区 dd if=/dev/zero of=/home/swap bs=1024 count=1048576 co

centos系统添加swap分区的方法

场景: 最近查看服务器内存总是很少,提示需要增加内存空间,但是添加内存,要加钱,但是怎么样可以同时加大内存又不花钱.于是想到了虚拟内存,查看了一下,发现服务器并没有设置swap分区,于是我就从数据盘分出1g来当做swap空间 方法:  使用dd命令创建一个swap分区 [root@localhost Desktop]#dd if=/dev/zero of=/home/swap bs=1024 count=1048576     count的计算公式: count=SIZE*1024  (size

Linux系统添加swap分区教程介绍

什么是交换内存(swap)? 虚拟内存是计算机系统内存管理的一种技术.它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换.与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率. VirtualMem01.png   注意:虚拟内存不只是"用磁盘空间来扩展物理内存"的意思--这只是扩充内存级别以使

DigitalOcean在CentOS中添加Swap分区的方法

其实添加的方法有很多,这里只是官方帮助里面的一个方法 检查Swap空间 首先检查一下系统中有没有存在的Swap文件 swapon -s 如果返回信息为上图的话,则表示 Swap 文件不存在. 检查文件系统 在设置Swap文件之前,先检查检查一下是否有足够的硬盘 df -hal   创建并启用Swap文件 使用 dd 命令来创建 Swap 文件 dd if=/dev/zero of=/swapfile bs=1024 count=512k   格式化并激活Swap文件 格式化Swap分区 mksw

如何在CentOS中添加Swap?CentOS添加交换分区的教程

使用 DigitalOcean 有很长一段时间了,前几天在编译 PHP 的时候出现了进程被 killed 的状况,经过我的吐槽以及和别人交流后发现,是内存耗尽的缘故.其实是因为当时开着 MySQL 进程消耗了不少内存,后来觉得有必要手动添加一下 Swap(交换分区),这样以免以后再编译什么的时候进程被K . 关于 Linux 中 Swap(交换分区),类似于 Windows 的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况. 那么如何在 CentOS

linux系统怎么增加swap分区空间小?

  标linux系统怎么增加swap分区空间小?准的Linux安装,SWAP分区是内存的两倍大小,如果增加了内存条,那SWAP分区也要增加. 如果增加1G内存,SWAP分区就要增加2G,但是具体该怎么增加呢?下面我们一起来看看 1.查看swap分区大小的命令:"free -m" 2.选择适合的分区,创建适合的swap文件,命令为:"dd if=/dev/zero of=/swap1 bs=1M count=2048" 3.将生成的文件设置为swap分区文件,命令:&

Linux swap分区的扩展

Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况.swap分区在非高内存的服务器上必不可少,但是swap不能充当内存使用. 一.swap分区扩展的方法 新建swap分区:以分区的形式创建swap 新建swap file:以文件的形式创建swap 分区与file的区别:文件可以随时扩大缩小,可以随时移动.分区不行. 二.以分区的形式扩展swap 1.首先用磁盘管理工具fdisk打开磁盘,然后将新建

CentOS 6.8 增加swap分区大小

1. 查看当前分区情况 [root@bogon ORACLE]# free -m              total       used       free     shared    buffers     cached Mem:          1861       1763         98         30        162         73 -/+ buffers/cache:       1526        334 Swap:         2047  

azure-为何Azure上的ubuntu虚拟机默认的SWAP分区都是零,挂载了重启后又没有了。

问题描述 为何Azure上的ubuntu虚拟机默认的SWAP分区都是零,挂载了重启后又没有了. Hello!大家好!! 为何Azure上的ubuntu虚拟机默认的SWAP分区都是零,挂载了重启后又没有了. 解决方案 你好, 默认情况下, Azure 上的linux 虚拟机是没有添加SWAP 分区的.默认就是零. 我们需要手动去enable SWAP. 具体步骤我们可以参考以下步骤: Add swap apace to Azure Ubuntu IaaS VMhttp://blog.bekijkh