Linux cache 分类
在Linux系统Memory中文件系统的cache分为两类:page cache 和 buffer cache
On Rethat:
#> free
total used free shared buffers cached
Mem: 760752 661332 99420 0 6476 317200
-/+ buffers/cache: 337656 423096
Swap: 1540088 283652 1256436
这个输出中:
第一行中的‘buffers’ 代表 kernel buffers, ‘cached’ 代表page cache, 它是用于文件INODE等操作的。
第二行中的‘buffer/cache’ 代表 buffer cache, 它是用于块设备的操作的。
清理cache的方法
只是清理page cache
#> sync; echo 1 > /proc/sys/vm/drop_caches
清理dentries and inodes
#> sync; echo 2 > /proc/sys/vm/drop_caches
清理PageCache, dentries and inodes
#> sync; echo 3 > /proc/sys/vm/drop_caches
特别注意: 在生产系统中,强烈建议不要使用echo 3 > /proc/sys/vm/drop_caches, 而是使用echo 1 > /proc/sys/vm/drop_caches。 echo 3 > /proc/sys/vm/drop_caches 可能造成运行系统的异常
如何调整系统相关的参数
事实上,操作系统本身是有page cache回收机制的,相关参数如下:
vm.min_free_kbytes 参数表示操作系统至少保留的空闲物理内存大小, 单位是KB
vm.vfs_cache_pressure 参数用来控制操作系统对内存的回收,默认值为100,通过提高该值可以加快系统对文件系统CACHE的回收