Linux 清理内存缓存、缓冲区与交换区
Aug 2, 2020 23:00 · 229 words · 1 minute read
Cache
有三三种不打断任何进程同时清理缓存的姿势。
-
只清理页缓存
$ sync; echo 1 > /proc/sys/vm/drop_caches
-
清理 dentries 和 inodes
$ sync; echo 2 > /proc/sys/vm/drop_caches
-
清理页缓存、dentries 和 inodes
$ sync; echo 3 > /proc/sys/vm/drop_caches
sync
会刷新文件系统缓冲区。内核文档有提到,写 drop_cache 会在不杀掉任何应用程序/服务的情况下清理缓存。
第一条只清理页缓存的在生产环境中最安全。第三条如果不了解就不推荐使用。
Linux 是这么设计的,在读盘前会先查看磁盘缓存,如果缓存中有,那这个请求就不会到达磁盘。如果我们清理了缓存,缓存的命中率就降低了,操作系统会去磁盘上找东西。
Swap
$ swapoff -a && swapon -a