當前位置:才華齋>IT認證>Linux認證>

Linux系統監控記憶體管理命令大全

Linux認證 閱讀(2.43W)

作為一名linux系統管理員,監控記憶體的使用狀態是非常重要的,通過監控有助於瞭解記憶體的使用狀態,比如記憶體佔用是否正常,記憶體是否緊缺等等,那麼linux監控記憶體的命令是什麼呢?下面跟yjbys小編一起來看看吧!

Linux系統監控記憶體管理命令大全

監控記憶體最常使用的命令有free、top等,下面是某個系統free的輸出:

[]#free

total used free shared buffers cached

Mem: 16402432 16360492 41940 0 46540412714880

-/+ buffers/cache: 3180208 13222224

Swap: 8193108 264 8192844

第一行:

ltotal:實體記憶體的總大小。

lused:已經使用的實體記憶體多小。

lfree:空閒的實體記憶體值。

lshared:多個程序共享的記憶體值。

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

第二行:代表實體記憶體使用情況。

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

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

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

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

核心目前可以直接分配到,不需要額外的操作,即為上面free命令輸出中第二行Mem項的值,可以看出,此係統實體記憶體有16G,空閒的記憶體只有41940K,也就是40M多一點,我們來做一個這樣的計算:

16402432-16360492=41940

就是總的實體記憶體減去已經使用的實體記憶體得到的就是空閒的.實體記憶體大小。

注意:

這裡的可用記憶體值41940並不包含處於buffers和cached狀態的記憶體大小。

注意:

實際上,核心完全控制著記憶體的使用情況,linux會在需要記憶體的時候,或在系統執行逐步推進時,將buffers和cached狀態的記憶體變為free狀態的記憶體,以供系統使用。

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

也就是linux上執行的應用程式可以使用的記憶體大小,即free命令第三行“(-/+ buffers/cached)”的輸出,可以看到,此係統已經使用的記憶體才3180208K,而空閒的記憶體達到13222224K,繼續做這樣一個計算:

41940(Men:free)+(465404(Men:buffers)+12714880(Men:cached))=13222224(-/+buffers/cached:free)

通過這個等式可知,應用程式可用的實體記憶體值是Mem項的free值加上buffers和cached值之和,也就是說,這個free值是包括buffers和cached項大小的。

對於應用程式來說,buffers/cached佔有的記憶體是可用的,因為buffers/cached是為了提高檔案讀取的效能,當應用程式需要用到記憶體的時候buffers/cached會很快地被回收,以供應用程式使用。

  ers與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 *

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

Linux 作業系統的記憶體執行原理,很大程度上是根據服務器的需求來設計的,例如系統的緩衝機制會把經常使用到的檔案和資料快取在cached中,linux總是在力求快取更多的資料和資訊,這樣再次需要這些資料時可以直接從記憶體中取,而不需要有一個漫長的磁碟操作,這種設計思路提高了系統的整體效能。