清除 Linux 缓存2025年5月8日 | 阅读 12 分钟 在本教程中,我们将学习如何在 Linux 中清除 RAM 缓存并清理交换空间。 与所有其他操作系统一样,GNU/Linux 也实现了内存管理系统。尽管 Linux 的内存管理比其他操作系统更高效,并且使用更广泛。但是,在某些情况下,您想控制内存管理,或者有一个或多个进程正在占用您系统的 RAM。在这种情况下,我们想阻止它;Linux 提供了一些方法来刷新(清除 RAM 缓存)。 缓存简介缓存是用于在计算环境中临时存储某些内容(通常是数据)的软件或硬件。它是少量更昂贵、更快的内存,用于提高频繁或最近访问数据的性能。临时,缓存数据保存在缓存客户端本地的存储介质中,该介质与主存储不同。通常,缓存由 CPU(中央处理器)、操作系统、Web 浏览器和应用程序使用。 缓存用作大容量或主存储,无法满足客户端需求。此外,缓存可减少数据访问时间,降低延迟,并增强 I/O(输入/输出)。缓存过程可提高应用程序性能,因为大多数应用程序工作负载依赖于 I/O 操作。 ![]() 缓存的工作原理每当缓存客户端尝试访问数据时,它首先会经过缓存。如果数据存在于缓存中,则称为缓存命中。缓存命中导致的尝试次数百分比称为命中率或缓存命中率。
在缓存中,当用户浏览网页时,浏览器会将来自旧浏览会话的文件保存在用户的计算存储中。浏览器从缓存中获取几乎所有需要的文件,而不是从 Web 服务器返回文件来获取先前访问过的页面。这种方法称为读取缓存。 缓存至关重要,原因如下
缓存内存要么封装在芯片中,要么添加到系统板上的 CPU。增强缓存内存的唯一方法是升级 CPU 到最新一代以及新机器中的主板。较早的主板可能留有空白插槽,可用于增加缓存内存。 缓存的使用缓存用于存储临时文件,涉及软件和硬件组件。CPU 缓存是硬件缓存的一个很好的例子。它是计算机处理器上的一小部分内存,用于存储通用或频繁使用的计算机指令。 软件和多个应用程序也有自己的缓存。这种缓存会临时存储与应用程序相关的指令、文件或数据,以便更快地检索。 使用缓存的其他软件类型如下
缓存的优点缓存有多种优点,如下
缓存的缺点缓存存在一些问题,如下
缓存算法缓存维护指令由缓存算法提供。其中一些示例如下
缓存策略几种缓存策略决定缓存如何工作。然后,包含以下内容
使用此策略,读写操作的延迟都很低。缺点是,取决于所使用的缓存策略,在信息写入存储之前,信息仍然可能丢失。 缓存类型缓存用于多种目的。许多缓存方法是
如何在 Linux 中清除缓存?几乎在所有 Linux 系统中,都提供了三种清除缓存的方法。其中一些方法可以在不中断任何正在进行的进程或服务的情况下使用。三种方法如下
我们将详细讨论这三种方法,并进行实际演示 1. 仅清除 PageCache-这是清理 Linux 缓存的最安全方法之一,因为它可以在不终止任何正在进行的活动、应用程序和服务的情况下清除缓存。据说这是清理缓存的最安全方法,因为它可以在生产环境中使用,并且只清理 PageCache。在此方法中,使用以下命令 命令 说明 在上面的命令中,“sync”用于刷新文件系统缓冲区,命令用“;”分隔,按顺序执行。 但是,shell 会等待每个命令执行或终止,然后才开始执行序列中的下一个命令。 drop_caches 用于在不终止或影响任何其他正在运行的应用程序或服务的情况下刷新或清理缓存,正如内核文档中清楚提到的那样。“echo”命令负责向文件写入内容。 通过终端清除 PageCache 的步骤 步骤 1 - 在 Linux 中打开终端并键入以下命令,然后按 Enter。命令执行后,它将显示有关系统内存的信息,如示例所示 命令 上面的命令用于显示已使用的内存量,并显示总可用内存、交换内存等其他因素。我们可以在使用每种方法之前和之后使用这个“free”命令。 在使用实际命令之前和之后使用“free”命令是必要的,以便我们可以轻松地查看或检测内存分配的变化。让我们看一个例子来理解整个过程是如何实际工作的 示例 ![]() 2. 清除 dentries 和 inodes-此方法用于清除 dentries 和 inodes 的内存。它与第一种方法非常相似,但略有不同,因为它用于清除 dentries 和 inodes 两者的内存,而不是清除 PageCache 的内存。不过,它与上面讨论的第一种方法非常相似。此方法使用的命令如下 命令 让我们看一个例子来理解如何实现这种方法 示例 ![]() 3. 清除 dentries 和 inodes,清除 PageCache这是最有效的方法之一。但是,除非您知道自己在做什么,否则不建议常规使用它,因为它不被认为是最安全的方法,尤其是在生产环境中使用。此方法使用的命令使用“echo 3 >”,该命令同时清理 PageCache、dentries 和 inodes。 命令 为了更详细地了解它是如何实际工作的,请参考给出的示例 示例 ![]() 注意:除非您知道自己在做什么,否则不建议在生产环境中使用它,因为它会立即清理 PageCache 以及 dentries 和 inodes,如我们上面已经讨论过的。交换空间一般而言,当物理内存的使用率接近峰值时,就会使用交换空间。因此,当且如果系统需要更多内存资源且物理 RAM 已满时,所有不活动的页面都将被转移到交换内存空间。 但是,交换内存空间也可以作为少量但有效的 RAM 来帮助系统。不过,毫无疑问,不建议将交换空间视为物理 RAM。 如何在 Linux 中清理交换空间?要清理系统上的交换内存,您只需循环关闭交换。这将把所有数据从交换内存移回 RAM。这也意味着您需要确保您的系统有足够的 RAM 来支持此操作。 一种简单的方法是运行 'free-m' 命令来查看交换、RAM 中正在使用的内容,然后禁用交换。 关闭后,您应该等待 30 秒或更长时间,以便操作有时间完成,然后重新开启交换。这会清除交换内存缓存并重新启用它,但在清除交换之前,您应该查看系统的当前(或默认)设置。 要查看系统交换区的当前设置,只需打开终端,使用以下命令,如输出所示 输出 ![]() 如您所见,我们系统的当前交换值为“60”秒。但是,如果您想更改它,可以将它设置在 0 到 100 之间。编辑(更新)此值的过程非常简单。您只需在终端中键入以下命令并按 Enter 键 命令 (此处 x 是我们要设置的交换值) 如上面输出所示,我们系统的当前交换值(或默认值)为 60。让我们尝试将交换值更改为 40。 1. 按键盘上的 Ctrl+Alt+T 打开终端。 ![]() 2. 打开终端后,键入以下命令并按 Enter,如下面的图像所示 输出 ![]() 注意:系统可能会要求您输入密码,因为我们需要以超级用户(root 用户)权限运行此命令。验证 要验证交换值是否已成功更新,请键入以下命令并按 Enter 键 输出 ![]() 如输出所示,我们已成功将交换值更新为 40。 清理交换空间清理交换空间的过程非常简单,因为我们只需要 **循环关闭** 交换,这样所有数据或不活动的页面都会从交换内存空间移回 RAM。关闭交换后,您必须等待 30 秒,然后重新启动或 **循环开启** 交换空间。 有用的命令 这些是一些将帮助我们清理交换空间的常用命令 ![]() 清理交换内存的步骤 让我们看看如何使用这些命令来清理交换空间或内存 步骤 1. 按键盘上的“Ctrl+Alt+ T ”打开终端。 步骤 2. 打开终端后,键入“sudo -i”命令,因为我们可能需要 **超级用户权限** 来运行上述命令 ![]() 步骤 3. 键入“free -m”命令以查看 **循环关闭** **交换** 之前的内存利用率: ![]() 步骤 4 现在,键入“swapoff -a”命令并按 Enter 以循环关闭交换,如下所示 ![]() 步骤 5. **循环关闭** 后,等待至少 40 秒。 步骤 6. 现在键入“swapon -a”并按 Enter 以重新启用交换。要查看内存使用情况的差异(或变化),请再次运行“free -m”命令,如下所示 ![]() 希望这将在您遇到这种情况时帮助您清理系统的交换内存。 下一主题7 QC 工具 |
我们请求您订阅我们的新闻通讯以获取最新更新。