linux檢視記憶體使用情況的命令有哪些

2022-11-30 22:01:05

命令有:1、free命令,可顯示系統記憶體狀態,包括物理、記憶體和共用記憶體和系統快取的使用情況;2、「cat /proc/meminfo」命令,可讀取「/proc/meminfo」檔案的內容,顯示記憶體使用情況;3、vmstat命令,可用來監控CPU使用、程序狀態等資訊;4、top命令;5、htop命令;6、sar命令;7、smem命令;8、glances命令;9、ps_mem命令。

程式設計師必備介面測試偵錯工具:

本教學操作環境:linux7.3系統、Dell G3電腦。

我們經常需要檢查伺服器的記憶體使用情況,以及每個程序佔用的記憶體,避免發生資源短缺進而影響使用者體驗。

對於網站和Web服務,必須具有足夠的記憶體才能處理使用者端請求。 如果記憶體不足,在請求高峰時就會變得緩慢,擁堵,甚至服務崩潰。當然桌面系統也是同樣的道理。

記憶體的管理和優化,是 Linux 系統效能優化的重要組成部分,換句話說,記憶體資源是否充足,會直接影響應用系統(包含作業系統和應用程式)的使用效能。

下面介紹幾個系統命令,通過它們,可以快速檢視 Linux 系統中記憶體的使用狀況。

1. 使用 free 命令

free 命令是Linux系統中最簡單和最常用的記憶體檢視命令。

free 命令用來顯示系統記憶體狀態,包括系統實體記憶體、虛擬記憶體(swap 交換分割區)、共用記憶體和系統快取的使用情況

範例如下:

free -m
登入後複製

1.png

free -h
登入後複製

2.png

其中, -m 選項是以MB為單位來展示記憶體使用資訊; -h 選項則是以人類(human)可讀的單位來展示。

上面的範例中, Mem: 這一行:

  • total 表示總共有 7822MB 的實體記憶體(RAM),即7.6G
  • used 表示實體記憶體的使用量,大約是 322M
  • free 表示空閒記憶體;
  • shared 表示共用記憶體?;
  • buff/cache 表示快取和緩衝記憶體量; Linux 系統會將很多東西快取起來以提高效能,這部分記憶體可以在必要時進行釋放,給其他程式使用。
  • available 表示可用記憶體;

輸出結果很容易理解。 Swap 這一行表示交換記憶體,從範例中的數位可以看到,基本上沒使用到交換記憶體。

2. 檢視 /proc/meminfo

另一種方法是讀取 /proc/meminfo 檔案。 我們知道, /proc 目錄下都是虛擬檔案,包含核心以及作業系統相關的動態資訊。

$ cat /proc/meminfo

MemTotal:        8010408 kB
MemFree:          323424 kB
MemAvailable:    6956280 kB
Buffers:          719620 kB
Cached:          5817644 kB
SwapCached:          132 kB
Active:          5415824 kB
Inactive:        1369528 kB
Active(anon):     385660 kB
Inactive(anon):   249292 kB
Active(file):    5030164 kB
Inactive(file):  1120236 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194304 kB
SwapFree:        4193580 kB
Dirty:                60 kB
Writeback:             0 kB
AnonPages:        247888 kB
Mapped:            61728 kB
Shmem:            386864 kB
Slab:             818320 kB
SReclaimable:     788436 kB
SUnreclaim:        29884 kB
KernelStack:        2848 kB
PageTables:         5780 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8199508 kB
Committed_AS:     942596 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       22528 kB
VmallocChunk:   34359707388 kB
HardwareCorrupted:     0 kB
AnonHugePages:     88064 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      176000 kB
DirectMap2M:     6115328 kB
DirectMap1G:     4194304 kB
登入後複製

重點關注這些資料:

  • MemTotal, 總記憶體
  • MemFree, 空閒記憶體
  • MemAvailable, 可用記憶體
  • Buffers, 緩衝
  • Cached, 快取
  • SwapTotal, 交換記憶體
  • SwapFree, 空閒交換記憶體

提供的資訊和 free 命令看到的差不多。

3. 使用 vmstat 命令

vmstat命令,是 Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可用來監控 CPU 使用、程序狀態、記憶體使用、虛擬記憶體使用、硬碟輸入/輸出狀態等資訊。

使用 vmstat -s 命令和選項,可以對記憶體使用情況進行統計, 類似於 /proc/meminfo

範例如下:

vmstat -s
登入後複製

3.png

最前面的幾行,顯示了記憶體總量,使用量,以及空閒記憶體等資訊。

4. 使用 top 命令

top 命令一般用於檢視程序的CPU和記憶體使用情況;當然也會報告記憶體總量,以及記憶體使用情況,所以可用來監控實體記憶體的使用情況。
在輸出資訊的頂部展示了彙總資訊。

範例輸出:

