Linux中交换空间使用
1. 概述
Linux 用户通常知道交换空间,但它常常是误解的来源。
在本文中,我们将了解启用交换总是有益的一些原因。我们还将解决使用交换会降低系统速度的常见误解。
2. 什么是交换空间?
交换空间位于磁盘上,以分区或文件的形式存在。Linux 使用它来扩展进程可用的内存,将不常用的页面存储在那里。
我们通常在安装操作系统时配置交换空间。但是,它也可以在之后使用mkswap和swapon命令 进行设置。
让我们看看为什么交换空间在正常系统操作期间很有用,即使我们有足够的可用物理内存。
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
我们感兴趣的列是free、buff/cache和available。
在此示例中,我们有 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. 永远不会交换匿名页面
还有另一种内存称为匿名内存 。此内存由进程请求,但不由磁盘上的文件支持。在这些匿名页面中,有些是在启动期间仅使用一次的内存。**这些页面是要交换的完美候选者。**因此,如果我们启用交换,它们将不再浪费物理内存。