您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“l(fā)inux下怎么釋放cache內(nèi)存”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
細心的朋友會注意到,當(dāng)你在linux下頻繁存取文件后,物理內(nèi)存會很快被用光,當(dāng)程序結(jié)束后,內(nèi)存不會被正常釋放,而是一直作為caching.這個問題,貌似有不少人在問,不過都沒有看到有什么很好解決的辦法.那么我來談?wù)勥@個問題.
先來說說free命令
[root@server ~]# 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 多個進程共享的內(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
有了這個基礎(chǔ)后,可以得知,我現(xiàn)在used為163MB,free為86,buffer和cached分別為10,94
那么我們來看看,如果我執(zhí)行復(fù)制文件,內(nèi)存會發(fā)生什么變化.
[root@server ~]# cp -r /etc ~/test/
[root@server ~]# 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吃掉了.別緊張,這是為了提高文件讀取效率的做法.
引用[url]http://www.2qyou.com/thread-591-1-1.html[/url] 為了提高磁盤存取效率, Linux做了一些精心的設(shè)計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時間。"
那么有人說過段時間,linux會自動釋放掉所用的內(nèi)存,我們使用free再來試試,看看是否有釋放>?
[root@server test]# free -m
total used free shared buffers cached
Mem: 249 244 5 0 8 174
-/+ buffers/cache: 61 188
Swap: 511 0 511
MS沒有任何變化,那么我能否手動釋放掉這些內(nèi)存呢???回答是可以的!
/proc是一個虛擬文件系統(tǒng),我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段.也就是說可以通過修改/proc中的文件,來對當(dāng)前kernel的行為做出調(diào)整.那么我們可以通過調(diào)整/proc/sys/vm/drop_caches來釋放內(nèi)存.操作如下:
[root@server test]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默認為0
[root@server test]# sync
手動執(zhí)行sync命令(描述:sync 命令運行 sync 子例程。如果必須停止系統(tǒng),則運行 sync 命令以確保文件系統(tǒng)的完整性。sync 命令將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)
[root@server test]# echo 3 > /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches值設(shè)為3
[root@server test]# free -m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再來運行free命令,發(fā)現(xiàn)現(xiàn)在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那么有效的釋放了buffer和cache.
有關(guān)/proc/sys/vm/drop_caches的用法在下面進行了說明
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become
free.
To free pagecache:
#echo 1 > /proc/sys/vm/drop_caches
#echo 2 > /proc/sys/vm/drop_caches;
#echo 3 >/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects
補充:top命令按住M,是關(guān)于內(nèi)存的從大到小的排序,按住P是關(guān)于CPU的占用率排序, pmap 進程號顯示進程占用的內(nèi)存,PS X |GREP 進程號也有此作用。vmstat顯示系統(tǒng)資源、內(nèi)存的占用率。
“l(fā)inux下怎么釋放cache內(nèi)存”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。