本文參考博客:《(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確實被釋放,這種命令很實用呢。