top - 15:20:30 up  6:57,  5 users,  load average: 0.64, 0.44, 0.33
Tasks: 265 total,   1 running, 263 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.8 us,  2.4 sy,  0.0 ni, 88.9 id,  0.9 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8167848 total,  6642360 used,  1525488 free,  1026876 buffers
KiB Swap:  1998844 total,        0 used,  1998844 free,  2138148 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                 
 2986 enlighte  20   0  584m  42m  26m S  14.3  0.5   0:44.27 yakuake                                                                                 
 1305 root      20   0  448m  68m  39m S   5.0  0.9   3:33.98 Xorg                                                                                    
 7701 enlighte  20   0  424m  17m  10m S   4.0  0.2   0:00.12 kio_thumbnail
登入後複製

各種作業系統提供的引數略有不同,一般來說都可以根據CPU和記憶體來排序。

例如:

# CentOS
top -o %MEM
top -o %CPU

# mac
top -o mem
top -o cpu
登入後複製

碰到不清楚的,請使用 top -h 檢視幫助資訊。

重點關注頂部的 KiB MemKiB Swap 這兩行。 表示記憶體的總量、使用量,以及可用量。
buffer 和 cache 部分,和 free 命令展示的差不多。

5. 使用 htop 命令

htop 命令是 Linux/Unix 系統的互動式程序檢視器。它是一個文字模式應用程式,需要ncurses庫,它是由Hisham開發的。它被設計為頂級命令的替代方法。這類似於 top 命令,但允許您垂直和水平捲動以檢視執行系統的所有程序。htop帶有Visual Colors,它具有額外的好處,並且在跟蹤系統效能時非常明顯。可以自由地執行與程序相關的任何任務,例如程序終止和重新設定,而無需輸入其PID。

top 命令類似, 但 htop 還展示了其他的各種資訊, 而且支援彩色顯示。

htop
登入後複製

4.png

頂部的訊息顯示了CPU使用率, 以及RAM和交換記憶體的使用情況。

如果沒安裝,可以使用類似的命令:

yum install htop -y
登入後複製

6. 使用sar 命令

sar 命令也可以用來監控 Linux 的記憶體使用狀況,通過「sar -r」組合可以檢視系統記憶體和交換空間的使用率。

sar 命令很強大,是分析系統效能的重要工具之一,通過該命令可以全面地獲取系統的 CPU、執行佇列、磁碟讀寫(I/O)、分割區(交換區)、記憶體、CPU 中斷和網路等效能資料。

如下是執行「sar -r」命令的輸出結果:

sar -r 2 3
登入後複製

5.png

此輸出結果中,各個參數列示的含義如下:

  • kbmemfree:表示空閒的實體記憶體的大小;

  • kbmemeused:表示已使用的實體記憶體的大小;

  • %memused:表示已使用記憶體佔總記憶體大小的百分比;

  • kbbuffers:表示緩衝區所使用的實體記憶體的大小;

  • kbcached:表示告訴快取所使用的實體記憶體的大小;

  • kbcommit 和 %commit:分別表示當前系統中應用程式使用的記憶體大小和百分比;

相比 free 命令,sar 命令的輸出資訊更加人性化,不僅給出了記憶體使用量,還給出了記憶體使用的百分比以及統計的平均值。比如說,僅通過 %commit 一項就可以得知,當前系統中的記憶體資源充足。

7.使用 smem 命令

smem是一個工具,可以提供大量Linux系統記憶體使用情況的報告。與現有工具不同,smem 可以報告比例集大小 (PSS)、唯一集大小 (USS) 和常駐集大小 (RSS)。成比例集大小 (PSS):指虛擬記憶體系統中庫和應用程式使用的記憶體量。唯一集大小 (USS) :未共用的記憶體報告為 USS(唯一集大小)。駐留集大小 (RSS):實體記憶體(通常在多個應用程式之間共用)使用情況的標準度量(稱為駐留集大小 (RSS))將大大高估記憶體使用量。注:如果執行以下命令提示未找到,請執行「yum install smem」安裝

smem -tk
登入後複製

6 (1).gif

8.使用 glances 命令

glances是用Python編寫的跨平臺系統監控工具。可以檢視所有資訊,例如CPU使用情況,記憶體使用情況,正在執行的程序,網路介面,磁碟I / O,Raid,感測器,檔案系統資訊,Docker,系統資訊,正常執行時間等.

glances
登入後複製

7.gif8.png

9.使用 ps_mem 命令

ps_mem是一個簡單的Python指令碼,允許您準確地獲取Linux中程式的核心記憶體使用情況。這可以確定每個程式(而不是每個程序)使用多少 RAM。它計算每個程式使用的記憶體總量,總計=總和(程式程序的專用RAM)+總和(程式程序的共用RAM)。計算共用 RAM 存在問題,並且該工具會自動為正在執行的核心選擇最準確的方法。

ps_mem
登入後複製

10.gif

注:如果執行以下命令提示未發現,請執行「yum install ps_mem」安裝

相關推薦:《Linux視訊教學

以上就是linux檢視記憶體使用情況的命令有哪些的詳細內容,更多請關注TW511.COM其它相關文章!