Linux記憶體buffer和cache的區別

來源:互聯網
上載者:User

 

記憶體使用量說明

Free 命令相對於top 提供了更簡潔的查看系統記憶體使用量情況

 

 

[root@rac1 ~]# free

 

 

total used free shared buffers cached

 

 

Mem: 1035108100898426124 0 124212 413000

 

 

-/+ buffers/cache: 471772 563336

 

 

Swap: 2096472 842320 1254152

 

 

這裡顯示的單位是KB。

 

 

在linux的記憶體配置機制中,優先使用實體記憶體,當實體記憶體還有空閑時(還夠用),不會釋放其佔用記憶體,就算佔用記憶體的程式已經被關閉了,該程式所佔用的記憶體用來做緩衝使用,對於開啟過的程式、或是讀取剛存取過得資料會比較快。有關Linux記憶體機制參考:

 

 

Linux 記憶體機制

 

 

Mem:表示實體記憶體統計。
-/+ buffers/cached:表示實體記憶體的緩衝統計
Swap:表示硬碟上交換分區的使用方式。只有mem被當前進程實際佔用完,即沒有了buffers和cache時,才會使用到swap。

 

 

Mem 行(第一行)資料說明:

 

 

Total:1035108KB。表示實體記憶體總大小。

 

 

Used:1008984KB。表示總計分配給緩衝(包含buffers 與cache )使用的數量,但其中可能部分緩衝並未實際使用。

 

 

Free:26124KB。表示未被分配的記憶體。

 

 

Shared:0kb。共用記憶體,一般系統不會用到。

 

 

Buffers:124212KB。系統分配但未被使用的buffers 數量。

 

 

Cached:413000KB。系統分配但未被使用的cache 數量。

 

 

-/+ buffers/cache 行(第二行)資料說明:

 

 

Used:471772kb,實際使用的buffers 與cache 總量,也是實際使用的記憶體總量。

 

 

Free: 563336kb, 未被使用的buffers 與cache 和未被分配的記憶體之和,這就是系統當前實際可用記憶體。

 

 

根據以上分析,可以得出一下結論:

 

 

1. 實際可用記憶體大小:

 

 

Free(-/+ buffers/cache行)= Free(Mem)+buffers(Mem)+Cached(Mem);

 

 

563336 = 26124 + 124212+ 413000

 

 

2. 已經分配的記憶體大小:

 

 

Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

 

 

1008984kb = 471772 + 124212 +413000

 

 

3. 實體記憶體總大小

 

 

total(Mem)= used(-/+ buffers/cache) + free(-/+ buffers/cache)

 

 

1035108 = 471772 + 563336

 

 

二. 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.

 

 

2.1 Cache

 

 

Cache:快取,是位於CPU與主記憶體間的一種容量較小但速度很高的儲存空間。

 

 

由於CPU的速度遠高於主記憶體,CPU直接從記憶體中存取資料要等待一定時間周期,Cache中儲存著CPU剛用過或迴圈使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了系統的效率。

 

 

Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache整合在CPU內部,L2 Cache早期一般是焊在主板上,現在也都整合在CPU內部,常見的容量有256KB或512KB L2 Cache。

 

2.2 Buffer

 

 

Buffer:緩衝區,一個用於儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的地區。通過緩衝區,可以使進程之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作進程不發生間斷。

 

 

在Free命令中顯示的buffer和cache,它們都是佔用記憶體:

 

 

buffer : 作為buffer cache的記憶體,是塊裝置的讀寫緩衝區,更靠近存放裝置,或者直接就是disk的緩衝區。

 

 

cache: 作為page cache的記憶體, 檔案系統的cache,是memory的緩衝區

 

 

如果cache 的值很大,說明cache住的檔案數很多。如果頻繁訪問到的檔案都能被cache住,那麼磁碟的讀IO 必會非常小

 

摘自 ERDP技術架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.