大多数 Linux 在系统安装时都会提醒并建议你划分一个 SWAP 交换分区,如果你是从 Windows 切换到 Linux 的新用户,兴许对这个 SWAP 会感到十分疑惑。

SWAP 交换分区到底是干什么用的呢?我们是否真的需要划一个 SWAP 分区呢?答案是:视情况而定!SWAP 分区在一些情况下可以提升 Linux 操作系统性能,但在某些情况下又会成为系统运行的瓶颈,下面我们就来详细介绍下 Linux 中的 SWAP 交换分区。

存放内存溢出来的数据

如何扩展/删除SWAP分区 http://www.linuxidc.com/Linux/2014-03/98311.htm

在OpenStack虚拟机实例中创建SWAP分区的一种方法 http://www.linuxidc.com/Linux/2013-07/87380.htm

Linux 中交换空间 (SWAP)应该分多大才好? http://www.linuxidc.com/Linux/2013-05/84252.htm

Linux SWAP 分区建立及释放内存 http://www.linuxidc.com/Linux/2013-03/81890.htm

Linux SWAP 交换分区配置说明 http://www.linuxidc.com/Linux/2013-03/82008.htm

Ubuntu 12.04的SWAP设置 http://www.linuxidc.com/Linux/2013-03/80208.htm

简单来说,SWAP 交换分区是用来存放内存溢出来的数据。我们可以将内存想像成一个盆子,运行程序时的数据都被作为水放在内存这个盆子当中。如果你运行太多的应用程序,导致水过多而(内存这个)盆子已经装不下时,就会将多于部分的水装到 SWAP 交换分区当中。

从理论上讲,SWAP 交换分区增大了可以使用的内存空间,但事实并非如此。因为内存的数据交换速度是非常快的,而 SWAP 交换分区是把物理磁盘当成内存的载体,也就是说:虽然使用 SWAP 可以让我们运行更多或更大的应用程序了,但物理磁盘的数据交换速度远比不上物理内存,因此也就可能造成运行性能的下降。而对硬盘特别是 SSD 磁盘的频繁读写,也会造成磁盘寿命的缩短和性能下降。

其实,我们可以把 SWAP 交换分区比喻成 Windows 中的 pagefile 页面文件,但两者在技术实现上仍有许多差异。

SWAP优先级

SWAP 交换分区会将内存中较少使用的数据移到磁盘当中,从而将更多的内存空间腾出来给其它的重要应用,也就是说:内存中较少使用的数据会被移动 SWAP 分区。

“较少使用”其实取决于“swappiness”阈值,在 Linux 中其实是一个可配置项。较高在 swappiness 值意味着数据更有可能被移到 SWAP 分区,较低的 swappiness 表示数据不太可能被移到 SWAP 分区。

SWAP与Linux休眠

最后还有一点需要注意:Linux 系统休眠的数据是存储到 SWAP 交换分区中的,也就是说如果系统没有配置 SWAP 交换分区,在 Linux 上是无法进行休眠的。

你是否需要SWAP分区呢?

你有必要为自己的 Linux 划一个 SWAP 分区吗?SWAP 交换分区对你来说是必要的吗?绝对不是! Linux 系统不配置 SWAP 也可以运行得很好,是否需要划分 SWAP 分区也有如下几个优缺点:

优点:

  • 内存用完时,提供更多运行空间
  • 可以休眠

缺点:

  • SWAP对磁盘的占用设定好之后是固定的,无法动态调整
  • 增加了磁盘的读写次数和损耗几率
  • 不一定提高性能(详细解释见下文)

SWAP起反作用的情况

开启 SWAP 交换分区也并非问题能提升 Linux 性能,在某些情况下使用 SWAP 可能比不使用更糟。

如果你在一台1GB内存和5400转硬盘的上网本上安装了 Linux,只需要多打开几个浏览器标签并多开几个应用就会造成内存占完而开始使用 SWAP 交换分区。由于硬盘只有5400转,随后便开始出现性能瓶颈。这是因为硬盘转速太慢,而又有大量的数据需要访问到 SWAP 交换分区,所以会造成机器越来越慢。在此时,我们通常需要重启系统来完全清除 SWAP 的内容。

关于SWAP的建议

  • 如果你需要 Linux 休眠功能,那么当然就要划分 SWAP 分区。该分区一般为你内存大小外加 10-25%
  • 如果你的内存小于4GB,并且希望得到小的性能提升(至少7200转磁盘),可以划分一个交换分区
  • 如果你的磁盘转速小于7200转,建议不要划分 SWAP 交换分区

