如何在 Linux 上清除 RAM 内存缓存、缓冲区和交换空间
与其他操作系统一样,GNU/Linux 实现了高效的内存管理,甚至比这还要好。但是,如果有任何进程正在消耗您的内存,而您想清除它,Linux 提供了一种刷新或清除 RAM 缓存的方法。
在本文中,我们将探讨如何清除 Linux 系统上的 RAM 内存缓存、缓冲区和交换空间以提高整体性能。
了解 RAM 内存缓存、缓冲区和交换空间
让我们探索 Linux 系统上的 RAM 内存缓存、缓冲区和交换空间。
RAM 内存缓存
RAM 内存缓存是内核用来保存经常访问的数据的一种机制。虽然这可以提高系统响应能力,但缓存过载可能会导致保留过时的数据,从而影响性能。
缓冲
和缓存一样,缓冲区也暂时保存数据,但用途不同。缓冲区存储在 CPU 和硬盘等组件之间传输的数据,以促进顺畅的通信。但是,过多的缓冲数据会降低系统速度。
交换空间
交换空间是硬盘上的一个分配区域,当物理 RAM 耗尽时,它充当虚拟内存。虽然它可以防止系统因内存不足而崩溃,但如果过度使用,则会降低系统速度。
清除 Linux 中的缓存、缓冲区和交换空间
在某些情况下,您可能需要清除缓存、缓冲区或交换空间,如下所述。
如何清除 Linux 中的 RAM 内存缓存?
每个 Linux 系统都有三个选项可以清除缓存而不中断任何进程或服务。
清除页面缓存
1.如果仅清除PageCache,可以使用以下命令,该命令将专门清除PageCache,帮助释放内存资源。
sudo sync; echo 1 > /proc/sys/vm/drop_caches
清除 dentry 和 Inode
2.要仅清除dentry和inode,您可以使用以下命令,该命令将同步文件系统并清除 dentry 和 inode,通过释放缓存的目录和 inode 信息来提高系统性能。
sudo sync; echo 2 > /proc/sys/vm/drop_caches
清除 PageCache、Dentry 和 Inode
3.要清除pagecache、dentry和inode,您可以使用以下命令,它将同步文件系统并清除 pagecache、dentry 和 inode,有助于释放内存并提高系统性能。
sudo sync; echo 3 > /proc/sys/vm/drop_caches
以下是上述命令各个部分的解释:
- 用于
sudo
以超级用户身份执行命令。 - 这
sync
将刷新文件系统缓冲区。 - 分号
“;”
用于分隔一行上的多个命令。 - 该
echo 3 > /proc/sys/vm/drop_caches
命令用于删除页面缓存,即最近访问的文件的临时存储区域。
注意:该drop_caches
文件控制应清除哪种类型的缓存数据,其值如下:
1
– 仅清除页面缓存。2
– 清除 dentry 和 inode。3
– 清除页面缓存、dentry 和 inode。
正如内核文档中提到的那样,写入drop_caches将清除缓存而不会终止任何应用程序/服务,命令 echo正在执行写入文件的工作。
如果您必须清除磁盘缓存,则第一个命令在企业和生产中是最安全的,因为它只会“...echo 1 > ….”
清除PageCache。
除非您清楚自己在做什么,否则不建议“...echo 3 >”
在生产中使用上述第三个选项,因为它将清除pagecache、dentry和inode。
如何清除 Linux 中的交换空间?
要清除交换空间,您可以使用带有选项的swapoff-a
命令,这将禁用所有交换分区。
sudo swapoff -a
然后,通过运行以下命令将其恢复,这将激活所有交换分区。
sudo swapon -a
在 Linux 中释放缓冲区、缓存和交换空间是否可取?
一般来说,手动释放Linux 中可能被 Linux 内核使用的缓冲区和缓存并不是一个好主意,因为 Linux 内核旨在有效地管理这些资源,手动清除它们可能会破坏系统性能。
但是,在极少数情况下,您可能需要清除缓冲区和缓存,例如,如果您遇到严重的内存压力,并且无法通过其他方式释放内存。在这些情况下,您应该谨慎行事,并注意潜在的性能影响。
同样,在正常情况下,清除 Linux 中的交换空间通常不是常规或可取的做法。
自动内存优化
为了自动化该过程并定期清除内存,您可以设置一个 cron 作业来按照指定的时间间隔运行命令。
打开 crontab 配置。
crontab -e
添加以下行以每天午夜清除缓存、缓冲区和交换空间:
0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches 0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches 0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches 0 0 * * * sudo swapoff -a && sudo swapon -a
有关使用 cron 安排作业的更多信息,您可能需要参考我们的文章“ 11 个 Cron 安排作业”。
是否建议清除 Linux 生产服务器上的 RAM 缓存?
不是。假设您安排了一个脚本在每天凌晨 2 点清除 RAM 缓存。每天凌晨 2 点都会执行该脚本,刷新 RAM 缓存。但是,有一天,您的网站上在线用户数量出乎意料地多,这对您的服务器资源提出了很高的要求。
同时,计划的脚本运行并清除缓存中的所有内容。现在,所有用户都在从磁盘检索数据,这可能会导致服务器崩溃和数据库损坏。因此,只有在必要时才清除 RAM 缓存至关重要,并注意您的操作。否则,您可能会成为 Cargo Cult 系统管理员。
结论
高效的内存管理对于平稳运行的 Linux 系统至关重要。定期清除 RAM 内存缓存、缓冲区和交换空间可以显著提高系统性能。通过了解这些机制并使用提供的命令,您可以让 Linux 系统保持最佳运行状态。
目前就这些了。如果您喜欢这篇文章,请记得在评论中分享您的宝贵反馈。让我们知道您认为在生产和企业环境中清除 RAM 缓存和缓冲区的好方法。