Linux檢視記憶體使用情況方法彙總

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

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

Linux檢視記憶體使用情況:free命令

free 是監控 Linux 記憶體使用狀況最常用的命令之一,有關該命令的基本用法,已經在《Linux free命令》一節中做了詳細介紹,所以不再贅述,這裡重點給大家講解如何使用 free 命令檢視系統記憶體的使用情況。

下面是 free 命令在當前測試系統中的輸出結果:
[[email protected]  ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2004        573       1431          0         47        201
-/+ buffers/cache:        323       1680
Swap:         1983          0       1983
從輸出結果可以看到,該系統共 2GB 記憶體,其中系統空閒記憶體還有 1431MB,並且 swap 交換分割區還未使用,因此可以判斷出當前系統的記憶體資源還非常充足。

除此之外,free 命令還可以實時地監控記憶體的使用狀況,通過使用 -s 選項,可以實現在指定的時間段內不間斷地監控記憶體的使用情況。例如:
[[email protected] ~]# free -m -s 5
             total       used       free     shared    buffers     cached
Mem:          2004        571       1433          0         47        202
-/+ buffers/cache:        321       1683
Swap:         1983          0       1983

             total       used       free     shared    buffers     cached
Mem:          2004        571       1433          0         47        202
-/+ buffers/cache:        321       1683
Swap:         1983          0       1983
#省略後續輸出
要想實現動態地監控記憶體使用狀況,除了使用 free 命令提供的 -s 選項,還可以借助 watch 命令。通過給 watch 命令後面新增需要執行的命令,watch 就會自行重複去執行這個命令(預設 2 秒執行一次),例如:
[[email protected] ~]# watch -n 3 -d free
Every 3.0s: free                                        Tue Oct 29 03:05:43 2019

             total       used       free     shared    buffers     cached
Mem:       2052988     586504    1466484          0      49184     207360
-/+ buffers/cache:     329960    1723028
Swap:      2031608          0    2031608
上面執行的命令中,-n 選項用於執行重複執行的間隔時間,-d 選項用於在顯示資料時,高亮顯示變動了的資料。

Linux檢視記憶體使用情況:vmstat命令

vmstat 命令在監控系統記憶體方面的功能很強大,有關此命令的基本用法,已經在《Linux vmstat命令》一節中做了詳細介紹,這裡重點講解如何使用此命令檢視記憶體的使用狀況。

下面是執行 vmstat 命令的輸出結果:
[[email protected] ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 1436128  53004 210744    0    0     7     0   13   14  0  0 100  0  0
1  0      0 1436112  53004 210744    0    0     0     0  128  226  0  0 100  0  0
0  0      0 1435988  53004 210744    0    0     0     0  144  220  1  0 99  0  0
對於記憶體的監控,我們只需要重點關注 swpd、si 和 so 這 3 列。從此輸出結果可以看出,當前系統中,虛擬記憶體沒有使用,硬碟和記憶體之間沒有交換資料,可見記憶體資源處於空閒狀態。

Linux檢視記憶體使用情況:sar命令

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

有關 sar 命令的基本用法,可以閱讀《Linux sar命令》一文做詳細了解。

如下是執行“sar -r”命令的輸出結果:
[[email protected] ~]# sar -r 2 3
Linux 2.6.32-431.el6.x86_64 (localhost)  10/29/2019  _x86_64_ (8 CPU)

04:54:20 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
04:54:22 AM   1218760    834228     40.63     53228    424908    738312     18.08
04:54:24 AM   1218744    834244     40.64     53228    424908    738312     18.08
04:54:26 AM   1218712    834276     40.64     53228    424908    738312     18.08
Average:      1218739    834249     40.64     53228    424908    738312     18.08
此輸出結果中,各個參數列示的含義如下:
  • kbmemfree:表示空閒的實體記憶體的大小;
  • kbmemeused:表示已使用的實體記憶體的大小;
  • %memused:表示已使用記憶體占總記憶體大小的百分比;
  • kbbuffers:表示緩衝區所使用的實體記憶體的大小;
  • kbcached:表示告訴快取所使用的實體記憶體的大小;
  • kbcommit 和 %commit:分別表示當前系統中應用程式使用的記憶體大小和百分比;
相比 free 命令,sar 命令的輸出資訊更加人性化,不僅給出了記憶體使用量,還給出了記憶體使用的百分比以及統計的平均值。比如說,僅通過 %commit 一項就可以得知,當前系統中的記憶體資源充足。