linux buffer 和 cache 的區別

2021-06-21 11:13:11 字數 2806 閱讀 9346

一.

記憶體使用說明

free

命令相對於

top提供了更簡潔的檢視系統記憶體使用情況:

[root@rac1 ~]# free 

total      used       free    shared    buffers    cached

mem:      

1035108

1008984

26124     0    124212     413000

-/+ buffers/cache:       471772     563336

swap:      2096472  842320     1254152

這裡顯示的單位是kb。

在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

的區別2.1 cache

cache

:快取記憶體,是位於

cpu與主記憶體間的一種容量較小但速度很高的儲存器。 由於

cpu的速度遠高於主記憶體,

cpu直接從記憶體中訪問資料要等待一定時間週期,

cache

中儲存著

cpu剛用過或迴圈使用的一部分資料,當

cpu再次使用該部分資料時可從

cache

中直接呼叫

,這樣就減少了

cpu的等待時間

,提高了系統的效率。

cache

又分為一級

cache(l1 cache)

和二級cache(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必會非常小。

Linux Buffer和Cache的區別

什麼是cache?什麼是buffer?二者的區別是什麼?buffer和cache的區別 buffer與cache操作的物件就不一樣。buffer 緩衝 是為了提高記憶體和硬碟 或其他i 0裝置 之間的資料交換的速度而設計的。cache 快取 是為了提高cpu和記憶體之間的資料交換速度而設計,也就是平...

大數運算 附c ac題解

就是這樣一類題,兩個數字太大了直接用數字型別不太好運算,我們就直接用字串來計算。題目描述 川哥可謂是我校acm起家的鼻祖,雖然早已畢業卻特別關注這次科技節的校賽,特意囑咐,一定會a b的大數加法!輸入多行測試資料,每行包含兩個正整數a和b,a和b的範圍不會超過1000位 輸出輸出a b的結果 樣例輸...

試題 歷屆試題 分考場 C (AC)

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1輸出格式 一行乙個整數,表示最少分幾個考場。樣例輸入58 1 21 3 1 42 3 2 4...