內存的管理和優化,是 Linux 系統性能優化的重要組成部分,換句話說,內存資源是否充足,會直接影響應用系統(包含作業系統和應用程式)的使用性能。
本節將介紹幾個系統命令,通過它們,可以快速查看 Linux 系統中內存的使用狀況。
free 是監控 Linux 內存使用狀況最常用的命令之一,有關該命令的基本用法,已經在《Linux free命令》一節中做了詳細介紹,所以不再贅述,這裡重點給大家講解如何使用 free 命令查看系統內存的使用情況。
下面是 free 命令在當前測試系統中的輸出結果:
[root@localhost ~] total used free shared buffers cachedMem: 2004 573 1431 0 47 201-/+ buffers/cache: 323 1680Swap: 1983 0 1983從輸出結果可以看到,該系統共 2GB 內存,其中系統空閒內存還有 1431MB,並且 swap 交換分區還未使用,因此可以判斷出當前系統的內存資源還非常充足。
除此之外,free 命令還可以實時地監控內存的使用狀況,通過使用 -s 選項,可以實現在指定的時間段內不間斷地監控內存的使用情況。例如:[root@localhost ~]# free -m -s 5 total used free shared buffers cachedMem: 2004 571 1433 0 47 202-/+ buffers/cache: 321 1683Swap: 1983 0 1983
total used free shared buffers cachedMem: 2004 571 1433 0 47 202-/+ buffers/cache: 321 1683Swap: 1983 0 1983要想實現動態地監控內存使用狀況,除了使用 free 命令提供的 -s 選項,還可以藉助 watch 命令。通過給 watch 命令後面添加需要運行的命令,watch 就會自行重複去運行這個命令(默認 2 秒執行一次),例如:
[root@localhost ~]# watch -n 3 -d freeEvery 3.0s: free Tue Oct 29 03:05:43 2019
total used free shared buffers cachedMem: 2052988 586504 1466484 0 49184 207360-/+ buffers/cache: 329960 1723028Swap: 2031608 0 2031608上面執行的命令中,-n 選項用於執行重複執行的間隔時間,-d 選項用於在顯示數據時,高亮顯示變動了的數據。
Linux查看內存使用情況:vmstat命令vmstat 命令在監控系統內存方面的功能很強大,有關此命令的基本用法,已經在《Linux vmstat命令》一節中做了詳細介紹,這裡重點講解如何使用此命令查看內存的使用狀況。
下面是執行 vmstat 命令的輸出結果:[root@localhost ~]# vmstat 2 3procs -memory ---swap-- io---- --system-- cpur b swpd free buff cache si so bi bo in cs us sy id wa st0 0 0 1436128 53004 210744 0 0 7 0 13 14 0 0 100 0 01 0 0 1436112 53004 210744 0 0 0 0 128 226 0 0 100 0 00 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」命令的輸出結果:
[root@localhost ~]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 %commit04:54:22 AM 1218760 834228 40.63 53228 424908 738312 18.0804:54:24 AM 1218744 834244 40.64 53228 424908 738312 18.0804:54:26 AM 1218712 834276 40.64 53228 424908 738312 18.08Average: 1218739 834249 40.64 53228 424908 738312 18.08此輸出結果中,各個參數表示的含義如下:
kbmemfree:表示空閒的物理內存的大小;
kbmemeused:表示已使用的物理內存的大小;
%memused:表示已使用內存佔總內存大小的百分比;
kbbuffers:表示緩衝區所使用的物理內存的大小;
kbcached:表示告訴緩存所使用的物理內存的大小;
kbcommit 和 %commit:分別表示當前系統中應用程式使用的內存大小和百分比;
相比 free 命令,sar 命令的輸出信息更加人性化,不僅給出了內存使用量,還給出了內存使用的百分比以及統計的平均值。比如說,僅通過 %commit 一項就可以得知,當前系統中的內存資源充足。