先说一个总结,彻底(尽可能的)清理干净 Linux 缓存:
1 | sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches |
-
下面是关于 Linux 清理系统缓存方法的介绍。
我们可以通过操作写入 /proc/sys/vm/drop_caches
文件来清理 Linux 的缓存。
释放 Pagecache:
1
echo 1 > /proc/sys/vm/drop_caches
释放可回收的 Slab 对象(包括 Dentry 和 Inode):
1
echo 2 > /proc/sys/vm/drop_caches
释放 Pagecache 和可回收的 Slab 对象:
1
echo 3 > /proc/sys/vm/drop_caches
有一些点我们需要关注下:
这是一个非破坏性操作,不会释放任何脏对象。
要增加此操作释放的对象数量,我们应该在写入
/proc/sys/vm/drop_caches
之前进行sync
。这将最大限度地减少系统上脏对象的数量,并创建更多要删除的候选对象。写入
/proc/sys/vm/drop_caches
文件不是控制各种内核缓存(Inodes、Dentries、Pagecache 等)增长的手段。当系统上的其他地方需要内存时,这些对象会由内核自动回收。使用此文件可能会导致性能问题。 由于它会丢弃缓存的对象,因此可能会花费大量 I/O 和 CPU 来重新创建删除的对象,尤其是在大量使用这些对象的情况下。 因此,不建议在测试或调试环境之外使用。
写入
/proc/sys/vm/drop_caches
文件的操作会被记录到系统内核日志中(可以往里面写4
禁用),比如:1
2
3
4
5echo 3 > /proc/sys/vm/drop_caches
cat /var/log/kern.log
...
Apr 7 15:56:31 tj5-s1-v6-tj5-128473-2yqgrsr3 kernel: [878266.423329] bash (3636078): drop_caches: 3
...
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GuKaifeng's Blog!
评论(延迟加载 / 需要可访问 GitHub Issues)