調(diào)用drop_caches接口清理Page Cache
Linux系統(tǒng)及其用戶進(jìn)程運(yùn)行過(guò)程中會(huì)產(chǎn)生Page Cache(文件緩存),隨著運(yùn)行時(shí)間的增加,Page Cache的占比逐漸上升,進(jìn)而占用更多的系統(tǒng)資源。這可能導(dǎo)致對(duì)性能敏感型業(yè)務(wù)出現(xiàn)性能抖動(dòng),甚至引發(fā)部分任務(wù)出現(xiàn)OOM(Out of Memory)現(xiàn)象。在需要釋放大量?jī)?nèi)存的業(yè)務(wù)場(chǎng)景中,可以通過(guò)/proc/sys/vm/drop_caches
接口來(lái)釋放緩存。
操作步驟
由于drop_caches
回收內(nèi)存刪除了系統(tǒng)中的Page Cache及所需的dentries(目錄項(xiàng))和inodes(索引節(jié)點(diǎn)),可能導(dǎo)致在進(jìn)行磁盤(pán)IO操作等過(guò)程中出現(xiàn)性能下降,請(qǐng)根據(jù)實(shí)際需求謹(jǐn)慎進(jìn)行內(nèi)存回收。
以下操作僅會(huì)釋放未被使用的對(duì)象,內(nèi)存中的臟頁(yè)對(duì)象將繼續(xù)被使用,直至其寫(xiě)出到磁盤(pán)前無(wú)法釋放。如需釋放臟頁(yè)對(duì)象的內(nèi)存,請(qǐng)?jiān)谑褂胐rop_caches接口清理Page Cache之前執(zhí)行sync
命令,將內(nèi)存中的臟頁(yè)面寫(xiě)出到磁盤(pán),這些操作通常能夠釋放更多的內(nèi)存。
釋放頁(yè)面緩存。
調(diào)用
drop_caches
接口釋放Page Cache。sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
通過(guò)
sysctl
命令釋放Page Cache。sudo sysctl -w vm.drop_caches=1
釋放
dentries
和inodes
。調(diào)用
drop_caches
接口釋放dentries
和inodes
。sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
通過(guò)
sysctl
命令釋放dentries
和inodes
。sudo sysctl -w vm.drop_caches=2
釋放Page Cache、
dentries
和inodes
。調(diào)用
drop_caches
接口釋放Page Cache、dentries
和inodes
。sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
通過(guò)
sysctl
命令釋放Page Cache、dentries
和inodes
。sudo sysctl -w vm.drop_caches=3