如何正確檢視Linux機器記憶體使用情況

2022-02-08 04:02:04 字數 2684 閱讀 5598

只要工作上涉及到linux機器,基本上都會有這樣乙個需求,檢視記憶體使用情況,但是怎麼看才正確呢?之前使用的是top命令,一直存在乙個誤區。

top是個很好用的系統分析工具,可以實時檢視程序,cpu使用率,記憶體使用率等情況,有點像windows下的任務管理器。我以前一直以為top看到的就是真正的記憶體使用情況,後來baidugoogle好久,才發現自己圖樣。= =|| 

首先看下top命令後展示出來的記憶體使用情況,我用自己一台`搬`瓦`工`vps做示範:

cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

mem: 73728k total, 70048k used, 3680k free, 0k buffers

swap: 16384k total, 4696k used, 11688k free, 64716k cached

可以看到mem: 73728k total, 70048k used, 3680k free, 0k buffers這一行,就是記憶體使用情況。一開始我也只看這一行。後來在公司的生產機子上看時,覺得很疑惑,只要是執行了一段時間的機子,記憶體的 total 和 used 總是非常的接近,free值很少,也就是說「記憶體使用率」非常高,哪怕我已經把各種服務都關掉了。但是就算這樣,伺服器也沒有任何問題,再次啟動 tomcat服務,做一些小的壓測,表現的情況也很正常。那麼問題就來了:明明記憶體情況這麼緊張,怎麼還能執行這麼多服務,甚至做壓力測試呢?—> 答案其實很簡單,這些看起來used很多的記憶體中,一大部分是快取,這就要說到linux的記憶體管理機制了。

什麼是cache memory(快取記憶體):

當你讀寫檔案的時候,linux核心為了提高讀寫效能與速度,會將檔案在記憶體中進行快取,這部分記憶體就是cache memory(快取記憶體)。即使你的程式執行結束後,cache memory也不會自動釋放。這就會導致你在linux系統中程式頻繁讀寫檔案後,你會發現可用物理記憶體會很少。 

其實這快取記憶體(cache memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。 

只有當 free 減去 cached 剩下的這部分記憶體情況緊張時,才有可能出現應用程式沒有足夠記憶體使用的情況。

所以其實剛才top看到的記憶體使用情況,有一部分是快取,那個快取有多少呢?注意看最後有個mem那行後面有個buffers ,swap那行後面有個cached,這兩個就是快取大小。所以如果要計算應用程式真正使用物理記憶體的情況,應該是used-cached-buffers才對,所以剛才top看到的物理記憶體使用情況為70048k-64716k=5332k。所以也才沒用多少嘛!

另外,如果單純想要看記憶體使用情況,用free命令其實更直觀:

total       used       free     shared    buffers     cached

mem: 73728 70940 2788 0 0 64840

-/+ buffers/cache: 6100 67628

swap: 16384 4500 11884

這些資訊的說明大致如下: 

其中第一行用全域性角度描述系統使用的記憶體狀況: 

total——總物理記憶體 

used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體 

free——完全未被使用的記憶體 

shared——應用程式共享記憶體 

buffers——快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加) 

cached——快取,用於已開啟的檔案 

注意-/+ buffers/cache: 6100 67628這行。 

前個值表示-buffers/cache—–>不包括快取,應用程式物理記憶體使用情況,即 -buffers/cache=used-buffers-cached ,所以此時應用程式才用了6100k記憶體 。 

後個值表示+buffers/cache—–>所有可**用程式使用的記憶體大小,free加上快取值,即+buffers/cache=free+buffers+cached ,所以此時還有67628k 記憶體可供程式使用。 

另外,free命令也可以使用」-m」 引數,這樣顯示的記憶體資訊是用mb算,而不是kb,大記憶體情況下,這樣更直觀。

free -m-----------

total used free shared buffers cached

mem: 72 69 2 0 0 63

-/+ buffers/cache: 5 66

swap: 16 4 11

使用top命令或者free命令看到的記憶體使用率used中,包含了快取,如果要檢視應用程式真正的記憶體使用情況,應該是used-cached-buffers ,或者直接看free命令結果的-/+ buffers/cache行資訊。 

如何正確檢視Linux機器記憶體使用情況

只要工作上涉及到linux機器,基本上都會有這樣乙個需求,檢視記憶體使用情況,但是怎麼看才正確呢?之前使用的是top命令,一直存在乙個誤區。top是個很好用的系統分析工具,可以實時檢視程序,cpu使用率,記憶體使用率等情況,有點像windows下的任務管理器。我以前一直以為top看到的就是真正的記憶...

linux如何檢視CPU 記憶體 機器型號 網絡卡資訊

檢視cpu資訊 型號 cat proc cpuinfo grep name cut f2 d uniq c 8 intel r xeon r cpu e5410 2.33ghz 看到有8個邏輯cpu,也知道了cpu型號 cat proc cpuinfo grep physical uniq c 4 ...

linux如何檢視CPU,記憶體,機器型號,網絡卡資訊

做效能測試 需要記錄效能測試機器的硬體資訊,現將需要的命令總結如下 檢視cpu資訊 型號 cat proc cpuinfo grep name cut f2 d uniq c 8 intel r xeon r cpu e5410 2.33ghz 看到有8個邏輯cpu,也知道了cpu型號 cat pr...