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--

本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1762907,如需转载请自行联系原作者

阿里云云主机添加swap分区与swap性能优化相关推荐

  1. linux 设置swap分区,更改Swap分区大小 Linux

    >>参照原文:https://blog.csdn.net/hshl1214/article/details/6048278 以下的操作都要在root用户下进行,使用free -m 查询当前 ...

  2. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  3. 添加磁盘MBR,GPT,Swap分区和Linux文件系统

    MBR-GPT的区别:MBR的分区数是15,存储数据大小32位,最大分区容量是2TB:GPT又名:UEFI,分区数128,存储数据64位,最大容量到P 管理MBR磁盘和分区:MBR=512byte,b ...

  4. Linux 中 Swap 分区的概念和使用

    Linux 中 Swap 分区的概念和使用 [root@iZhp3h4x7t41yl0eevhf1dZ ~]# free -h total used free shared buff/cache av ...

  5. Linux设置swap分区

    1.Ubuntu设置swap分区 查看swap位置 cat /proc/swaps 得到你的swap文件的位置,但不一定叫swap,或许叫/dev/sdb5. 关闭并删除较小的swap文件 sudo ...

  6. linux的SWAP分区

    linux的SWAP分区 from net 汇总网络信息,并进行测试验证,感谢网络. Linux SWAP 深度解读 https://blog.csdn.net/wh8_2011/article/de ...

  7. 【Linux入门到精通系列讲解】Linux如何创建和删除swap分区

    Linux中的swap分区类似Windows的虚拟内存,在硬盘空间不足的情况下,可通过创建swap分区来解决,下面小编就给大家介绍下Linux如何创建和删除swap分区. 文章目录 1 swap概述 ...

  8. 【Linux】swap分区简介及空间增加方式

    swap分区简介 Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存 ...

  9. Ramdisk虚拟内存盘,Swap分区

    虚拟内存盘是通过软件将一部分内存(RAM)模拟为硬盘来使用的一种技术.相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度.但是RAM的易失性也意味着当关闭电源后这部分数据将 ...

最新文章

  1. 【集合论】二元关系 ( 定义域 | 值域 | 域 | 逆运算 | 逆序合成运算 | 限制 | 像 | 单根 | 单值 | 合成运算的性质 )
  2. pci中断号分配_西门子S7-200 SMART中断及中断指令概述
  3. 两个很有用的进程间通信函数popen,pclose
  4. gin 项目结构_Gin框架中文文档
  5. python编码思维导图_Python入门之ATM+购物车代码版思维导图
  6. 判断字符串解析是JsonObject或者JsonArray
  7. 婆媳关系不好首先就有一个斤斤计较的婆婆
  8. CentOS Apache服务器配置https
  9. 二、三角高程测量计算(C#语言)
  10. 计算机丢失msvcrt.dll,msvcrt.dll修复工具
  11. matlab在循环中保存jpg格式_matlab中的图片保存方法
  12. 基金投资理财专栏介绍
  13. linux 的压缩文件格式,常见压缩文件的格式及linux中打包或解压的方法
  14. GitHub上的免费中文编程书
  15. mac bootcamp 安装 win7
  16. java中unicode编码和utf8编码相互转换
  17. Mysql 更改用户名密码
  18. 阿里大数据ACP认证对找工作到底有用嘛?
  19. SmallJava V2.0 产品说明书(20210405)
  20. 零基础学编程套路~~~

热门文章

  1. Linux-通过XShell使用sz命令提示找不到
  2. java方法区超详细汇总,方法区到底是干什么用的?不懂方法区不能说了解jvm!
  3. dart语法中list相关详解
  4. 做运营,你需要“一张画布绘到底”
  5. 重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准
  6. Java实现几种常见排序方法
  7. Java的对象初始化过程
  8. vsftp建立虚拟用户不同目录分配不同权限操作步骤详解
  9. ORA-16038: log 3 sequence# 103 cannot be archived
  10. dwz ajax session超时跳转登录页(struts2自定义拦截器)