系统相关 Linux 缓存清理
Linux 缓存清理
偶然想到,文章正确的顺序是什么。解决问题的办法放最后,前边一堆铺垫吊胃口?那就反过来吧,正如
有余力则学文。
一、缓存释放办法
清理
page_cache(page_cache是硬盘和内存之间的缓存):sync && echo 1 > /proc/sys/vm/drop_caches
清理可回收的
slab对象(包括目录缓存、文件缓存):sync && echo 2 > /proc/sys/vm/drop_caches
清理
slab对象和page_cache:sync && echo 3 > /proc/sys/vm/drop_caches
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free reclaimable slab objects (includes dentries and inodes):
echo 2 > /proc/sys/vm/drop_caches
To free slab objects and pagecache:
echo 3 > /proc/sys/vm/drop_caches- inode 是表示文件的数据结构(下文详细介绍)
- dentries 是表示目录的数据结构
二、缓存产生原因
缓存的原理类同:热点数据,首次访问,读写磁盘,然后缓存起来;下次访问,从缓存中拿。
三、free命令详解
free显示系统中空闲和使用的物理内存和交换内存的总量,以及内核使用的缓冲区和缓存。
这些信息是通过解析
/proc/meminfo来收集展示:
total (总内存)
对应
/proc/meminfo中的MemTotal + SwapTotalused (已使用内存 =
total - free - buffers - cache)free (空闲内存)
对应
/proc/meminfo中的MemFree + SwapFreeshared (主要是tmpfs使用的内存)
对应
/proc/meminfo中的Shmem, 在内核 2.6.32 中可用,如果不可用则显示为0buffers (内核缓冲区使用的内存)
对应
/proc/meminfo中的Bufferscache (page cache 和 slabs 使用的内存 )
对应
/proc/meminfo中的Cached+Slabbuff/cache (
buffers + cache)available (估算的可用内存)
估算的启动一个新应用程序可以使用的内存,与缓存或空闲字段提供的数据不同,该字段考虑了page cache,而且由于某些缓存正在使用,并非所有可回收的内存 slabs 都将被回收。
对应
/proc/meminfo中的MemAvailable, 在内核3.14上可用, 在内核2.6.27+上仿真, 否则与free相同