Linux系統及其使用者進程運行過程中會產生Page Cache(檔案快取),隨著已耗用時間的增加,Page Cache的佔比逐漸上升,進而佔用更多的系統資源。這可能導致對效能敏感型業務出現效能抖動,甚至引發部分任務出現OOM(Out of Memory)現象。在需要釋放大量記憶體的業務情境中,可以通過/proc/sys/vm/drop_caches介面來釋放緩衝。
操作步驟
警告
由於drop_caches回收記憶體刪除了系統中的Page Cache及所需的dentries(目錄項)和inodes(索引節點),可能導致在進行磁碟IO操作等過程中出現效能下降,請根據實際需求謹慎進行記憶體回收。
以下操作僅會釋放未被使用的對象,記憶體中的髒頁對象將繼續被使用,直至其寫出到磁碟前無法釋放。如需釋放髒頁對象的記憶體,請在使用drop_caches介面清理Page Cache之前執行sync命令,將記憶體中的髒頁面寫出到磁碟,這些操作通常能夠釋放更多的記憶體。
釋放頁面緩衝。
調用
drop_caches介面釋放Page Cache。sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'通過
sysctl命令釋放Page Cache。sudo sysctl -w vm.drop_caches=1
釋放
dentries和inodes。調用
drop_caches介面釋放dentries和inodes。sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'通過
sysctl命令釋放dentries和inodes。sudo sysctl -w vm.drop_caches=2
釋放Page Cache、
dentries和inodes。調用
drop_caches介面釋放Page Cache、dentries和inodes。sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'通過
sysctl命令釋放Page Cache、dentries和inodes。sudo sysctl -w vm.drop_caches=3