drop_caches 不会删除缓存吗?

drop_caches 不会删除缓存吗?

有时我发现我的交换文件比平常大一点。我尝试过sync && echo 3 > /proc/sys/vm/drop_caches但没有成功。但是当我尝试时,swapoff -a它需要更长的时间,但交换文件之后会更小。如何在不使用的情况下清除交换文件swapoff

答案1

3 > drop_caches指示内核丢弃所有缓存的数据(不再需要的数据)。

swapoff将尝试将当前交换中的尽可能多的数据拉回到内存中。它还可能触发删除一些缓存页面,以便为从交换文件进入内存的内容腾出空间。

你实际上很少需要这样做,内核在决定如何处理哪些数据方面做得相当好(例如,如果你正在使用一个大文件,它可能会缓存它并交换分配给其他正在运行的进程的内存)不是很活跃)。

我不确定您是否真的使用交换文件本身(即常规文件系统上的文件)或只是误解了 的输出free,但如果您这样做,真正有用的是专用交换分区,因为您不会'不会遇到任何可能的文件系统开销(但当然会保留空间供内核使用)。

顺便说一句,如果您使用tmpfs(通常安装在/dev/shm,现在/run也经常安装在和其他一些地方),那里保存的任何文件都会显示为“缓存”free

相关内容