1. 程式人生 > >Linux監控命令之==>vmstat

Linux監控命令之==>vmstat

隨機 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