1. 程式人生 > 其它 >使用vmstat和iostat命令進行Linux效能監控

使用vmstat和iostat命令進行Linux效能監控

使用vmstat和iostat命令進行Linux效能監控

這是我們正在進行的Linux命令和效能監控系列的一部分。vmstat和iostat兩個命令都適用於所有主要的類unix系統(Linux/unix/FreeBSD/Solaris)。

如果vmstat和iostat命令在你的系統中不可用,請安裝sysstat軟體包。vmstat,sar和iostat命令都包含在sysstat(系統監控工具)軟體包中。iostat命令生成CPU和所有裝置的統計資訊。你可以從這個連線中下載原始碼包編譯安裝sysstat,但是我們建議通過YUM命令進行安裝。

在Linux系統中安裝sysstat

  1. #yum -y install sysstat
  • vmstat- 記憶體,程序和分頁等的簡要資訊。
  • iostat- CPU統計資訊,裝置和分割槽的輸入/輸出統計資訊。

Linux下vmstat命令的6個範例

1. 列出活動和非活動的記憶體

如下範例中輸出6列。vmstat的man頁面中解析的每一列的意義。最重要的是記憶體中的free屬性和交換分割槽中的si和so屬性。

  1. [root@tecmint ~]# vmstat -a
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  3. r b swpd free inact active si so bi bo in cs us sy id wa st
  4. 1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0
  • Free– 空閒的記憶體空間
  • si– 每秒從磁碟中交換進記憶體的資料量(以KB為單位)。
  • so– 每秒從記憶體中交換出磁碟的資料量(以KB為單位)。

注意:如果你不帶引數的執行vmstat命令,它會輸出自系統啟動以來的總結報告。

2. 每X秒執行vmstat,共執行N次

下面命令將會每2秒中執行一次vmstat,執行6次後自動停止執行。

  1. [root@tecmint ~]# vmstat 2 6
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 0 0 0 810420 22064 101368 0 0 56 3 50 57 0 3 95 2 0
  5. 0 0 0 810412 22064 101368 0 0 0 0 16 35 0 0 100 0 0
  6. 0 0 0 810412 22064 101368 0 0 0 0 14 35 0 0 100 0 0
  7. 0 0 0 810412 22064 101368 0 0 0 0 17 38 0 0 100 0 0
  8. 0 0 0 810412 22064 101368 0 0 0 0 17 35 0 0 100 0 0
  9. 0 0 0 810412 22064 101368 0 0 0 0 18 36 0 1 100 0 0

3. 帶時間戳的vmstat命令

帶-t引數執行vmstat命令,該命令將會在每一行輸出後都帶一個時間戳,如下所示。

  1. [tecmint@tecmint ~]$ vmstat -t 1 5
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 0 0 0 632028 24992 192244 0 0 70 5 55 78 1 3 95 1 0 2012-09-02 14:57:18 IST
  5. 1 0 0 632028 24992 192244 0 0 0 0 171 514 1 5 94 0 0 2012-09-02 14:57:19 IST
  6. 1 0 0 631904 24992 192244 0 0 0 0 195 600 0 5 95 0 0 2012-09-02 14:57:20 IST
  7. 0 0 0 631780 24992 192244 0 0 0 0 156 524 0 5 95 0 0 2012-09-02 14:57:21 IST
  8. 1 0 0 631656 24992 192244 0 0 0 0 189 592 0 5 95 0 0 2012-09-02 14:57:22 IST

4. 統計各種計數器

vmstat命令的-s引數,將輸出各種事件計數器和記憶體的統計資訊。

  1. [tecmint@tecmint ~]$ vmstat -s
  2. 1030800 total memory
  3. 524656 used memory
  4. 277784 active memory
  5. 185920 inactive memory
  6. 506144 free memory
  7. 26864 buffer memory
  8. 310104 swap cache
  9. 2064376 total swap
  10. 0 used swap
  11. 2064376 free swap
  12. 4539 non-nice user cpu ticks
  13. 0 nice user cpu ticks
  14. 11569 system cpu ticks
  15. 329608 idle cpu ticks
  16. 5012 IO-wait cpu ticks
  17. 79 IRQ cpu ticks
  18. 74 softirq cpu ticks
  19. 0 stolen cpu ticks
  20. 336038 pages paged in
  21. 67945 pages paged out
  22. 0 pages swapped in
  23. 0 pages swapped out
  24. 258526 interrupts
  25. 392439 CPU context switches
  26. 1346574857 boot time
  27. 2309 forks

5. 磁碟統計資訊

