Linux中的SWAP交换分区
大多数 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交换分区的更多相关文章
- Linux Swap交换分区介绍总结
Swap交换分区概念 什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...
- Linux SWAP 交换分区配置说明
一.SWAP 说明1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的 ...
- Linux Swap交换分区探讨
Swap交换分区概念 Linux divides its physical RAM (random access memory) into chucks of memory called pages. ...
- Linux SWAP 交换分区大小与内存的关系
LinuxSWAP交换分区大小与内存的关系SWAP(交换分区)[Windows虚拟内存]我们机房中一台Linux服务器运行缓慢,系统服务出现间歇性停止响应,让我过去处理一下这一问题,登录到服务器之后, ...
- Linux SWAP 交换分区配置说明(转)
一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被 ...
- Linux基础-swap交换分区
任务:对一块15G大小的硬盘进行分区,主分区为5G,扩展分区10G,一个逻辑分区5G作为swap交换分区,并激活查看新的swap分区 第一步,建立的新的SCSI硬盘,开启Linux系统前添加一块大小为 ...
- linux中增加swap分区文件的步骤方法
一.swap交换分区 Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临 ...
- linux swap交换分区说明/管理
https://coolnull.com/3699.html 一.SWAP说明1.1 SWAP概述当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释 ...
- Linux 如何重新划分Swap交换分区
SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“MoutPoint”(载入点)它至少要等于系统上实际 ...
随机推荐
- javascript--Object
概述 (1)定义 对象(object)是JavaScript的核心概念,也是最重要的数据类型.JavaScript的所有数据都可以被视为对象. 简单说,所谓对象,就是一种无序的数据集合,由若干个&qu ...
- [javascript] 对象拷贝
Object.prototype.clone = function() { var copy = (this instanceof Array) ? [] : {}; for (attr in thi ...
- WebSocket connection to,Error during WebSocket handshake: Unexpected response code: 404
使用标准的JSR 356注解时,需要使用tomcat 8.x版本,如果使用tomcat 7.x的版本,则需要继承WebSocketServlet,否则会报WebSocket connection to ...
- C#如何实现一个简单的流程图设计器
以前看过不少Window Form开发的流程图设计器,支持节点拖放,非常方便即可设计出很美观的流程图,作为一个程序员,对其内部实现原理一直很好奇,感叹有朝一日自己如果可以开发一款类似的软件那是多么让人 ...
- 精通 CSS 选择器(二)
补充了一些之前遗漏掉的选择器以及一些在 Selectors Level 4 中新定义的选择器. 属性选择器不区分大小写 [attribute="value" i],在 Select ...
- JavaScript强化教程——jQuery AJAX 实例
什么是 AJAX?AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML).简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据 ...
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- Java中“==”与equals方法的区别
1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...
- iOS开发init方法解析
自定义的init方法,都必须调用父类的init方法. 一般情况下为: - (id)init { [super init]; xxx = xxx; } 通常情况下,这种模式可以满 ...
- MAVEN中的插件放在哪个dependcies里面
如果你用maven来管理项目的话,你会发现你要依赖很多plugin,于是引出了一个问题. 一个project中可能有两个<dependcies>这个tag, 如下 <dependci ...