free命令結果分析

在南京看海發表於2016-07-11

free

free 命令相對於top 提供了更簡潔的檢視系統記憶體使用情況:
 

<span style="color:#494949"># free
             total       used       free     shared    buffers     cached
Mem:        255988     231704      24284          0       6432     139292
-/+ buffers/cache:      85980     170008
Swap:       746980          0     746980</span>


Mem:表示實體記憶體統計 
-/+ buffers/cached:表示實體記憶體的快取統計 
Swap:表示硬碟上交換分割槽的使用情況,這裡我們不去關心。
系統的總實體記憶體:255988Kb(256M),但系統當前真正可用的記憶體並不是第一行free 標記的 24284Kb,它僅代表未被分配的記憶體。

我們使用total1、used1、free1、used2、free2 等名稱來代表上面統計資料的各值,1、2 分別代表第一行和第二行的資料。

total1:表示實體記憶體總量。 
used1:表示總計分配給快取(包含buffers 與cache )使用的數量,但其中可能部分快取並未實際使用。 
free1:未被分配的記憶體。 
shared1:共享記憶體,一般系統不會用到,這裡也不討論。 
buffers1:系統分配但未被使用的buffers 數量。 
cached1:系統分配但未被使用的cache 數量。buffer 與cache 的區別見後面。 
used2:實際使用的buffers 與cache 總量,也是實際使用的記憶體總量。 
free2:未被使用的buffers 與cache 和未被分配的記憶體之和,這就是系統當前實際可用記憶體。


可以整理出如下等式:

total1 = used1 + free1

total1 = used2 + free2

used1 = buffers1 + cached1 + used2

free2 = buffers1 + cached1 + free1

buffer 與cache 的區別
A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.

 

兩者都是RAM中的資料。簡單來說,buffer是即將要被寫入磁碟的,cache是被從磁碟中讀出來的。
buffer是用於儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的區域。緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。
cache經常被用在磁碟的I/O請求上,如果有多個程式都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提供系統效能。快取(cached)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。

 

本文轉自:http://www.cnblogs.com/dongzhiquan/p/3789199.html

相關文章