Linux監控命令之==>vmstat
阿新 • • 發佈:2018-08-27
隨機 pan 運用 wap 虛擬內存 測試 正常 部分 size
一、使用說明
vmstat 可以對操作系統的內存信息、進程狀態、CPU 活動、磁盤等信息進行監控,不足之處是無法對某個進程進行深入分析。
二、用法及參數說明
- -a:顯示活躍和非活躍內存
- -f:顯示從系統啟動至今的fork數量
- -m:顯示slabinfo
- -n:只在開始時顯示一次各字段名稱
- -s:顯示內存相關統計信息及多種系統活動數量
- delay:刷新時間間隔。如果不指定,只顯示一條結果
- count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮
- -d:顯示磁盤相關統計信息
- -p:顯示指定磁盤分區統計信息
- -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)
- -V:顯示vmstat版本信息
- -p:顯示指定磁盤分區統計信息
- -D:顯示磁盤總體信息
三、結果說明
2表示兩秒采集一次服務器狀態,5表示采集5次。在實際運用過程中,一般會在一段時間內一直監控,不想監控直接結束就行了,如下:
- r 列表示運行和等待CPU時間片的進程數,這個值如果長期大於系統CPU個數,說明CPU不足,需要增加CPU。
- b 列表示在等待資源的進程數,比如正在等待I/O或者內存交換等。
- swpd 列表示虛擬內存已使用的大小,如果swap值不為0或者比較大,只要si、so的值長期為0,一般屬於正常情況。
- free 列表示空閑的物理內存的大小,單位為KB。
- buff 列表示baffers cached內存大小,也就是緩沖大小,一般對塊設備的讀寫才需要緩沖。
- cache 列表示page cached的內存大小,也就是緩存大小,一般作為文件系統進行緩沖,頻繁訪問的文件都會被緩存,如果cache 值非常大說明緩存文件比較多,如果此時io中的bi 比較小,說明文件系統效率比較好。
- si 列表示每秒從磁盤讀入虛擬內存的大小,如果這個值長期大於0,表示物理內存不夠用,需要增加系統內存。
- so 列表示每秒虛擬內存寫入磁盤的大小,如果這個值長期大於0,也是表示物理內存不夠用,需要增加系統內存。
- bi 列表示由塊設備讀入數據的總量,即讀磁盤,單位kb/s。
- bo 列表示寫到塊設備數據的總量,即寫磁盤,單位kb/s。如果bi+bo值過大,且wa值較大,則表示系統磁盤IO瓶頸。
- in 列表示每秒CPU的中斷次數,包括時間中斷。
- cs 列表示每秒產生的上下文切換次數,這兩個值越大,則由內核消耗的CPU就越多。這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千並發甚至幾萬並發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
- us 列表示用戶進程消耗的CPU時間百分比,us值越高,說明用戶進程消耗CPU時間越多,如果長期大於50%,則需要考慮優化程序或者算法。
- sy 列表示系統內核進程消耗的CPU時間百分比,一般來說us+sy應小於80%,如果80%,則說明可能存在CPU瓶頸。
- id 列表示CPU處在空閑狀態的時間百分比。
- wa 列表示I/O等待所占的CPU時間百分比,wa值越高,說明I/O等待越嚴重,根據經驗wa的參考值為20%,超過20%說明I/O等待嚴重,引起I/O等待的原因可能是磁盤大量隨機讀寫造成的,也可能是磁盤出現瓶頸(主要是塊操作)造成的。
重點參數:r,b,swpd,free,buff,cache,si,so,bi,bo
四、性能分析信息
1、IO/CPU/men連鎖反應
- free急劇下降
- buff和cache被回收下降,但也無濟於事
- 依舊需要使用大量swap交換分區swpd
- 等待進程數,b增多
- 讀寫IO,bi bo增多
- si so大於0開始從硬盤中讀取
- cpu等待時間用於 IO等待,wa增加
2、內存不足
- 開始使用swpd,swpd不為0
- si so大於0開始從硬盤中讀取
3、io瓶頸
- 讀寫IO,bi bo增多超過2000
- cpu等待時間用於 IO等待,wa增加 超過20
- sy 系統調用時間長,IO操作頻繁會導致增加 >30%
- wa io等待時間長
- iowait% <20% 良好
- iowait% <35% 一般
- iowait% >50%
- 進一步使用iostat觀察
4、CPU瓶頸:load,vmstat中r列
- 反應為CPU隊列長度
- 一段時間內,CPU正在處理和等待CPU處理的進程數之和,直接反應了CPU的使用和申請情況。
- 理想的load average:核數*CPU數*0.7
- CPU個數:grep ‘physical id‘ /proc/cpuinfo | sort -u
- 核數:grep ‘core id‘ /proc/cpuinfo | sort -u | wc -l
- 超過這個值就說明已經是CPU瓶頸了
Linux監控命令之==>vmstat