Linux 記憶體引數詳解

2021-08-15 14:03:35 字數 3259 閱讀 6323

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),但系統當前真正可用的記憶體並不是第一行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.

更詳細的解釋參考:difference between buffer and cache

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       0   21280     155468

-/+ buffers/cache:     200368    185656

swap:    393552            0          393552

下面是對這些數值的解釋:

第二行(mem):

total:總計物理記憶體的大小。

used:已使用多大。

free:可用有多少。

shared:多個程序共享的記憶體總額。

buffers/cached:磁碟快取的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解釋了。

區別

Linux記憶體詳解

linux記憶體詳解 2014 05 24 linux的記憶體上表現的不像windows那麼直觀,本文準備詳細的介紹一下linux的記憶體。請看這下有linux命令free和vmstat輸出的記憶體資訊。mem行used表示已經分配的記憶體,free表示尚未分配的記憶體,shared表示共享記憶體。...

linux核心引數詳解

系統引數詳解如下 fs.aio max nr 1048576 同時可以擁有的的非同步io請求數目。1048576 即 1024 1024 也就是 1024k 個。fs.file max 6553600 系統允許開啟的檔案數。kernel.shmall 4194304 設定共享記憶體總頁數。這個值太小...

Linux網絡卡引數詳解

linux網絡卡配置檔案通常是 etc sysconfig network scripts ifcfg eth0檔案,如果有多塊網絡卡則以eth1 eth2結尾。現就網絡卡的配置引數做如下說明 device eth0 網絡卡名稱 hwaddr 00 23 18 7d 70 41 網絡卡的mac位址 ...