Linux中的SWAP交换分区

时间:2022-10-12 15:53:59

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

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

存放内存溢出来的数据

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交换分区你有必要为自己的 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交换分区该值主要表示我们希望 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. App Widget

    AppWidgetProviderInfo对象: 为App Widget提供元数据(描述数据的数据,如XML.关系型数据的表结构),包括布 局,更新频率等数据.这个对象被定义在XML文件当中: App ...

  2. jquery可见性选择器(综合)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. python3抓取到的拉勾数据统计

    趁着最近有时间写了个拉勾爬虫抓取了后端.前端和移动端技术岗位的数据,总共大约6多万条记录,对其取前十名进行统计 按地域划分: 可以看出北上广深杭的数量远远超出其它城市,机会相对较多 2. 按融资阶段来 ...

  4. CENTOS 基础指令——查看系统环境

    1.查看内核版本 # cat /proc/version # uname -a # uname -r 2.查看linux版本 # cat /etc/issue # cat /etc/redhat-re ...

  5. iOS开发-用预处理指令代替注释

    有时候我们在调试程序的时候,想不执行某一段代码或者某些方法,我们会用注释,但是这样看上去就会让你的代码显示“很绿”,此时我们可以用一下代码 #if 0 // 你不想执行的代码 #endif 这样就可以 ...

  6. 【Android Developers Training】 97&period; 序言:访问通讯录数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. Linux文件打包与解压缩

    一.文件打包和解压缩 常用的压缩包文件格式.在 Windows 上我们最常见的不外乎这三种*.zip,*.rar,*.7z后缀的压缩文件,而在 Linux 上面常见常用的除了以上这三种外,还有*.gz ...

  8. Salt Document学习笔记1

    原文来自Salt Documentation,作者是 Thomas Hatch),我摘抄部分可能今后会用到或适合入门到精通的一些原文段落,简单翻译后发上来,便于查阅和研究 一.原理方面:The net ...

  9. POJ 2069 模拟退火算法

    Super Star Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6422   Accepted: 1591   Spec ...

  10. SpringMVC 多文件上传

    springMVC.xml 配置 <bean id="multipartResolver" class="org.springframework.web.multi ...