清除 Linux 缓存

2025年5月8日 | 阅读 12 分钟

在本教程中,我们将学习如何在 Linux 中清除 RAM 缓存并清理交换空间。

与所有其他操作系统一样,GNU/Linux 也实现了内存管理系统。尽管 Linux 的内存管理比其他操作系统更高效,并且使用更广泛。但是,在某些情况下,您想控制内存管理,或者有一个或多个进程正在占用您系统的 RAM。在这种情况下,我们想阻止它;Linux 提供了一些方法来刷新(清除 RAM 缓存)。

缓存简介

缓存是用于在计算环境中临时存储某些内容(通常是数据)的软件或硬件。它是少量更昂贵、更快的内存,用于提高频繁或最近访问数据的性能。临时,缓存数据保存在缓存客户端本地的存储介质中,该介质与主存储不同。通常,缓存由 CPU(中央处理器)、操作系统、Web 浏览器和应用程序使用。

缓存用作大容量或主存储,无法满足客户端需求。此外,缓存可减少数据访问时间,降低延迟,并增强 I/O(输入/输出)。缓存过程可提高应用程序性能,因为大多数应用程序工作负载依赖于 I/O 操作。

Clear cache Linux

缓存的工作原理

每当缓存客户端尝试访问数据时,它首先会经过缓存。如果数据存在于缓存中,则称为缓存命中。缓存命中导致的尝试次数百分比称为命中率或缓存命中率。

  • 在缓存中未找到的请求数据称为缓存未命中,将从主内存中获取并复制到缓存中。
  • 如何实现它,以及排除哪些数据不被缓存以腾出空间给任何新数据,取决于所使用的缓存算法、系统策略和缓存协议。
  • Chrome、Firefox 和 Safari 等几种 Web 浏览器应用浏览器缓存来提高常用网页的性能。

在缓存中,当用户浏览网页时,浏览器会将来自旧浏览会话的文件保存在用户的计算存储中。浏览器从缓存中获取几乎所有需要的文件,而不是从 Web 服务器返回文件来获取先前访问过的页面。这种方法称为读取缓存。

缓存至关重要,原因如下

  • 缓存用于减少正在运行数据的延迟。
  • 它能带来更好的应用程序或系统性能。
  • 它将输入/输出重定向到缓存,将 I/O 任务降低到较低级别以及存储区域网络的外部存储。
  • 数据可以永久保留在外部存储阵列或传统存储中。
  • 它通过阵列或存储提供的复制和快照等各种功能来维护数据的完整性和一致性。
  • 闪存仅用于对低延迟有利的工作负载部分。
  • 它允许对更昂贵的存储进行经济高效的利用。

缓存内存要么封装在芯片中,要么添加到系统板上的 CPU。增强缓存内存的唯一方法是升级 CPU 到最新一代以及新机器中的主板。较早的主板可能留有空白插槽,可用于增加缓存内存。

缓存的使用

缓存用于存储临时文件,涉及软件和硬件组件。CPU 缓存是硬件缓存的一个很好的例子。它是计算机处理器上的一小部分内存,用于存储通用或频繁使用的计算机指令。

软件和多个应用程序也有自己的缓存。这种缓存会临时存储与应用程序相关的指令、文件或数据,以便更快地检索。
应用程序缓存的一个例子是 Web 浏览器。浏览器有自己的缓存,可以保存来自旧浏览会话的信息,供将来使用。

使用缓存的其他软件类型如下

  • 操作系统:在操作系统中,通常存储常用的文件和指令。
  • 域名系统:这些系统可用于存储用于将域名转换为 Internet 协议地址的数据。
  • 内容分发网络:在内容分发网络中,数据被缓存以更快地提供网站。
  • 数据库:数据库减少数据库查询的延迟。

缓存的优点

缓存有多种优点,如下

  • 性能:在缓存中存储数据可以使系统运行得更快。例如,浏览器缓存用于存储来自旧浏览会话的文件,可以加快访问旧会话的速度。数据库缓存提高了数据检索速度,而无需其他资源和时间来下载。
  • 离线工作:此外,缓存允许应用程序在没有互联网连接的情况下工作。此外,应用程序缓存提供了对常用且最近访问过的数据的快速访问。但是,缓存可能无法提供对应用程序所有功能的访问。
  • 资源效率:缓存支持物理设备在保持资源的同时保持灵活性和速度。例如,快速缓存访问可以节省电池电量。

缓存的缺点

