1. 程式人生 > >Linux(CentOS)效能監控命令vmstat

Linux(CentOS)效能監控命令vmstat

1、簡介

Vmstat也是一個功能比較齊全的效能檢測工具,可以統計CPU、記憶體使用情況、swap使用情況等資訊,不足之處是無法對某個程序進行深入分析。和sar類似,也可以指定採集週期和次數。下面是每秒取樣一次,共計3次:

[[email protected]-nginx ~]# vmstat 1 3
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 11858152 1347368 357384 0 0 2 3 2 4 0 0 100 0 0 0 0 0 11858276 1347368 357396 0 0 0 0 114 157 0 0 100 0 0 0 0 0 11858268 1347368 357412 0 0 0 68 91 139 0 0 100 0 0 [[email protected]-nginx ~]#

2、分析:

  1. Procs
    r:等表示執行和等待CPU時間片的程序數,如果這個值長期大於系統CPU個數,就說明CPU資源不足,可以考慮增加CPU;
    b:處表示在等待資源的程序數,比如正在等待I/O或者記憶體交換等
  2. Memory
    swpd:虛擬記憶體使用情況,單位:KB,表示切換到記憶體交換區的記憶體大小,如果swap值不為0或者比較大,只要si、so的值長期為0,這種情況一般屬於正常情況。
    free:空閒的實體記憶體,單位KB
    buff:用作快取的記憶體大小,單位KB(將要寫入磁碟的),表示buffers cached記憶體大小,也就是緩衝大小,一般對塊裝置的讀寫才需要緩衝。
    cache:用作快取的記憶體大小,單位KB(從磁碟中讀出來的)。表示page cached的記憶體大小,也就是緩衝大小,一般作為檔案系統進行緩衝,頻繁訪問的檔案都會被快取,如果cache值非常大說明快取檔案比較多,如果此時io中的bi比較小,說明檔案系統效率比較好。
  3. swap
    si:從磁碟交換到記憶體的交換頁數量,單位:KB/S(每秒從交換區寫到記憶體的大小);表示從磁碟調入記憶體,也就是記憶體進入記憶體交換區的記憶體大小;
    so:從記憶體交換到磁碟的交換頁數量,單位:KB/S(每秒寫入交換區的記憶體大小),也就是由記憶體交換區進入記憶體的記憶體大小;
    一般情況下,si、so的值都為0,如果si、so的值長期不為0,則說明系統記憶體不足,需要增加系統記憶體;
  4. io
    bi:由塊裝置讀入資料的總量,即讀磁碟,單位kb/s
    bo:寫到塊裝置資料的總量,即寫磁碟,單位kb/s
    如果bi+bo值過大(超過1000算大),且wa值較大,則表示系統磁碟IO瓶頸
  5. system
    in:表示某一時間間隔內觀測到的每秒裝置的中斷數,包括時鐘中斷
    cs:每秒產生的上下文切換次數
    這2個值越大,則由核心消耗的CPU就越多。
  6. cpu
    us:使用者程序消耗的CPU時間百分比,us值越高,說明使用者程序消耗cpu時間越多,如果長期大於50%,則需要考慮優化程式或演算法。
    sy:表示系統核心程序消耗的CPU時間百分比,一般來說us+sy應該小於80%,如果大於80%,說明可能出現CPU瓶頸
    id:空閒狀態的時間百分比(包括IO等待時間)
    wa:表示IO等待所佔用的CPU時間百分比,wa值越高,說明IO等待越嚴重。如果wa值超過20%,說明IO等待嚴重;引起I/O等待的原因可能是磁碟大量隨機讀寫造成的,也可能是磁碟或者磁碟訪問監控器的頻寬瓶頸(主要是塊操作)造成的

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

st:一般不關注,虛擬機器佔用時間百分比

3、vmstat命令引數用法

[[email protected] ~]# vmstat -h
usage: vmstat [-V] [-n] [delay [count]]
              -V prints version.
              -n causes the headers not to be reprinted regularly.
              -a print inactive/active page stats.
              -d prints disk statistics
              -D prints disk table
              -p prints disk partition statistics
              -s prints vm table
              -m prints slabinfo
              -t add timestamp to output
              -S unit size
              delay is the delay between updates in seconds. 
              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
              count is the number of updates.
[[email protected] ~]# 
  • -a:顯示活躍和非活躍記憶體
  • -m:顯示slabinfo
  • -n:只在開始時顯示一次各欄位名稱
  • -s:顯示記憶體相關統計資訊及多種系統活動數量
  • delay:重新整理時間間隔,如果不指定,只顯示一條結果
  • count:重新整理次數,如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮
  • -d:顯示各個磁碟相關統計資訊。
  • -S:使用指定單位顯示。引數有k、K、m、M,分別代表1000、1024、1000000、1048576位元組(bype)。預設單位為K(1024 bytes)
  • -V:顯示vmstat版本資訊
  • -p:顯示指定磁碟分割槽統計資訊
  • -D:顯示磁碟總體資訊