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