Contents

Linux中交换空间使用

1. 概述

Linux 用户通常知道交换空间,但它常常是误解的来源。

在本文中,我们将了解启用交换总是有益的一些原因。我们还将解决使用交换会降低系统速度的常见误解。

2. 什么是交换空间?

交换空间位于磁盘上,以分区或文件的形式存在。Linux 使用它来扩展进程可用的内存,将不常用的页面存储在那里。

我们通常在安装操作系统时配置交换空间。但是,它也可以在之后使用mkswapswapon命令 进行设置。

让我们看看为什么交换空间在正常系统操作期间很有用,即使我们有足够的可用物理内存。

3. Linux什么时候使用Swap空间?

3.1. 释放未使用的 RAM 用于更多磁盘缓冲区

让我们从使用free 命令开始,看看 Linux 是如何使用内存的:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G         15G        618M         17M        223M        711M
Swap:           46G        1.1G         45G

我们感兴趣的列是freebuff/cacheavailable

在此示例中,我们有 618M 的free未使用内存和 711Mavailable用于启动新进程。93M 的差额目前是buff/cache的223M 的一部分,被用于内核缓冲区和页面缓存。在这里,Linux 估计如果需要的话,它可以交换到磁盘达到该数量的 RAM。可用内存更高,因为我们正在使用交换空间。

Linux 总是尽可能多地使用 RAM。这是因为它比任何其他存储设备都快得多,即使是最快的驱动器也是如此。

如果一个文件缓存在内存中,关联的进程将运行得更快。第一次访问文件时缓存文件的动作称为磁盘缓冲 。写入也会写入内存并很快返回到磁盘。

有了更多available内存,Linux 可以缓存更多文件,从而有可能提高其整体性能。**释放内存的一个好方法是交换很少使用的页面。**这是启用交换空间有益的原因之一。

3.2. 暂停到磁盘

挂起到磁盘或休眠 功能在桌面系统上很有用。它在关闭之前将当前系统状态从 RAM 保存到磁盘。下次系统启动时,保存的状态将恢复到 RAM 中,让我们可以从中断的地方继续。

Linux 在挂起到磁盘时使用交换空间。如果我们想休眠,我们肯定需要一个交换分区或文件大小等于我们的 RAM 或更大。

现在我们已经看到了启用交换的好处,让我们来解决交换会减慢系统速度的错误说法。

4. 交换空间不会使系统变慢

抖动是一个我们可能希望避免的众所周知的性能问题。当 RAM 几乎耗尽时,Linux 会进入一个频繁交换内存的循环,以至于它成为主要活动。这使得系统无法使用。

有些人试图通过完全禁用交换并仅使用 RAM 来避免这种情况。从表面上看,这似乎是个好建议,但仔细观察后,我们会发现情况并非如此。

4.1. 释放内存页总是会发生

即使没有交换空间,某些内存页在某些情况下仍然会被交换

正如我们已经了解到的,当一个文件被读取时,数据被放入页面缓存 中以改善未来的访问。因为原始文件在磁盘上,所以即使禁用交换空间,它仍然可以被交换。

4.2. 永远不会交换匿名页面

还有另一种内存称为匿名内存 。此内存由进程请求,但不由磁盘上的文件支持。在这些匿名页面中,有些是在启动期间仅使用一次的内存。**这些页面是要交换的完美候选者。**因此,如果我们启用交换,它们将不再浪费物理内存。