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

简介:

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分区是否起作用表示质疑,现在看来,阿里在云主机中确实没做这方面的手脚。

image

注:关于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,如需转载请自行联系原作者


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
存储 缓存 并行计算
LMCache:基于KV缓存复用的LLM推理优化方案
LMCache推出KV缓存持久化方案,显著优化大模型推理首Token延迟(TTFT)。通过将KV缓存存储至GPU、CPU或磁盘,实现跨请求复用,支持任意位置文本匹配,与vLLM深度集成,多轮对话、RAG场景提速3-10倍,降低硬件压力,提升吞吐。开源支持Linux/NVIDIA,正拓展AMD及更多生态支持。
1193 15
LMCache:基于KV缓存复用的LLM推理优化方案
|
存储 SQL 运维
TIDB和MySQL的区别
TIDB和MySQL的区别
2483 0
|
数据可视化 Ubuntu Linux
研发实用工具,推荐一款代码统计神器GitStats
研发实用工具,推荐一款代码统计神器GitStats
2450 0
研发实用工具,推荐一款代码统计神器GitStats
|
8月前
|
人工智能 编解码 JSON
省下99%的显存!手把手教你用LoRA打造专属行业大模型
AI博主“狸猫算君”详解LoRA技术:用低秩适配(仅训0.1%参数)实现大模型轻量化微调,RTX 4090即可运行。手把手教学医疗模型微调全流程,含QLoRA显存优化、参数配置、训练评估与模型合并,助你低成本打造专业领域AI助手。
752 1
|
运维 Kubernetes Cloud Native
莉莉丝游戏云原生之路
本文将介绍莉莉丝游戏云原生化的背景、挑战,以及应对的解决方案,记录了莉莉丝游戏云原生化历程,为游戏架构云原生转型提供经验。
莉莉丝游戏云原生之路
|
监控 算法 测试技术
软件测试中的性能瓶颈分析与优化策略
本文旨在深入探讨软件测试过程中性能瓶颈的识别与优化方法。通过对性能瓶颈的概念、分类及其成因进行分析,结合实际案例,提出一套系统的性能瓶颈诊断流程和针对性的优化策略。文章首先概述了性能瓶颈的基本特征,随后详细介绍了内存泄漏、资源竞争、算法效率低下等常见瓶颈类型,并阐述了如何通过代码审查、性能监测工具以及负载测试等手段有效定位问题。最后,结合最佳实践,讨论了代码级优化、系统配置调整、架构改进等多方面的解决措施,旨在为软件开发和测试人员提供实用的性能优化指导。
692 5
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
1642 1
|
Linux Docker 容器
更改docker容器中的时间而不影响宿主机
更改docker容器中的时间而不影响宿主机
|
消息中间件 Java Kafka
Java中的消息队列与事件总线设计
Java中的消息队列与事件总线设计

热门文章

最新文章