周五看到QQ群里在讨论Linux主机上到底需不需要开启swap空间,而且目前公有云主机默认都是把swap关了的,很多公司也是没有开启swap,那到底需不需要开启呢?


我之前在看《鸟哥的Linux私房菜》上他写了这么一段话:swap在目前的桌面计算机来讲,存在的意义已经不大了,这是因为目前的X86主机所含的内存实在都太大了,所以我们的系统大概率用不到swap,不过,如果针对服务器或者工作站这些常年上线的系统来说,swap还是需要的。


当然,这段话是《鸟哥的Linux私房菜》第三版里写的(在第四版不知道还是不是这么写的),那时候的内存还远远没有现在大,那现在到底需不需要呢?我们先来看看什么是swap,它的作用是什么。

什么是swap

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

swap的主要功能

其实上面基本已经将swap的主要功能说了,这里再来重述一下:
(1)、当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
(2)、Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
(3)、如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入"休眠"模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为"唤醒"主机状态的依据;
(4)、在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size;

swap给我们带来什么好处

上面介绍了swap的主要功能,其实就是swap的优点。在说swap给我们带来好处之前先说说swap的缺点。由于swap是磁盘上的一个区域,要么是文件,要么是分区,甚至它们的组合,其实都逃不脱"在磁盘上",那么很明显的一个缺点就是速度,磁盘的速度和内存的速度不是一个量级的,就算现在的SSD磁盘,还是跟不上内存的速度,所以说如果不停的读写swap,对磁盘的性能是有很大的影响的,尤其是在物理内存吃紧,swap读写频率又高的极端情况下,这时候除了加物理内存别无他法了。

有的小伙伴看到这里可能在想,哇,我还用它干啥,我直接把我内存加够不就行了。骚年莫急,我将慢慢道来。
来看看下面这些情况:
(1)、有些应用程序在启动的时候会需要大量内存,但是在启动完成后需要的内存很小,这时候swap就很是时候了,假如全部用物理内存,其实就有点浪费资源了,谁的钱不是钱呢?你说是吧。
(2)、现在很多小伙伴开发都用Ubuntu,Ubuntu有休眠的功能,如果需要用到休眠的话,也是需要swap的,它会把休眠之前内存中的数据保存到swap中,你下次用的时候,就直接从swap加载到内存中,省的麻烦。
(3)、有些小公司讲究节约成本,甚至有的把这个当成kpi了,所以就不能把内存搞得蛮大了,我们就需要在保证系统正常运行所需内存的情况下,配备swap,既可以保证业务运行,也可以防患于未然。
(4)、现在大部分物理内存都够用了,很多公司也完全放弃了swap。但是谁也不知道下一秒会发生什么问题,比如内存泄漏,比如某个进程需要内存超过预期,这时候如果只有物理内存,可能就会直接OOM了,等不到我们收到报警,进行处理。如果这时候有swap,我们收到物理内存不够报警的时候还会有swap顶一下,回滚或者加内存什么的也有足够的时间,避免手忙脚乱发生生产事故。

当然还有很多情况,这里就不例举了。从上面其实可以看出,swap有它的好处,也有它的缺点,具体用不用是根据每个公司具体情况来定的,不是说不用,也不是说一定要用(当然,有的软件是一定要用的)。就像今天上午在微信群里和一为小伙伴讨论要不要秒级报警一样,每个公司有每个公司的打法,在讨论问题的时候切莫以自己公司的就是标准,我一直认为互联网时代没有唯一的标准,只有不断探索,不断追求,当然,大部分公司基本都是采用"前车之鉴"这种模式,比如效仿BAT公司成熟方案,学习各大高科技公司的落地实施等。

说了这么多,其实也就几句话:swap空间到底用不用,取决于应用软件需不需要,取决于公司的规范标准,还却决于作为运维人员自己的考虑,更多情况下还却决于现实(你的公司舍不舍得花钱)。

