Linux 清理内存缓存、缓冲区与交换区

Aug 2, 2020 23:00 · 229 words · 1 minute read Linux

Cache

有三三种不打断任何进程同时清理缓存的姿势。

  1. 只清理页缓存

    $ sync; echo 1 > /proc/sys/vm/drop_caches
    
  2. 清理 dentries 和 inodes

    $ sync; echo 2 > /proc/sys/vm/drop_caches
    
  3. 清理页缓存、dentries 和 inodes

    $ sync; echo 3 > /proc/sys/vm/drop_caches
    

sync 会刷新文件系统缓冲区。内核文档有提到,写 drop_cache 会在不杀掉任何应用程序/服务的情况下清理缓存。

第一条只清理页缓存的在生产环境中最安全。第三条如果不了解就不推荐使用。

Linux 是这么设计的,在读盘前会先查看磁盘缓存,如果缓存中有,那这个请求就不会到达磁盘。如果我们清理了缓存,缓存的命中率就降低了,操作系统会去磁盘上找东西。

Swap

$ swapoff -a && swapon -a