加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

为什么 Linux 离不开 Swapping 你知道吗?

发布时间:2021-05-18 23:03:24 所属栏目:Linux 来源:互联网
导读:正是因为 Linux 上的所有进程都会通过虚拟内存这一层抽象间接与物理内存打交道,而 Swapping 也充分利用了该特性,它能够让应用程序看到操作系统内存充足的假象

正是因为 Linux 上的所有进程都会通过虚拟内存这一层抽象间接与物理内存打交道,而 Swapping 也充分利用了该特性,它能够让应用程序看到操作系统内存充足的假象,然而并不知道它使用的部分虚拟内存其实在磁盘上,因为内存和磁盘的读写速度上的巨大差异,这部分虚拟内存的读写非常缓慢,我们在 为什么 CPU 访问硬盘很慢 曾经介绍过:

在 SSD 中随机访问 4KB 数据所需要的时间是访问主存的 1,500 倍,机械磁盘的寻道时间是访问主存的 100,000 倍[^2]

如此巨大的性能差异使得触发 Swapping 的进程可能会遇到性能损失,同一个页面的频繁换入换出会导致极其明显的性能抖动,如果没有相应的背景知识,遇到类似的问题可能会很难查到根本原因,例如 MySQL 在错误配置 NUMA 时就会出现内存页频繁换入换出,影响服务质量的问题。

Linux 提供了两种不同的方法启用 Swapping,分别是 Swap 分区(Swap Partition)和 Swap 文件(Swapfile):

Swap 分区是硬盘上的独立区域,该区域只会用于交换分区,其他的文件不能存储在该区域上,我们可以使用 swapon -s 命令查看当前系统上的交换分区;

Swap 文件是文件系统中的特殊文件,它与文件系统中的其他文件也没有太多的区别;

Swap 分区的大小是需要系统管理员手动设定的,然而不同的场景最好设置不同交换分区大小,例如:桌面系统的交换分区大小可以是系统内存的两倍,这可以让我们同时运行更多的应用程序;服务器的交换分区应该关闭或者使用少量的交换分区,不过一旦启用交换分区,就应该引入监控监控应用程序的性能。

我们到现在已经对 Linux 上的 Swapping 有了一定的了解,接下来回到这篇文章想要讨论的问题 — 『为什么 Linux 需要 Swapping』,我们将从以下两个方面介绍 Swapping 解决的问题、触发入口和执行路径:

Swapping 可以直接将进程中使用相对较少的页面换出内存,立刻给正在执行的进程分配内存;

Swapping 可以将进程中的闲置页面换出内存,为其他进程未来使用内存做好准备;

为什么 Linux 离不开 Swapping 你知道吗?

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读