本文参考博客:《(Linux)释放系统缓存操作》
目录
前言
在Linux系统中有先进的缓存机制,会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作,有效缩短 I/O系统调用(比如read,write)的时间。但当进行了大量文件操作之后,缓存会把内存资源基本用光,导致系统缓慢,使用swap空间,影响了性能,这时就需要清理缓存了。
手动释放缓存操作:
通过设置/proc/sys/vm/drop_caches来释放内存
操作环境:
Ubuntu 16.04
1.清除cache前同步
释放cache前先使用sync命令做同步,将所有未写的系统缓冲区写到磁盘中,以确保文件系统的完整性,否则在释放缓存的过程
中,可能会丢失未保存的文件。
sync
2.Linux释放cache
/proc/sys/vm/drop_caches的值为是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
可进行如下操作对cache进行清除:
<1>释放页缓存
echo 1 > /proc/sys/vm/drop_caches
<2>释放完内存后改回去让系统重新自动分配内存
echo 0 >/proc/sys/vm/drop_caches
<3>如果要释放所有缓存
echo 3 > /proc/sys/vm/drop_caches
3.linux查看cache使用情况
看内存的命令
free -m
参数介绍:
total 内存总数
used 已使用内存数
free 空闲内存数
shared 多个进程共享的内存数
buffers 缓存(用于目录,inode值)
cached 缓存(用于已打开的文件)
查看清除前后,l系统cache的使用情况:
//清除前
# free -m
total used free shared buff/cache available
Mem: 2474 964 292 10 1216 1263
Swap: 1021 5 1016
# sync
# echo 3 > /proc/sys/vm/drop_caches
//清除后
# free -m
total used free shared buff/cache available
Mem: 2474 913 1232 13 327 1348
Swap: 1021 5 1016
结果:cache确实被释放,这种命令很实用呢。