更改Swappiness

我们可以直接在 /etc/sysctl.conf 文件中对 swappiness 值进行编辑,在该文件中找到 vm.swappiness 并对其值进行更改(最好是10),如果你没找到这个参数,可以直接在文件末尾添加:

1
vm.swappiness=10

该值主要表示我们希望 Linux 从内存与 SWAP 分区进行数据交换的强度,值为 10 则表示当内存占用到 90% 时开始将数据写入 SWAP。Ubuntu 的默认 swappiness 值为 60,这表示当内存占用到 40% 时开始将数据写入 SWAP。

Linux中的SWAP交换分区的更多相关文章

  1. Linux Swap交换分区介绍总结

    Swap交换分区概念   什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...

  2. Linux SWAP 交换分区配置说明

    一.SWAP 说明1.1 SWAP 概述        当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的 ...

  3. Linux Swap交换分区探讨

    Swap交换分区概念 Linux divides its physical RAM (random access memory) into chucks of memory called pages. ...

  4. Linux SWAP 交换分区大小与内存的关系

    LinuxSWAP交换分区大小与内存的关系SWAP(交换分区)[Windows虚拟内存]我们机房中一台Linux服务器运行缓慢,系统服务出现间歇性停止响应,让我过去处理一下这一问题,登录到服务器之后, ...

  5. Linux SWAP 交换分区配置说明(转)

    一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被 ...

  6. Linux基础-swap交换分区

    任务:对一块15G大小的硬盘进行分区,主分区为5G,扩展分区10G,一个逻辑分区5G作为swap交换分区,并激活查看新的swap分区 第一步,建立的新的SCSI硬盘,开启Linux系统前添加一块大小为 ...

  7. linux中增加swap分区文件的步骤方法

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

  8. linux swap交换分区说明/管理

    https://coolnull.com/3699.html 一.SWAP说明1.1 SWAP概述当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释 ...

  9. Linux 如何重新划分Swap交换分区

    SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“MoutPoint”(载入点)它至少要等于系统上实际 ...

随机推荐

  1. [moka同学笔记]Yii2 自定义class、自定义全局函数(摘录)

    1.在app\components下新建MyComponent.PHP namespace app\components; use Yii; use yii\base\Component; use y ...

  2. Lock的实现之ReentrantLock详解

    摘要 Lock在硬件层面依赖CPU指令,完全由Java代码完成,底层利用LockSupport类和Unsafe类进行操作: 虽然锁有很多实现,但是都依赖AbstractQueuedSynchroniz ...

  3. python CGI编程Apache配置

    1. 编辑http.conf,添加两行,路径可以自定义 <Directory "C:/AppServ/www/cgi-bin"> AllowOverride None ...

  4. 2013年最新流行的响应式 WordPress 主题【上篇】

    WordPress 是最流行的内容管理系统,经历了多年的发展和演变.它的成功体现在庞大的社区,数百万的用户,设计师和开发者推动着 WordPress 往更高的层次发展. 海量的免费主题是 WordPr ...

  5. 当jquery ajax遇上401请求

    jquery ajax是个很常用接口,而在请求时候,可能存在响应401的情况(身份认证过期或未登录),比较容易出现在混合应用上,如何进行身份认证,重发失败请求,还是值得注意的. ajax请求有两种方式 ...

  6. 如何对sharepoint图片库的文件夹的图片按照时间排序并分页显示

    /// <summary> /// 获取图片库第一层文件夹--根据文件夹名称排序 /// </summary> /// <param name="siteUrl ...

  7. 在ArcGIS中如何进行POI点抽稀

    对POI点添加权重等级类型信息.例如添加短整形字段Weight,并根据业务逻辑设置不同种类的POI的权重值,如分5类,0代表重要性最低的POI,4代表重要性最高. 在ArcMap的标注管理栏中,设置使 ...

  8. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q36-Q39)

    Question 36 You are designing a SharePoint 2010 application. You need to design the application so t ...

  9. ubuntu下cacti安装配置

    参考文献 http://kling.blog.51cto.com/3320545/1180778 前言: 原本是想源码安装的,但是现在发现还是太麻烦了,就直接通过apt-get install安装了. ...

  10. ubuntu 安装 swoole 和mac 安装swoole 扩展

    ubuntu php 安装swoole 比较容易 1. 从git下载源码 2. 下载pcre http://sourceforge.net/projects/pcre/files/pcre/8.36/ ...