爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Linux交换空间(swap space)

      首页 知识中心 其他 文章详情页

      Linux交换空间(swap space)

      2023-05-10 06:03:07 阅读次数:146

      Linux,swap

      Linux交换空间(swap space)


      一、什么是swap?


      每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?

       

      Linux交换空间(swap space)

      swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

      二、为什么需要swap?


      要回答这个问题,就需要回答swap给我们带来了哪些好处。

      • 对于一些大型的应用程序(如LibreOffice、video editor等),在启动的过程中会使用大量的内存,但这些内存很多时候只是在启动的时候用一下,后面的运行过程中很少再用到这些内存。有了swap后,系统就可以将这部分不这么使用的内存数据保存到swap上去,从而释放出更多的物理内存供系统使用。

      • 很多发行版(如ubuntu)的休眠功能依赖于swap分区,当系统休眠的时候,会将内存中的数据保存到swap分区上,等下次系统启动的时候,再将数据加载到内存中,这样可以加快系统的启动速度,所以如果要使用休眠的功能,必须要配置swap分区,并且大小一定要大于等于物理内存

      • 在某些情况下,物理内存有限,但又想运行耗内存的程序怎么办?这时可以通过配置足够的swap空间来达到目标,虽然慢一点,但至少可以运行。

      • 虽然大部分情况下,物理内存都是够用的,但是总有一些意想不到的状况,比如某个进程需要的内存超过了预期,或者有进程存在内存泄漏等,当内存不够的时候,就会触发内核的OOM killer,根据OOM killer的配置,某些进程会被kill掉或者系统直接重启(默认情况是优先kill耗内存最多的那个进程),不过有了swap后,可以拿swap当内存用,虽然速度慢了点,但至少给了我们一个去debug、kill进程或者保存当前工作进度的机会。

      • 如果看过Linux内存管理,就会知道系统会尽可能多的将空闲内存用于cache,以加快系统的I/O速度,所以如果能将不怎么常用的内存数据移动到swap上,就会有更多的物理内存用于cache,从而提高系统整体性能。

      三、swap的缺点?


      上面介绍了swap的优点,那swap的缺点呢?swap是存放在磁盘上的,磁盘的速度和内存比较起来慢了好几个数量级,如果不停的读写swap,那么对系统的性能肯定有影响,尤其是当系统内存很吃紧的时候,读写swap空间发生的频率会很高,导致系统运行很慢,像死了一样,这个时候添加物理内存是唯一的解决办法。

      由于系统会自动将不常用的内存数据移到swap上,对桌面程序来说,有可能会导致最小化一个程序后,再打开时小卡一下,因为需要将swap上的数据重新加载到内存中来。

      四、到底要不要swap?

      4.1.内存勉强够用

      建议配置swap,这样内核会将不常用的数据从内存移到swap上,从而有更多的物理内存供系统调用,提升系统性能,同时也避免因偶尔的物理内存不够造成进程异常退出,提升系统稳定性,但对服务器来说,一定要限制或者监控swap空间的使用情况,当出现swap空间使用超预期或者swap in/out频繁时,要及时采取措施,不然对性能影响很大

      4.2.内存充裕

      理论上来说,如果物理内存足够多并且不需要休眠功能,那swap就没什么用,可关键问题是我们很难保证物理内存在任何情况下都够用,因为总有意想不到的情况发生,比如某些进程耗内存超预期,服务器压力超预期,内存泄漏等。

      在内存充裕的这种情况下,如果发生异常,swap能帮到我们吗?

      4.3.服务器环境

      服务器一般都会配置监控程序,当内存用量达到一个阈值的时候告警或者会自动重启异常的进程。但如果没有监控呢?当内存被用光的时候,分两种情况:

      • 配置了swap:这时服务器还能提供服务,但性能会降低好几个档次,直到最终处于几乎死机状态,并且这一过程将持续很长一段时间,对服务器来说是个灾难;所以配置swap只能让服务再苟延残喘一会儿,然后就是长时间的服务中断(比如原来是每秒处理1000个请求的服务器,由于频繁使用swap,导致现在每秒只能处理50个请求,站在系统角度,进程还在运行,但是在业务角度服务已经几乎中断了)。

      • 没配置swap:这时内核的OOM killer被触发,在默认配置下,耗内存的进程会被优先kill掉,这种进程一般就是我们的业务进程,这时守护进程就会自动重启该业务进程(没有守护进程?开什么玩笑),这种情况只会造成服务中断一会会儿(取决于进程重启的时间),不会出现上面因配置了swap而导致性能很差且服务持续中断的情况。就算OOM killer没有kill掉预期的进程,我们通过测试也能发现,然后将OOM killer配置成重启系统,那也比配置了swap在那里苟延残喘的好。

      从上面可以看出,对服务器来说,似乎不配置swap更好,可以让有问题的进程尽快重启,缩短业务受影响的时间。

      并且,就算没有配置监控程序,我们还有cgroups中的内存控制模块,可以控制一组进程所能使用的最大内存数,当超过这个数的时候,可以触发相应的行为,比如重启进程等。

      总的来说,对于桌面环境来说,一般内存没有服务器端那么充裕,并且由于使用场景原因,会打开很多不同类型的GUI窗口,但前台的进程只有一个,大部分都是在后台待命,所以配置swap对提升性能还是有必要的;对于服务器来说,配置的内存都比较充裕,启动起来的进程也都是要干活的进程(不然就不应该被启动起来),并且也没有休眠的需求,再加上有了cgroups之后,可以更轻松的限制进程的内存使用,个人认为配置swap基本没什么必要了,看看coreos,默认就没有swap。

      五、怎么配置swap?


      当我们确定好配置多大的swap空间后,具体应该怎么配置呢?当然可以在系统安装的时候分配好,但如果对安装时分配的大小不满意,我们还可以在后面进行调整。在这里将不介绍安装的时候怎么配,只介绍如何往系统中添加更多的swap空间。

      Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:

      • swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。

      • swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。

      六、查看系统中已经配置的swap


      使用命令swapon -s即可查看系统中在用的swap

      Linux交换空间(swap space)

      如果配置有多个swap分区或者文件的话,这里将会有多行,每行代表一个正在被系统使用的swap分区或文件,下面是每个字段的意思:

      • Filename:如果swap类型是分区,这里将是分区的路径,如果swap类型是文件,这里将是文件的路径

      • Type:swap的类型,partition代表这是一个swap分区,file代表这是一个swap文件

      • Size:swap的大小,单位是k,这里524284表示的差不多是512M

      • Used:已经被使用的大小,这里0表示还没有被使用到

      • Priority:优先级,优先级高的swap将会被优先使用,同等优先级的swap将会被均匀的使用(round-robin算法),优先级可以通过“swapon -p”命令来设置

      七、查看系统中swap in/out的情况


      并不是swap空间占用多就一定性能下降,真正影响性能是swap in和out的频率,频率越高,对系统的性能影响越大,我们可以通过vmstat命令来查看swap in/out的频率

      [root@hdp101 ~]# vmstat 2
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
       1  0      0 298276  25788 21850032    0    0     9     9    5    5  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0    14   67   55  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   47   51  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   39   37  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   51   56  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   44   42  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   36   43  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   38   37  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   79   72  0  0 100  0  0
       0  0      0 298344  25796 21850032    0    0     0     0   51   47  0  0 100  0  0
       0  0      0 298376  25796 21850032    0    0     0     0   36   43  0  0 100  0  0
       0  0      0 298468  25796 21850032    0    0     0     0   50   47  0  0 100  0  0
       0  0      0 298476  25796 21850032    0    0     0     0   38   44  0  0 100  0  0
       0  0      0 298508  25796 21850032    0    0     0     0   33   35  0  0 100  0  0

      八、如何优化swap性能?


      怎么配置swap可以让它的性能更好呢?

      • 尽量使用swap分区,相对于swap文件来说,分区肯定是连续的物理磁盘空间,而swap文件有可能不是

      • 将swap分区和系统所在的分区放在不同的磁盘上,这样就不会和系统盘抢同一个磁盘的I/O带宽

      • 如果有多块磁盘的话,可以在每个盘上创建一个swap分区,并且将它们的优先级设置的一样,这样内核就会平均的访问这些swap分区,性能相当于原来的N倍(这里N是磁盘的数量)

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://kangll.blog.csdn.net/article/details/113094711,作者:开着拖拉机回家,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Linux下addr2line命令用法

      下一篇:使用chroot 试用alpinelinux

      相关文章

      2025-05-14 10:33:25

      超级好用的C++实用库之网络

      在网络相关的项目中,我们经常需要去获取和设置设备的IP地址、子网掩码、网关地址、MAC地址等信息。这些信息一般与操作系统相关,在Windows系统和Linux系统上调用的接口是不一样的。

      2025-05-14 10:33:25
      Linux , 参数 , 地址 , 接口 , 网卡 , 返回值
      2025-05-14 10:03:13

      超级好用的C++实用库之线程基类

      在C++中,线程是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源,比如:内存空间和系统资源,但它们有自己的指令指针、堆栈和局部变量等。

      2025-05-14 10:03:13
      Linux , void , Windows , 函数 , 操作系统 , 线程
      2025-05-13 09:51:17

      使用Kernel 2.6版本的Linux系统运行dbca创建数据库实例时报错ORA-27125

      使用Kernel 2.6版本的Linux系统运行dbca创建数据库实例时报错ORA-27125

      2025-05-13 09:51:17
      dbca , Linux , ORA
      2025-05-13 09:50:59

      增加swap空间大小

      增加swap空间大小

      2025-05-13 09:50:59
      swap , 大小 , 空间
      2025-05-12 08:40:18

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell变量】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell变量】

      2025-05-12 08:40:18
      Linux , 变量
      2025-05-09 08:51:09

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

      2025-05-09 08:51:09
      Linux , Shell , var
      2025-05-09 08:51:09

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell基本运算符】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell基本运算符】

      2025-05-09 08:51:09
      Linux , Shell , 语法 , 运算符
      2025-05-07 09:09:26

      【Linux 从基础到进阶】Linux中的用户认证与授权

      在Linux系统中,**用户认证(authentication)和授权(authorization)**是两个核心的安全机制,用来控制系统资源的访问和管理用户操作权限。用户认证确保登录的用户是合法的,授权则决定用户能够执行哪些操作。

      2025-05-07 09:09:26
      Linux , 密码 , 用户 , 认证
      2025-05-07 09:08:54

      【Linux】什么是Linux?

      【Linux】什么是Linux?

      2025-05-07 09:08:54
      Linux , 文件 , 权限
      2025-05-07 09:08:42

      Linux系统中Crontab的用法详解

      在Linux系统中,任务调度是管理系统定期执行任务的重要方式,而crontab则是实现这一功能的强大工具。

      2025-05-07 09:08:42
      crontab , Linux , 任务
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5254404

      查看更多

      最新文章

      增加swap空间大小

      2025-05-13 09:50:59

      【Linux 从基础到进阶】Linux中的用户认证与授权

      2025-05-07 09:09:26

      【Linux】什么是Linux?

      2025-05-07 09:08:54

      【Linux 从基础到进阶】使用 Crontab 进行任务调度

      2025-05-06 09:19:21

      【Linux】密码策略、连接空闲超时时间设置

      2025-04-23 08:18:21

      在 Linux 上监听 Redis:从基础到进阶的实现与扩展

      2025-03-26 09:31:12

      查看更多

      热门文章

      Linux环境MySql忘记密码

      2023-02-20 10:34:59

      Linux命令之find的用法

      2022-11-16 11:57:57

      Linux搭建ES

      2024-09-25 10:14:21

      Linux rpm 命令参数使用详解[介绍和应用]

      2023-04-06 06:35:33

      Linux进程管理方法介绍

      2024-06-27 09:20:52

      Kali Linux安装AWVS漏扫工具

      2024-09-24 06:31:17

      查看更多

      热门标签

      linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      关于std::swap原理

      Linux之运行级别指令

      Linux 安装 JDK

      Linux内核设计与实现(4)---Timers and Time Management

      Linux启动流程与模块管理

      vmstat命令之linux性能分析

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号