vmstat的-d引數將會輸出所有磁碟的統計資訊。

  1. [tecmint@tecmint ~]$ vmstat -d
  2. disk- ------------reads------------ ------------writes----------- -----IO------
  3. total merged sectors ms total merged sectors ms cur sec
  4. ram0 0 0 0 0 0 0 0 0 0 0
  5. ram1 0 0 0 0 0 0 0 0 0 0
  6. ram2 0 0 0 0 0 0 0 0 0 0
  7. ram3 0 0 0 0 0 0 0 0 0 0
  8. ram4 0 0 0 0 0 0 0 0 0 0
  9. ram5 0 0 0 0 0 0 0 0 0 0
  10. ram6 0 0 0 0 0 0 0 0 0 0
  11. ram7 0 0 0 0 0 0 0 0 0 0
  12. ram8 0 0 0 0 0 0 0 0 0 0
  13. ram9 0 0 0 0 0 0 0 0 0 0
  14. ram10 0 0 0 0 0 0 0 0 0 0
  15. ram11 0 0 0 0 0 0 0 0 0 0
  16. ram12 0 0 0 0 0 0 0 0 0 0
  17. ram13 0 0 0 0 0 0 0 0 0 0
  18. ram14 0 0 0 0 0 0 0 0 0 0
  19. ram15 0 0 0 0 0 0 0 0 0 0
  20. loop0 0 0 0 0 0 0 0 0 0 0
  21. loop1 0 0 0 0 0 0 0 0 0 0
  22. loop2 0 0 0 0 0 0 0 0 0 0
  23. loop3 0 0 0 0 0 0 0 0 0 0
  24. loop4 0 0 0 0 0 0 0 0 0 0
  25. loop5 0 0 0 0 0 0 0 0 0 0
  26. loop6 0 0 0 0 0 0 0 0 0 0
  27. loop7 0 0 0 0 0 0 0 0 0 0
  28. sr0 0 0 0 0 0 0 0 0 0 0
  29. sda 7712 5145 668732 409619 3282 28884 257402 644566 0 126
  30. dm-0 11578 0 659242 1113017 32163 0 257384 8460026 0 126
  31. dm-1 324 0 2592 3845 0 0 0 0 0 2

6. 以MB為單位輸出統計資訊

vmstat的-S和-M引數(大寫和MB)將會以MB為單位輸出。vmstat預設以KB為單位輸出統計資訊。

  1. [root@tecmint ~]# vmstat -S M 1 5
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 0 0 0 346 53 476 0 0 95 8 42 55 0 2 96 2 0
  5. 0 0 0 346 53 476 0 0 0 0 12 15 0 0 100 0 0
  6. 0 0 0 346 53 476 0 0 0 0 32 62 0 0 100 0 0
  7. 0 0 0 346 53 476 0 0 0 0 15 13 0 0 100 0 0
  8. 0 0 0 346 53 476 0 0 0 0 34 61 0 1 99 0 0

linux下的Iostat命令的6個範例

1. 輸出CPU和輸入/輸出(I/O)的統計資訊

不帶引數的iostat命令將會輸出CPU和每個分割槽的輸出/輸出的統計資訊,如下所示。

  1. [root@tecmint ~]# iostat
  2. Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 0.12 0.01 1.54 2.08 0.00 96.24
  5. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  6. sda 3.59 161.02 13.48 1086002 90882
  7. dm-0 5.76 159.71 13.47 1077154 90864
  8. dm-1 0.05 0.38 0.00 2576 0

2. 只輸出CPU的統計資訊

iostat命令的-c引數僅輸出CPU的統計資訊,如下所示。

  1. [root@tecmint ~]# iostat -c
  2. Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 0.12 0.01 1.47 1.98 0.00 96.42

3. 只輸出磁碟的輸入/輸出統計資訊

iostat命令的-d引數僅輸出磁碟的所有分割槽的輸入/輸出的統計資訊,如下所示。

  1. [root@tecmint ~]# iostat -d
  2. Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
  3. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  4. sda 3.35 149.81 12.66 1086002 91746
  5. dm-0 5.37 148.59 12.65 1077154 91728
  6. dm-1 0.04 0.36 0.00 2576 0

4. 只輸出某個磁碟的輸入/輸出統計資訊

在預設情況下iostat命令會輸出所有分割槽的統計資訊,但是若在iostat命令後加上-p引數和磁碟裝置名,該命令將會僅輸出列出的磁碟的輸入/輸出統計資訊,如下所示。

  1. [root@tecmint ~]# iostat -p sda
  2. Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 0.11 0.01 1.44 1.92 0.00 96.52
  5. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  6. sda 3.32 148.52 12.55 1086002 91770
  7. sda1 0.07 0.56 0.00 4120 18
  8. sda2 3.22 147.79 12.55 1080650 91752

5. 輸出邏輯卷管理(LVM)的統計資訊

iostat命令的-N(大寫)引數將會輸出LVM(LCTT譯註:LVM是linux環境下對磁碟分割槽進行管理的一種機制,是磁碟分割槽和檔案系統間的一個邏輯層)的統計資訊,如下所示。

  1. [root@tecmint ~]# iostat -N
  2. Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 0.11 0.01 1.39 1.85 0.00 96.64
  5. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  6. sda 3.20 142.84 12.16 1086002 92466
  7. vg_tecmint-lv_root 5.13 141.68 12.16 1077154 92448
  8. vg_tecmint-lv_swap 0.04 0.34 0.00 2576 0

6. iostat版本資訊

iostat的-V(大寫)引數將會輸出iostat的版本資訊,如下所示。

  1. [root@tecmint ~]# iostat -V
  2. sysstat version 9.0.4
  3. (C) Sebastien Godard (sysstat orange.fr)

注意:vmstat和iostat的輸出中包含多列的資料和標誌,限於篇幅無法在本文中進行詳細的解析。如果你想知道更多的資訊,請檢視vmstat和iostat的man幫助手冊。如果你覺得本文對你有價值,請在下面的評論框中與你的朋友分享。