Linux下swap到底有没有必要使用的更多相关文章

  1. Linux 下 swap 分区及作用详解

    我们在安装系统的时候已经建立了 swap 分区.swap 分区是 Linux 系统的交换分区,当内存不够用的时候,我们使用 swap 分区存放内存中暂时不用的数据.也就是说,当内存不够用时,我们使用 ...

  2. Linux下swap(交换分区)的增删改

    swap介绍 Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合.交换分区的作用是,当系统物理内存吃 ...

  3. Linux下JDK到底应该安装在哪儿?

    1 Linux 目录结构 即使这是个菜鸟级的问题,也经常难住老鸟.我就见过很资深的程序员把JDK不合适地安装到/home目录下.虽然不一定有最正确的安装位置,但一定有不适当的安装位置.为了确定我们到底 ...

  4. Linux下swap分区多大才合适的问题探讨

    说明: 1.这个话题在每个Linux发行版中都各不相同,且在当下内存硬盘的时代下,再组个磁盘阵列之后速度相当. 2.我觉得硬盘大的情况下,有多大搞多大,我只要控制内存的使用率在99%时才使用swap, ...

  5. linux增加swap空间的方法小结

    起因及背景 近期编译AOSP(android 10.0)是总是遇到内存溢出,查了半天,无果.猜测增加下swap空间大小是否能解决,随即尝试下,果然是如此. 当然,还有其他作法,比如直接增加主机的内存( ...

  6. linux下vi编辑某文件时,操作出现 错误提示: E325: ATTENTION 2, Found a swap file by the name ".p1.c.swp"

    当我在linux下用vi打开p1.c文件时 root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/指针# vi p1.c 会出现如下信息: E325: ATTENTION Found ...

  7. 在linux下,怎么去查看一个运行中的程序, 到底是占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...

  8. Linux下修改Swap分区大小

    据了解Linux下可以有两种方法创建交换空间,一种是创建交换分区,另一种是创建交换文件.本文记录的是创建交换文件的方法,因为我用的是这种方法.. 添加交换文件步骤: 1.找个地方创建一个.swap的文 ...

  9. Linux环境下Swap配置方法

    Linux环境下Swap配置方法 场景: 今天下午安装一个CentOS6.5操作系统,忘记配置swap分区.看看如何安装系统之后,增加和删除swap分区.方法如下:1.内存占用情况[root@josh ...

随机推荐

  1. "五号标题"组件:<h5> —— 快应用组件库H-UI

     <import name="h5" src="../Common/ui/h-ui/text/c_h5"></import> < ...

  2. Python操作rabbitmq系列(三):多个接收端消费消息

    接着上一章.这一章,我们要将同一个消息发给多个客户端.这就是发布订阅模式.直接看代码: 发送端: import pikaimport sys connection = pika.BlockingCon ...

  3. group_concat有长度限制

    group_concat有长度限制     group_concat 详细用法请点此链接.   group_concat有长度限制!长度陷阱用了group_concat后,select里如果使用了li ...

  4. shell脚本知识

    1.提示符变量PS1 修改提示符变量:PS1="[u\@\h \t \w]" 修改环境变量设置文件bash_profile需要使用source或者.加上该文件使之生效 位置参数从1 ...

  5. work of 1/5/2016

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 UI页面切换,词本显示下滑条     6 继续下滑条等增删补 ...

  6. Alpha Release Note 12/15/2015

    内容提要: ******Personal Photo Experience可供您存放所有的私人照片,系统会自动整理内容,您可以借助搜索功能快速找到所需图片,同时过滤重复图片和低质量图片,给您全新的搜索 ...

  7. Spring Cloud 系列之 Gateway 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则.动态路由规则(配合服务发现的路由规则 ...

  8. G - Messy codeforces1262C

    题目大意: 输入n和m,n是n个字符,m是m个前缀.对前缀的规定可以配对的括号.比如(),,((()))等等.在输入n个括号字符,对这个n个字符,通过交换使其满足m个前缀.交换次数不限,规则想当与re ...

  9. 小小小小小flag

    2020:300道题 小小小小小flag 150红题 100道橙题 50道黄题 努力变强!加油 我的主页: 主页https://www.luogu.com.cn/user/306734 谢谢大家,目前 ...

  10. 15分钟从零开始搭建支持10w+用户的生产环境(二)

    上一篇文章,把这个架构的起因,和操作系统的选择进行了详细说明. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(一)   二.数据库的选择 对于一个10W+用户的系统,数据库选择很重要. 一 ...