Linux free中buffer與cache區別

mikeliuy發表於2016-07-05

一、free命令
# free -m
             total       used       free     shared    buffers     cached
Mem:          3072       2459        612          0        207       1803
-/+ buffers/cache:        447       2624
Swap:         1913          0       1913

第2行:
total     記憶體總數 3072
used      已使用的記憶體數 2459
free      空閒的記憶體數 612
shared    當前已經廢棄不用,總是0
buffers   Buffer Cache記憶體數 13220
cached    Page Cache記憶體數 2720160

關係       total = used + free

第3行:
-/+ buffers/cache的意思:
-buffers/cache 的記憶體數: 447  (等於第1行的 used - buffers - cached)
+buffers/cache 的記憶體數: 2624 (等於第1行的 free + buffers + cached)
注:略出入。

可見-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。


第4行單獨針對交換分割槽。

為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行快取(用於VFS,加速檔案路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些Cache有效縮短了 I/O系統呼叫(如read,write,getdents)的時間。

第2行(mem)的used/free與第3行(-/+ buffers/cache) used/free的區別:
這 兩個的區別在於使用的角度.第2行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用記憶體是612MB,已用記憶體是2059MB,其中包括,核心(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第3行 所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是可用的,因為buffer/cached是為了提高檔案讀取的效能而設,當應用程式要用到記憶體的時候,buffer/cached會很快地被回收。所以 從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached.

如上例:
2624 = 612+207+1803


二、buffers與cached的區別:

buffers 是用來給塊裝置做的緩衝大小,他只記錄檔案系統的metadata以及 tracking in-flight pages。
cached  是用來給檔案做緩衝。
即:buffers是用來儲存目錄裡面有什麼內容,許可權等等,而cached用來記憶我們開啟的檔案.


如果你想知道他是不是真的生效,你可以試一下,先後執行兩次命令#man kill ,你就可以明顯的感覺到第二次的開打的速度快很多。
實驗:在一臺沒有什麼應用的機器上做會看得比較明顯。記得實驗只能做一次,如果想多做請換一個檔名。
#free
#man kill
#free
#man kill
#free
比較一下free先後顯示的buffers的大小。
另一個實驗:
#free
#ls /dev
#free
比較一下兩個的大小,當然這個buffers隨時都在增加,但有ls過的話,增加的速度會變得快,這個就是buffers/chached的區別。

因為Linux會將暫時不使用的記憶體作為檔案和資料快取,以提高系統效能,當應用程式需要這些記憶體時,系統會自動釋放(不像windows那樣,即使你有很多空閒記憶體,他也要訪問一下磁碟中的pagefiles)  

記憶體交換條件及方式:

當可用記憶體小於額定值的時候,就會開始進行交換.
如何看額定值(RHEL4.0)
#cat /proc/meminfo
交換將透過三個途徑來減少系統中使用的物理頁面的個數:
1.減少緩衝與頁面cache的大小;
2.將系統V型別的記憶體頁面交換出支;
3.換出或者丟棄頁面。(Application 佔用的記憶體頁,也就是實體記憶體不足)。
事實上,少量地使用swap是不會影響到系統效能的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26812308/viewspace-2121492/,如需轉載,請註明出處,否則將追究法律責任。

相關文章