Linux free m 詳細說明

2021-06-09 21:15:44 字數 3066 閱讀 8199

linux記憶體中buffer與cache的區別

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

$ free

total 

used 

free 

shared buffers cached

mem: 

255268 

238332 

16936 

0  85540 

126384

-/+ buffers/cache: 26408 

228860

swap: 

265000 

0  265000

mem:表示物理記憶體統計

-/+ buffers/cached:表示物理記憶體的快取統計

swap:表示硬碟上交換分割槽的使用情況,這裡我們不去關心。

系統的總物理記憶體:255268kb(256m),但系統當前真正可用的記憶體b並不是第一行free 標記的 16936kb,它僅代表未被分配的記憶體。

我們使用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.

cache 和 buffer的區別:

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。

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

free中的buffer和cache:(它們都是占用記憶體):

buffer: 作為buffer cache的記憶體,是裝置的讀寫緩衝區

cache: 作為page cache的記憶體, 檔案系統的cache

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

buffer和cache的區別

快取(cached)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。

緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有乙個守護程序定 期清空緩衝內容(即寫如磁碟),也可以通過sync命令手動清空緩衝。舉個例子吧:我這裡有乙個ext2的u盤,我往裡面cp乙個3m的***,但u盤的 燈沒有跳動,過了一會兒(或者手動輸入sync)u盤的燈就跳動起來了。解除安裝裝置時會清空緩衝,所以有些時候解除安裝乙個裝置時要等上幾秒鐘。

linux的記憶體管理,實際上跟windows的記憶體管理有很相像的地方,都是用虛擬記憶體這個的概念,說到這裡不得不罵ms,為什麼在很多時候還有很大的物理記憶體的時候,卻還是用到了pagefile. 所以才經常要跟一幫人吵著說pagefile的大小,以及如何分配這個問題,在linux大家就不用再吵什麼swap大小的問題,我個人認為,swap設個512m已經足夠了,如果你問說512m的swap不夠用怎麼辦?只能說大哥你還是加記憶體吧,要不就檢查你的應用,是不是真的出現了memory leak.

在linux下檢視記憶體我們一般用command free

[root@nonamelinux ~]# free

total 

used 

free 

shared 

buffers 

cached

mem: 

386024 

377116

8908 

21280 

155468

-/+ buffers/cache: 

200368 

185656

swap: 

393552 

0 =8908+21280+155468

Linux free m 詳細說明

free 命令相對於top 提供了更簡潔的檢視系統記憶體使用情況 free total used free shared buffers cached mem 255268 238332 16936 0 85540 126384 buffers cache 26408 228860 swap 265...

Linux free m 詳細說明

free 命令相對於top 提供了更簡潔的檢視系統記憶體使用情況 free total used free shared buffers cached mem 255268 238332 16936 0 85540 126384 buffers cache 26408 228860 swap 265...

Linux free m 詳細說明

free 命令相對於top 提供了更簡潔的檢視系統記憶體使用情況 free total used free shared buffers cached mem 255268 238332 16936 0 85540 126384 buffers cache 26408 228860 swap 265...