LINUX 查看當前系統的內存使用情況 vmstat


Linux vmstat 命令

 

Vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。

相比top,我可以看到整個機器的CPU,內存,IO的使用情況,而不是單單看到各個進程的CPU使用率和內存使用率(使用場景不一樣)

 

> vmstat

[ceshi@aaaaaaaa ~]$ vmstat

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 323208 290276 5500528    0    0     0     2    0    0  0  0 100  0  0

 

一般、vmstat工具的使用是通過兩個參數來完成的、

第一個參數為采樣的時間、單位是秒、第二個采樣的次數

 

> vmstat 2 1   // 表示:每隔兩秒、采集一次服務器狀態

[ceshi@aaaaaaaa ~]$ vmstat 2 1

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 323084 290276 5500528    0    0     0     2    0    0  0  0 100  0  0

 

實際項目中、我們一般是在一段時間內一直監控、不想監控、直接結束就ok

 

> vmstat 2  // 表示每隔兩秒采集一次數據、一直采集(直到主動結束程序)

[ceshi@aaaaaaaa ~]$ vmstat 2

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 323208 290276 5500528    0    0     0     2    0    0  0  0 100  0  0

 0  0      0 323192 290276 5500528    0    0     0     0  248  341  0  0 100  0  0

 0  0      0 323192 290276 5500528    0    0     0     0  225  333  0  0 100  0  0

 2  0      0 323192 290276 5500528    0    0     0     0  225  332  0  0 100  0  0

^C

 

 

具體的、每一個參數所代表的內容如下:

r

表示運行隊列;

當這個值超過了CPU數目,就會出現CPU瓶頸了;

一般負載超過了3就高了、超過了5個就比較高、超過了10個就不正常了、服務器就比較危險了;

top的負載類似每秒運行的隊列。如果隊列過大、表示CPU很忙、

b

表示阻塞的進程、

swpd

表示虛擬內存使用的大小

如果大於0、表示機器物理內存不足、如果不是內存泄漏的原因、就應該升級內存、或者遷移內存;

free

表示空閑內存的大小

buff

表示用來存儲目錄里面的內容、權限等緩存;

cache

表示緩存的大小、cache直接用來記錄我們打開的文件、給文件做緩存;

(將空閑的物理內存的一部分拿來坐文件和目錄的緩存、提高程序執行的性能)

(當程序使用內存時、buff/cache會很快地被使用)

si

表示每秒從磁盤讀入虛擬內存的大小;

如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉;

so

表示每秒虛擬內存寫入磁盤的大小;

bi

表示塊設備每秒接收的塊數量;

這里的塊設備是指系統上所有的磁盤和其他塊設備;

bo

表示塊設備每秒發送的塊數量;

例如我們讀取文件,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整。

in

表示每秒CPU的中斷次數、包括時間中斷;

cs

表示每秒上下文切換次數、

當調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換;

這個值要越小越好,太大了,要考慮調低線程或者進程的數目;

us

表示用戶CPU時間、

sy

表示系統CPU時間;

如果太高,表示系統調用時間長

id 

表示空閑CPU時間;

一般的 id + us + sy = 100

可以理解為:id是空閑CPU使用率、us是用戶CPU使用率、sy是系統CPU使用率;

wt

表示等待IO、CPU時間;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM