Linux 記憶體監控free top

2021-08-27 15:00:09 字數 2423 閱讀 1156

開發者部落格:www.developsearch.com

# free命令 : 監控記憶體使用情況

# free -b -s5 命令: 將會在終端視窗中連續不斷地報告記憶體的使用情況,每5秒鐘更新一次。

[root@linuxeye ~]# free 

total used free shared buffers cached

mem: 3894036 3473544 420492 0 72972 1332348

-/+ buffers/cache: 2068224 1825812

swap: 4095992 906036 3189956

每個選項的含義:

第一行:

total:物理記憶體的總大小

used:已經使用的物理記憶體大小

free:空閒的物理記憶體大小

shared:多個程序共享的記憶體大小

buffers/cached:磁碟快取的大小

第二行mem:代表物理記憶體使用情況

第三行(-/+ buffers/cached):代表磁碟快取使用狀態

第四行:swap表示交換空間記憶體使用狀態

free命令輸出的記憶體狀態,可以通過兩個角度來檢視:乙個是從核心的角度來看,乙個是從應用層的角度來看的。

從核心的角度來檢視記憶體的狀態

就是核心目前可以直接分配到,不需要額外的操作,即為上面free命令輸出中第二行mem項的值,可以看出,此系統物理記憶體有3894036k,空閒的記憶體只有420492k,也就是40m多一點,我們來做乙個這樣的計算:

3894036 – 3473544 = 420492

其實就是總的物理記憶體減去已經使用的物理記憶體得到的就是空閒的物理記憶體大小,注意這裡的可用記憶體值420492並不包含處於buffers和cached狀態的記憶體大小。

如果你認為這個系統空閒記憶體太小,那你就錯了,實際上,核心完全控制著記憶體的使用情況,linux會在需要記憶體的時候,或在系統執行逐步推進時,將buffers和cached狀態的記憶體變為free狀態的記憶體,以供系統使用。

從應用層的角度來看系統記憶體的使用狀態

也就是linux上執行的應用程式可以使用的記憶體大小,即free命令第三行 -/+ buffers/cached 的輸出,可以看到,此系統已經使用的記憶體才2068224k,而空閒的記憶體達到1825812k,繼續做這樣乙個計算:

420492+(72972+1332348)=1825812

通過這個等式可知,應用程式可用的物理記憶體值是mem項的free值加上buffers和cached值之和,也就是說,這個free值是包括buffers和cached項大小的,對於應用程式來說,buffers/cached占有的記憶體是可用的,因為buffers/cached是為了提高檔案讀取的效能,當應用程式需要用到記憶體的時候,buffers/cached會很快地被**,以**用程式使用。

buffers與cached的異同

在linux 作業系統中,當應用程式需要讀取檔案中的資料時,作業系統先分配一些記憶體,將資料從磁碟讀入到這些記憶體中,然後再將資料分發給應用程式;當需要往檔案中寫資料時,作業系統先分配記憶體接收使用者資料,然後再將資料從記憶體寫到磁碟上。然而,如果有大量資料需要從磁碟讀取到記憶體或者由記憶體寫入磁碟時,系統的讀寫效能就變得非常低下,因為無論是從磁碟讀資料,還是寫資料到磁碟,都是乙個很消耗時間和資源的過程,在這種情況下,linux引入了buffers和cached機制。

buffers與cached都是記憶體操作,用來儲存系統曾經開啟過的檔案以及檔案屬性資訊,這樣當作業系統需要讀取某些檔案時,會首先在buffers與cached記憶體區查詢,如果找到,直接讀出發送給應用程式,如果沒有找到需要資料,才從磁碟讀取,這就是作業系統的快取機制,通過快取,大大提高了作業系統的效能。但buffers與cached緩衝的內容卻是不同的。

buffers是用來緩衝塊裝置做的,它只記錄檔案系統的元資料(metadata)以及 tracking in-flight pages,而cached是用來給檔案做緩衝。更通俗一點說:buffers主要用來存放目錄裡面有什麼內容,檔案的屬性以及許可權等等。而cached直接用來記憶我們開啟過的檔案和程式。

為了驗證我們的結論是否正確,可以通過vi開啟乙個非常大的檔案,看看cached的變化,然後再次vi這個檔案,感覺一下兩次開啟的速度有何異同,是不是第二次開啟的速度明顯快於第一次呢?

接著執行下面的命令:find /* -name  *.conf 

看看buffers的值是否變化,然後重複執行find命令,看看兩次顯示速度有何不同。

# top : 檢視記憶體正在使用的情況

nagios監控linux主機監控記憶體指令碼

閱讀目錄 回到頂部 工作包括兩部分監控端 一二三 和被監控端 四 回到頂部 nrpe.cfg中新增命令索引 1 command check used mem usr local nagios libexec check used mem.sh 80 90 說明 實際記憶體使用量超過80 警告 超過9...

nmon監控linux記憶體釋疑

前一段時間在做 效能測試,看著nmon採集分析出來的記憶體資料,不知道每個欄位有什麼區別,於是找了些資料,作以記錄 active表示這些記憶體資料正在使用種,或者剛被使用過。inactive表示這些記憶體中的資料是有效的,但是最近沒有被使用。free,空閒記憶體,這些空間可以隨時被程式使用。當fre...

Linux 監控CPU 記憶體 IO

安裝說明 tar zxvf sysstat 11.5.6.tar.gz cd sysstat 11.5.6 configure make make install 備註 若在linux中執行 configure,出現了缺少gcc庫的問題,先安裝gcc和gcc32bit庫即可 監控命令 sar v 1...