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

1、swap的功能与相应内核参数

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

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

2、关于阿里云云主机swap功能

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

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

阿里当前的做法是:

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

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

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

3、如何启用swap分区?

步骤如下:

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

cat /proc/swaps
Filename                Type        Size    Used    Priority

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

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

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

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

mkswap /data/swap

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

cat /proc/sys/vm/swappiness
sysctl -a | grep swappiness
sysctl -w vm.swappiness=60

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

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

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

4、如何关闭swap分区?

swapoff /data/swap
swapoff -a >/dev/null

关于多个交换分区在使用上的优先级

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

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

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

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

时间: 2024-10-10 22:38:15

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

阿里云云主机添加swap分区

如何启用swap分区? 步骤如下: 1.查看当前系统中是否已经启用swap分区 cat /proc/swaps top 2.如果没有启用swap分区功能,则新建一个专门的文件用于swap分区 dd if=/dev/zero of=/data/swap bs=512 count=8388616 注:此文件的大小是count的大小乘以bs大小,上面命令的大小是4294971392,即4GB 3.通过mkswap命令将上面新建出的文件做成swap分区 mkswap /data/swap 4.查看内核参

阿里云主机添加云磁盘

# fdisk -l Disk /dev/xvdb doesn't contain a valid partition table 2. 创建分区 # fdisk /dev/xvdb ... 输入n Command (m for help):n 输入p Command actione extendedp primary partition (1-4)p 输入1 Partition number (1-4): 1 回车 First cylinder (1-2610, default 1): Usi

阿里云服务器linux主机如何添加swap分区

为什么要添加Swap分区?swap分区,即交换区,作用为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中.这样,系统总是在物理内存不够时,才进行Swap交换. 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用

linux 新建swap 分区

阿里云主机一般默认不带swap分区,需要手工新建. 1)查看磁盘情况: [[email protected]_app ~]# fdisk -l Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes

Ubuntu 16.04创建Swap分区或增加Swap分区容量

要在Ubuntu中要创建Swap分区主要有如下2种方式: 一.传统创建方式 一般情况下,我们都会使用dd命令来预先创建交换分区文件,然后再用/dev/zero将该文件的内容全部置零,创建时还将用到bs参数来设置要创建的交换空间大小,以及使用count来指定要创建的block数. 例如,我们要创建4G的交换分区文件可以使用如下命令: sudo dd if=/dev/zero of=/swapfile bs=1G count=4 二.快速创建方式 你可能已经注意到了,上述方式创建Swap交换文件的过

linux初学者-swap分区篇

linux初学者-swap分区篇 swap是虚拟内存,是在硬盘中分区一块区域,当内存占满但是又急迫需要时临时当作内存使用,使用效率低于内存.本文将对linux系统中swap分区的建立做一个简要介绍. swap分区本质也是一个分区,所以在做swap分区之前先要进行普通分区,如下图所示,分区完成后先不保存退出,输入"t"来改变分区功能id,选择需要进行修改的分区后,输入ID号来改变分区功能标识,dos分区记录方式的swap分区标识编号为82,而gpt则为14.完成后保存退出. 输入命令&q

Ramdisk虚拟内存盘,Swap分区

虚拟内存盘是通过软件将一部分内存(RAM)模拟为硬盘来使用的一种技术.相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度.但是RAM的易失性也意味着当关闭电源后这部分数据将会丢失.但是在一般情况下,传递到RAM盘上的数据都是在硬盘或别处永久贮存的文件的一个拷贝.经由适当的配置,可以实现当系统重启后重新建立虚拟盘. 中文名 虚拟内存盘 释    义 模拟硬盘 适应领域 计算机领域 特    点 极大的提高文件访问的速度 目录 1 原理和用途 2 实现及软件 原理和用途

Centos7 开启swap分区

阿里云购买的机器,默认不会开启swap分区,如有需要,需自行开启. 阿里当前的做法是: 1.不创建swap分区,由镜像决定 2.将vm.swappiness设定为0,即永不使用swap分区 开启swap分区 新建一个专门的文件用于swap分区 dd if=/dev/zero of=/data/swap bs=1024 count=8388616 注:此文件的大小是count的大小乘以bs大小,上面命令的大小是8GB 通过mkswap命令将上面新建出的文件做成swap分区 mkswap /data

Unix系统下对swap分区大小修改

随着科技不断的进步,内存大小在不断的加大,使得swap分区的用处越来越小.所以在实际生产环境中有时需要对系统的swap分区大小来进行调整,不过建议在安装系统时就定义好是否要swap分区.swap分区的大小是多少,如果是条件允许的话建议swap分区在2GB~4GB间,如果还不够建议直接加内存.使用2GB的swap是因为有一些特殊的软件可能在平时使用的时候会使用到swap分区,如高性能的Oracle.当然,如果后期在使用的过程中发现swap分区过大,磁盘空间又使用紧张,那么就很有必要对系统的swap