linux 性能監控 vmstat 命令

vmstat 命令 查看內存信息

 

一、語法格式:

vmstat  [ 選項 ]  [ <時間間隔>    <次數> ]

選項參數:

-n:只在開始時顯示一次各字段名稱

 -a:顯示活躍和非活躍內存

 -d:顯示各個磁盤相關統計信息

-D:顯示磁盤總體信息

 -p:顯示指定磁盤分區統計信息

-s:顯示內存相關統計信息及多種系統活動數量

-m:顯示slabinfo

 -t:在輸出信息的時候也將時間一併輸出出來

-S:使用指定單位顯示。參數有k、K、m、M,分別代表1000、1024、1000000、1048576字節(byte)。默認單位爲K(1024bytes)

二、vmstat各字段說明

 

1、procs

r:表示運行和等待CPU時間片的進程數(就是說多少個進程真的分配到CPU),這個值如果長期大於系統CPU個數,說明CPU不足,需要增加CPU

b:表示在等待資源的進程數,比如正在等待I/O或者內存交換等。

2、memory

swpd:表示切換到內存交換區的內存大小,即虛擬內存已使用的大小(單位KB),如果大於0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那麼你該升級內存了或者把耗內存的任務遷移到其他機器。

free:表示當前空閒的物理內存

buff:表示baffers cached內存大小,也就是緩衝大小,一般對塊設備的讀寫才需要緩衝

Cache:表示page cached的內存大小,也就是緩存大小,一般作爲文件系統進行緩衝,頻繁訪問的文件都會被緩存,如果cache值非常大說明緩存文件比較多,如果此時io中的bi比較小,說明文件系統效率比較好

3、swap

si:表示有磁盤調入內存,也就是內存進入內存交換區的內存大小;通俗的講就是 每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。

so:表示由內存進入磁盤,也就是由內存交換區進入內存的內存大小。

注意:一般情況下si、so的值都爲0,如果si、so的值長期不爲0,則說明系統內存不足,需要增加系統內存

4、io

bi:表示由塊設備讀入數據的總量,即讀磁盤,單位kb/s

bo:表示寫到塊設備數據的總量,即寫磁盤,單位kb/s

注意:如果bi+bo的值過大,且wa值較大,則表示系統磁盤IO瓶頸

5、system

in:表示某一時間間隔內觀測到的每秒設備終端數

cs:表示每秒產生的 上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程可以由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要儘量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。

注意:

這兩個值越大,則由內核消耗的CPU就越多

6、CPU

us:表示用戶進程消耗的CPU時間百分比,us值越高,說明用戶進程消耗CPU時間越多,如果長期大於50%,則需要考慮優化程序或者算法

sy:表示系統內核進程消耗的CPU時間百分比,一般來說us+sy應該小於80%,如果大於80%,說明可能存在CPU瓶頸

id:表示CPU處在空間狀態的時間百分比

wa:表示IP等待所佔用的CPU時間百分比,wa值越高,說明I/O等待越嚴重,根據經驗wa的參考值爲20%,如果超過20%,說明I/O等待嚴重,引起I/O等待的原因可能是磁盤大量隨機讀寫造成的,也可能是磁盤或者監控器的貸款瓶頸(主要是塊操作)造成的

綜上所述,如果評估CPU,需要重點關注procs項的r列值和CPU項的us、sy、wa列的值

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章