缓存存在一些问题,如下

  • 损坏:缓存可能会损坏,导致保存的数据不再有用。数据损坏可能导致应用程序(包括浏览器)崩溃并显示不正确的数据。
  • 过时信息:应用程序缓存有时会显示过时或旧信息。这可能导致应用程序出现故障或返回错误信息。如果应用程序或网站更新,使用旧会话的缓存版本不会影响更新。对于静态内容,这不是问题,但对于在会话之间或跨会话修改的动态内容来说,这是一个问题。
  • 性能:通常,缓存是短暂内存的小型存储。如果缓存变得非常大,它们可能导致性能下降。此外,它们会消耗许多应用程序可能需要的内存,严重影响应用程序性能。

缓存算法

缓存维护指令由缓存算法提供。其中一些示例如下

  • 最不常使用:它记录了缓存条目被使用或访问的频率。使用次数最少的条目会首先被删除。
  • 最近最少使用:它首先删除最近最少使用的项目。当之前的项目更有可能被使用时,最近最少使用方法非常有效。
  • 最近最少使用:它将最近使用的项目放在缓存的开头附近。如果缓存达到其限制,则会删除最近最少使用的项目。

缓存策略

几种缓存策略决定缓存如何工作。然后,包含以下内容

  • 写绕过缓存:它将写入操作写入存储并跳过缓存。这可以防止在有大量写入 I/O 时缓存被刷新。此策略的缺点是,除非数据是通过存储读取的,否则数据不会被缓存。由于数据未被缓存,读取操作会变慢。
  • 写通缓存:它将数据写入存储和缓存。使用写通缓存策略的好处是,新写入的信息始终被缓存。因此,可以快速读取。缺点是,在信息写入主存储和缓存之前,写入操作不会被认为已完成。它可能会解决许多写入操作的延迟问题。
  • 写回缓存:它在某种程度上与写通缓存策略相同,因为每次写入操作都会被发送到缓存。但是,写回缓存后,写入操作将被视为完成。一旦信息被缓存,它就会从缓存复制到存储。

使用此策略,读写操作的延迟都很低。缺点是,取决于所使用的缓存策略,在信息写入存储之前,信息仍然可能丢失。

缓存类型

缓存用于多种目的。许多缓存方法是

  • 缓存内存:这是任何微处理器都可以比常规 RAM 更快使用的 RAM。通常,它直接连接到 CPU,并用于缓存大量使用的指令。此外,RAM 缓存比基于磁盘的 RAM 缓存工作得更快,但 RAM 缓存比缓存内存慢,因为它靠近 CPU。
  • CPU 缓存:这是一种位于 CPU 上的内存。CPU 缓存内存以 CPU 速度而不是系统总线速度运行,并且比 RAM 快。
  • 缓存服务器:有时也称为代理缓存。缓存服务器是专用的网络服务或服务器。它在本地存储网页和互联网的其他内容。
  • 磁盘缓存:它保存最近访问过的数据以及附近可能很快会使用的数据位置。一些磁盘缓存会根据数据的读取频率来缓存信息。频繁读取的存储块称为热块,这些块会自动传输到缓存。
  • 闪存缓存:也称为固态硬盘缓存,它使用 NAND 闪存芯片临时存储数据。闪存缓存可快速完成数据请求。
  • 持久缓存:这是一种存储容量,即使系统崩溃或重新启动,数据也不会丢失。
  • RAM 缓存:通常,它包含嵌入在内存模块和主板上的永久内存,可以安装在专用附件位置或插槽中。
  • 翻译后备缓冲器:也称为 TLB。TLB 是一种内存缓存,可以存储最近的虚拟内存到物理地址的转换,并提高虚拟内存任务的速度。

如何在 Linux 中清除缓存?

几乎在所有 Linux 系统中,都提供了三种清除缓存的方法。其中一些方法可以在不中断任何正在进行的进程或服务的情况下使用。三种方法如下

  1. 仅清除 PageCache
  2. 清除 dentries 和 inodes
  3. 清除 dentries 和 inodes,清除 PageCache

我们将详细讨论这三种方法,并进行实际演示

1. 仅清除 PageCache-

这是清理 Linux 缓存的最安全方法之一,因为它可以在不终止任何正在进行的活动、应用程序和服务的情况下清除缓存。据说这是清理缓存的最安全方法,因为它可以在生产环境中使用,并且只清理 PageCache。在此方法中,使用以下命令

命令

说明

在上面的命令中,“sync”用于刷新文件系统缓冲区,命令用“;”分隔,按顺序执行。

但是,shell 会等待每个命令执行或终止,然后才开始执行序列中的下一个命令。

drop_caches 用于在不终止或影响任何其他正在运行的应用程序或服务的情况下刷新或清理缓存,正如内核文档中清楚提到的那样。“echo”命令负责向文件写入内容。

通过终端清除 PageCache 的步骤

步骤 1 - 在 Linux 中打开终端并键入以下命令,然后按 Enter。命令执行后,它将显示有关系统内存的信息,如示例所示

命令

上面的命令用于显示已使用的内存量,并显示总可用内存、交换内存等其他因素。我们可以在使用每种方法之前和之后使用这个“free”命令。

在使用实际命令之前和之后使用“free”命令是必要的,以便我们可以轻松地查看或检测内存分配的变化。让我们看一个例子来理解整个过程是如何实际工作的

示例

Clear cache Linux

2. 清除 dentries 和 inodes-

此方法用于清除 dentries 和 inodes 的内存。它与第一种方法非常相似,但略有不同,因为它用于清除 dentries 和 inodes 两者的内存,而不是清除 PageCache 的内存。不过,它与上面讨论的第一种方法非常相似。此方法使用的命令如下

命令

让我们看一个例子来理解如何实现这种方法

示例

Clear cache Linux

3. 清除 dentries 和 inodes,清除 PageCache

这是最有效的方法之一。但是,除非您知道自己在做什么,否则不建议常规使用它,因为它不被认为是最安全的方法,尤其是在生产环境中使用。此方法使用的命令使用“echo 3 >”,该命令同时清理 PageCache、dentries 和 inodes。

命令

为了更详细地了解它是如何实际工作的,请参考给出的示例

示例

Clear cache Linux

注意:除非您知道自己在做什么,否则不建议在生产环境中使用它,因为它会立即清理 PageCache 以及 dentries 和 inodes,如我们上面已经讨论过的。

交换空间

一般而言,当物理内存的使用率接近峰值时,就会使用交换空间。因此,当且如果系统需要更多内存资源且物理 RAM 已满时,所有不活动的页面都将被转移到交换内存空间。

但是,交换内存空间也可以作为少量但有效的 RAM 来帮助系统。不过,毫无疑问,不建议将交换空间视为物理 RAM。

如何在 Linux 中清理交换空间?

要清理系统上的交换内存,您只需循环关闭交换。这将把所有数据从交换内存移回 RAM。这也意味着您需要确保您的系统有足够的 RAM 来支持此操作。

一种简单的方法是运行 'free-m' 命令来查看交换、RAM 中正在使用的内容,然后禁用交换。

关闭后,您应该等待 30 秒或更长时间,以便操作有时间完成,然后重新开启交换。这会清除交换内存缓存并重新启用它,但在清除交换之前,您应该查看系统的当前(或默认)设置。

要查看系统交换区的当前设置,只需打开终端,使用以下命令,如输出所示

输出

Clear cache Linux

如您所见,我们系统的当前交换值为“60”秒。但是,如果您想更改它,可以将它设置在 0 到 100 之间。编辑(更新)此值的过程非常简单。您只需在终端中键入以下命令并按 Enter 键

命令

(此处 x 是我们要设置的交换值)

如上面输出所示,我们系统的当前交换值(或默认值)为 60。让我们尝试将交换值更改为 40。

1. 按键盘上的 Ctrl+Alt+T 打开终端。

Clear cache Linux

2. 打开终端后,键入以下命令并按 Enter,如下面的图像所示

输出

Clear cache Linux

注意:系统可能会要求您输入密码,因为我们需要以超级用户(root 用户)权限运行此命令。

验证

要验证交换值是否已成功更新,请键入以下命令并按 Enter 键

输出

Clear cache Linux

如输出所示,我们已成功将交换值更新为 40。

清理交换空间

清理交换空间的过程非常简单,因为我们只需要 **循环关闭** 交换,这样所有数据或不活动的页面都会从交换内存空间移回 RAM。关闭交换后,您必须等待 30 秒,然后重新启动或 **循环开启** 交换空间。

有用的命令

这些是一些将帮助我们清理交换空间的常用命令

Clear cache Linux

清理交换内存的步骤

让我们看看如何使用这些命令来清理交换空间或内存

步骤 1. 按键盘上的“Ctrl+Alt+ T ”打开终端。

步骤 2. 打开终端后,键入“sudo -i”命令,因为我们可能需要 **超级用户权限** 来运行上述命令

Clear cache Linux

步骤 3. 键入“free -m”命令以查看 **循环关闭** **交换** 之前的内存利用率:

Clear cache Linux

步骤 4 现在,键入“swapoff -a”命令并按 Enter 以循环关闭交换,如下所示

Clear cache Linux

步骤 5. **循环关闭** 后,等待至少 40 秒。

步骤 6. 现在键入“swapon -a”并按 Enter 以重新启用交换。要查看内存使用情况的差异(或变化),请再次运行“free -m”命令,如下所示

Clear cache Linux

希望这将在您遇到这种情况时帮助您清理系统的交换内存。


下一主题7 QC 工具