Linux如何手動(dòng)清理內(nèi)存中cache信息
當(dāng)在Linux下頻繁存取文件后,物理內(nèi)存會(huì)很快被用光,當(dāng)程序結(jié)束后,內(nèi)存不會(huì)被正常釋放,而是一直作為caching。那么Linux如何手動(dòng)清理內(nèi)存中cache信息?下面跟著學(xué)習(xí)啦小編一起來了解一下吧。
Linux手動(dòng)清理內(nèi)存中cache信息方法
在做分布式系統(tǒng)文件寫入及讀取測試時(shí),發(fā)現(xiàn)寫入大量的文件后,內(nèi)存中cache中的數(shù)值很大,這對使用同一臺(tái)機(jī)器調(diào)研其它的分布式文件系統(tǒng)來說,內(nèi)存條件沒有達(dá)到一致,會(huì)影響測試的結(jié)果。
一、通常情況
先來說說free命令:
# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/cache: 58 191
Swap: 511 0 511
其中:
total 內(nèi)存總數(shù)
used 已經(jīng)使用的內(nèi)存數(shù)
free 空閑的內(nèi)存數(shù)
shared 多個(gè)進(jìn)程共享的內(nèi)存總額
buffers Buffer Cache和cached Page Cache 磁盤緩存的大小
-buffers/cache (已用)的內(nèi)存數(shù):used - buffers - cached
+buffers/cache(可用)的內(nèi)存數(shù):free + buffers + cached
可用的memory=free memory+buffers+cached
有了這個(gè)基礎(chǔ)后,可以得知,我現(xiàn)在used為163MB,free為86MB,buffer和cached分別為10MB,94MB。
那么我們來看看,如果我執(zhí)行復(fù)制文件,內(nèi)存會(huì)發(fā)生什么變化。
# cp -r /etc ~/test/
# free -m
total used free shared buffers cached
Mem: 249 244 4 0 8 174
-/+ buffers/cache: 62 187
Swap: 511 0 511
在我命令執(zhí)行結(jié)束后,used為244MB,free為4MB,buffers為8MB,cached為174MB,天吶,都被cached吃掉了。別緊張,這是為了提高文件讀取效率的做法。
Linux cache占用大的原因:
當(dāng)linux第一次讀取一個(gè)文件時(shí),一份放到內(nèi)存中cache起來,另一份放入運(yùn)行程序的內(nèi)存中,正常運(yùn)行,當(dāng)程序運(yùn)行完閉后,Cache中的那一份文件卻沒有釋放,第二次運(yùn)行的時(shí)候,系統(tǒng)首先查看在內(nèi)存中是否有次運(yùn)行時(shí)存在cache中的副本,如果有的話,直接從內(nèi)存中讀取,已達(dá)到提高速度的目的。
清空cache的步驟:
1,查看/proc/sys/vm/drop_caches的值(默認(rèn)是0)
復(fù)制代碼代碼示例: cat /proc/sys/vm/drop_caches
2,手動(dòng)執(zhí)行sync命令(sync 命令將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)
sync
3,手動(dòng)修改/proc/sys/vm/drop_caches值為3
復(fù)制代碼代碼示例: echo 3 > /proc/sys/vm/drop_caches
參數(shù)說明:
參數(shù)值說明
To free pagecache: * echo 1 > /proc/sys/vm/drop_caches
To free dentries(dentry索引結(jié)點(diǎn)的鏈接) and inodes: * echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes: * echo 3 > /proc/sys/vm/drop_caches
dentries and inodes concepts
看過“ Linux如何手動(dòng)清理內(nèi)存中cache信息 ”的人還看了:
1.如何正確查看Linux機(jī)器內(nèi)存使用情況
3.詳解Linux系統(tǒng)內(nèi)存知識(shí)及調(diào)優(yōu)方案