用于 Linux 性能监控的iostat、mpstat 和 vmstat示例

举报
Tiamo_T 发表于 2022/04/17 09:41:54 2022/04/17
【摘要】 本文共提供了 24 个关于 iostat、vmstat 和 mpstat 命令的示例。

本文共提供了 24 个关于 iostat、vmstat 和 mpstat 命令的示例。

  • iostat 报告 CPU、磁盘 I/O 和 NFS 统计信息。
  • vmstat 报告虚拟内存统计信息。
  • mpstat 报告处理器静态数据。

本文是我们正在进行的 Linux 性能监控系列的一部分。

请注意,iostat 和 vmstat 是 sar 实用程序的一部分。

IOSTAT 示例

1. iostat - 基本示例

不带任何参数的 Iostat 显示有关 CPU 使用率的信息,以及有关系统上所有分区的 I/O 统计信息,如下所示。

$ iostat 
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 

avg-cpu: %user %nice %system %iowait %steal %idle 
           5.68 0.00 0.52 2.03 0.00 91.76 

Device: tps Blk_read / s的Blk_wrtn / s的Blk_read Blk_wrtn 
SDA 194.72 1096.66 1598.70 2719068704 3963827344 SDA1 178.20 773.45 
1329.09 1917686794 3295354888 SDA2 
16.51 323.19 269.61 801326686 668472456 SDB 371.31 945.97 1073.33 2345452365 
2661206408 SDB1 371.31 945.95 1073.33 2345396901 
2661206408 SDC 408.03 
207.05 972.42 513364213 2411023092
sdc1 408.03 207.03 972.42 513308749 2411023092

2. iostat - 仅显示 cpu 统计信息

iostat 选项 -c,仅显示 CPU 使用率统计信息,如下所示。

$ iostat -c
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

3. iostat – 仅显示磁盘 I/O 统计信息

iostat 选项 -d,仅显示磁盘 I/O 统计信息,如下所示。

$ iostat -d
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             194.71      1096.61      1598.63 2719068720 3963827704
sda1            178.20       773.41      1329.03 1917686810 3295355248
sda2             16.51       323.18       269.60  801326686  668472456
sdb             371.29       945.93      1073.28 2345452365 2661209192
sdb1            371.29       945.91      1073.28 2345396901 2661209192
sdc             408.01       207.04       972.38  513364213 2411024484
sdc1            408.01       207.02       972.38  513308749 2411024484

4. iostat - 仅显示网络统计信息

iostat 选项 -n,仅显示设备和 NFS 统计信息,如下所示。


$ iostat -n
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)        07/09/2011

avg-cpu:  %user   %nice    %sys %iowait   %idle
           4.33    0.01    1.16    0.31   94.19

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.83         0.35         5.39   29817402  457360056
sda1              3.32        50.18         4.57 4259963994  387641400
sda2              0.20         0.76         0.82   64685128   69718576
sdb               6.59        15.53        42.98 1318931178 3649084113
sdb1             11.80        15.53        42.98 1318713382 3649012985

Device:                  rBlk_nor/s   wBlk_nor/s   rBlk_dir/s   wBlk_dir/s   rBlk_svr/s   wBlk_svr/s
192.168.1.4:/home/data      90.67        0.00         0.00         0.00         5.33         0.00
192.168.1.4:/backup         8.74         0.00         0.00         0.00         8.74         0.00
192.168.1.8:/media          0.02         0.00         0.00         0.00    

5. iostat – 以 MB/秒为单位显示 I/O 数据

默认情况下 iostat,在 Blocks 中显示设备 I/O 统计信息。要将其更改为 MB,请使用 -m,如下所示。

$ iostat -m
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda             194.70         0.54         0.78    1327670    1935463
sda1            178.19         0.38         0.65     936370    1609060
sda2             16.51         0.16         0.13     391272     326402
sdb             371.27         0.46         0.52    1145240    1299425
sdb1            371.27         0.46         0.52    1145213    1299425
sdc             407.99         0.10         0.47     250666    1177259
sdc1            407.99         0.10         0.47     250639    1177259

6. iostat – 仅显示设备的 I/O 统计信息

默认情况下,iostat 显示系统中所有可用磁盘的 I/O 数据。要查看特定设备(例如 /dev/sda)的统计信息,请使用选项 -p,如下所示。

$ iostat -p sda
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             194.69      1096.51      1598.48 2719069928 3963829584
sda2            336.38        27.17        54.00   67365064  133905080
sda1            821.89         0.69       243.53    1720833  603892838

7. iostat – 显示时间戳信息

默认情况下,iostat 仅显示当前日期。要显示当前时间,请使用选项 -t,如下所示。

$ iostat -t
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

Time: 08:57:52 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             194.69      1096.49      1598.45 2719070384 3963829704
sda1            178.18       773.32      1328.88 1917688474 3295357248
sda2             16.51       323.14       269.57  801326686  668472456
sdb             371.25       945.82      1073.16 2345452741 2661228872
sdb1            371.25       945.80      1073.16 2345397277 2661228872
sdc             407.97       207.02       972.27  513364233 2411030200
sdc1            407.97       207.00       972.27  513308769 2411030200

8. iostat – Display Extended status

8. iostat - 显示扩展状态

使用选项 -x,它将显示扩展磁盘 I/O 统计信息,如下所示。

$ iostat -x
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda              27.86    63.53 61.77 132.91  1096.46  1598.40    13.84     0.21    1.06   2.28  44.45
sda1              0.69    33.22 48.54 129.63   773.30  1328.84    11.80     1.39    7.82   2.28  40.57
sda2             27.16    30.32 13.23  3.28   323.13   269.56    35.90     0.55   32.96   3.44   5.68
sdb              39.15   215.16 202.20 169.04   945.80  1073.13     5.44     1.05    2.78   1.64  60.91
sdb1             39.15   215.16 202.20 169.04   945.77  1073.13     5.44     1.05    2.78   1.64  60.91
sdc               8.90     3.63 356.56 51.40   207.01   972.24     2.89     1.04    2.56   1.55  63.30
sdc1              8.90     3.63 356.55 51.40   206.99   972.24     2.89     1.04    2.56   1.55  63.30

要显示特定分区(例如 /dev/sda1)的扩展信息,请执行以下操作。

$ iostat -x sda1
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda1              0.69    33.21 48.54 129.62   773.23  1328.76    11.80     1.39    7.82   2.28  40.56

9. iostat – 每 x 秒执行一次(执行 y 次)

要每 2 秒执行一次 iostat(直到您按下 Ctl-C),请执行以下操作。

$ iostat 2
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.68    0.00    0.52    2.03    0.00   91.76

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             194.67      1096.39      1598.33 2719070584 3963891256
sda1            178.16       773.26      1328.79 1917688482 3295418672
sda2             16.51       323.11       269.54  801326878  668472584
sdb             371.22       945.74      1073.08 2345454041 2661251200
sdb1            371.22       945.72      1073.08 2345398577 2661251200
sdc             407.93       207.00       972.19  513366813 2411036564
sdc1            407.93       206.98       972.19  513311349 2411036564
..

要每 2 秒执行 3 次,请执行以下操作。

$ iostat 2 3

10. iostat - 显示 LVM 统计信息(和版本)

要显示 LVM 统计信息,请使用选项 -N,如下所示。

$ iostat -N

要显示 iostat 的版本,请使用 -V。这将真正显示 sysstat 的版本信息,因为 iostat 是 sysstat 包的一部分。

$ iostat -V
sysstat version 7.0.2
(C) Sebastien Godard

VMSTAT 示例

11. vmstat - 基本示例

vmstat 默认会显示内存使用情况(包括交换),如下所示。

$ vmstat 
procs ------------memory---------- ---swap-- -----io---- --system-- ---- -cpu------ 
 rb swpd free buff cache si so bi bo in cs us sy id wa st 
 0 0 305416 260688 29160 2356920 2 2 4 1 0 0 6 1 92 2 0

vmstat 输出包含以下字段:

  • procs - r:等待运行的进程总数
  • Procs - b:繁忙进程的总数
  • Memory  - swpd:使用的虚拟内存
  • Memory free:空闲虚拟内存
  • Memory  - buff:用作缓冲区的内存
  • Memory ——cache:用作缓存的内存。
  • Swap - si:从磁盘交换的内存(每秒)
  • Swap - so:内存交换到磁盘(每秒)
  • IO - bi:块输入。即从设备接收的块(每秒)
  • IO – bo:封锁。即发送到设备的块(每秒)
  • System – in:每秒中断数
  • System-cs:上下文切换
  • CPU – us, sy, id, wa, st:CPU用户时间、系统时间、空闲时间、等待时间

12. vmstat – 显示活动和非活动内存

默认情况下 vmstat 不显示此信息。使用选项 -a,显示活动和非活动内存信息,如下所示。

 
$ vmstat -a 
procs -----------memory--------- ---swap-- -----io---- --system-- -- ---cpu-------- 
 rb swpd free inact active si so bi bo in cs us sy id wa st 
 0 0 305416 253820 1052680 2688928 2 2 4 1 0 0 6 1 92 2 0

13. vmstat – 显示自上次启动以来的分叉数

这将显示自上次引导以来系统进行的所有 fork 系统调用。这将显示所有 fork、vfork 和 clone 系统调用计数。

$ vmstat -f
     81651975 forks

14. vmstat – 每 x 秒执行一次(执行 y 次)

要每 2 秒执行一次,请执行以下操作。您必须按 Ctrl-C 才能停止此操作。

$ vmstat 2 
procs -----------memory---------- ---swap-- -----io---- --system-- --- --cpu----- 
 rb swpd free buff cache si so bi bo in cs us sy id wa st 
 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0	 
 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0	 
..

要每 2 秒执行 10 次,请执行以下操作。在这种情况下,您不需要按 Ctrl-C。执行10次后自动停止。

$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 537144 182736 6789320    0    0     0     0    1    1  0  0 100  0  0	
 0  0      0 537004 182736 6789320    0    0     0     0   50   32  0  0 100  0  0	
..

15. vmstat – 显示时间戳

当您使用 vmstat 重复监控内存使用情况时,很高兴看到时间戳以及每个行项。使用选项 -t 显示时间戳,如下所示。

$ vmstat -t 1 100
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 3608728 148368 3898200    0    0     0     0    1    1  0  0 100  0  0     2011-07-09 21:16:28 PDT
 0  0      0 3608728 148368 3898200    0    0     0     0   60   15  0  0 100  0  0     2011-07-09 21:16:29 PDT
 0  0      0 3608712 148368 3898200    0    0     0     0   32   28  0  0 100  0  0     2011-07-09 21:16:30 PDT

对我来说,时间戳选项在以下版本中有效。

$ vmstat -V
procps version 3.2.8

注意:如果您使用旧版本的 vmstat,选项 -t 可能不可用。在这种情况下,使用我们之前建议的方法在 vmstat输出中显示时间戳。

16. vmstat - 显示平板信息

使用选项 -m,显示板信息,如下所示。

$ vmstat -m
Cache                       Num  Total   Size  Pages
fib6_nodes                    5    113     32    113
ip6_dst_cache                 4     15    256     15
ndisc_cache                   1     15    256     15
RAWv6                         7     10    768      5
UDPv6                         0      0    640      6
tw_sock_TCPv6                 0      0    128     30
...

17. vmstat – 以表格形式显示统计信息

您可以使用选项 -s 以表格格式显示 vmstat 的输出,而不是以记录格式显示值,如下所示。

$ vmstat -s
      4149928  total memory
      3864824  used memory
      2606664  active memory
      1098180  inactive memory
       285104  free memory
        19264  buffer memory
      2326692  swap cache
      4192956  total swap
       274872  used swap
      3918084  free swap
   1032454000 non-nice user cpu ticks
        14568 nice user cpu ticks
     89482270 system cpu ticks
  16674327143 idle cpu ticks
    368965706 IO-wait cpu ticks
      1180468 IRQ cpu ticks
..

18. vmstat – 显示磁盘统计信息

使用选项 -d 显示磁盘统计信息,如下所示。这将显示磁盘的读取、写入和 I/O 统计信息。

$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda   153189971 69093708 2719150864 737822879 329617713 157559204 3965687592 4068577985      0 1102243
sdb   501426305 97099356 2345472425 731613156 419220973 533565961 2661869460 1825174087      0 1510434
sdc   884213459 22078974 513390701 452540172 127474901 8993357 2411187300 2133226954      0 1569758

19. vmstat – 增加显示的宽度

不增加宽度的默认输出如下所示。

$ vmstat 1 3 
procs -----------memory---------- ---swap-- -----io---- --system-- -- ---cpu----- 
 rb swpd free buff cache si so bi bo in cs us sy id wa st 
 0 0 0 3608688 148368 3898204 0 0 0 0 1 1 0 0 100 0 0 
 0 0 0 3608804 148368 3898204 0 0 0 0 72 30 0 0 100 0 0 
 0 0 0 3608804 148368 3898204 0 0 0 0 60 27 0 0 100 0 0

使用选项 -w 增加输出列的宽度,如下所示。这提供了更好的可读性。

$ vmstat -w 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    3608712     148368    3898204    0    0     0     0    1    1   0  0 100  0  0
 0  0          0    3608712     148368    3898204    0    0     0     0   93   23   0  0 100  0  0
 0  0          0    3608696     148368    3898204    0    0     0     0   35   34   0  0 100  0  0

20. vmstat – 显示分区的统计信息

要显示特定磁盘分区的磁盘 I/O 统计信息,请使用选项 -p,如下所示。

$ vmstat -p sdb1
sdb1          reads   read sectors  writes    requested writes
           501423248 2345417917  419221612 2661885948

21. vmstat – 以 MB 为单位显示

默认情况下,vmstat 以 kb 为单位显示内存信息。要以 MB 显示,请使用选项“-S m”,如下所示。

$ vmstat -S m
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    281    288     19   2386    0    0     4     1    0    0  6  1 92  2  0

MPSTAT 示例

22. mpstat - 显示基本信息

默认情况下,mpstat 显示 CPU 统计信息,如下所示。

$ mpstat
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011

10:25:32 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
10:25:32 PM  all    5.68    0.00    0.49    2.03    0.01    0.02    0.00   91.77    146.55

23. mpstat – 显示所有信息

选项-A,显示mpstat命令可以显示的所有信息,如下图。这实际上等同于“mpstat -I ALL -u -P ALL”命令。

$ mpstat -A
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011      _x86_64_        (4 CPU)

10:26:34 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:26:34 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.99
10:26:34 PM    0    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00   99.98
10:26:34 PM    1    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00   99.98
10:26:34 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:26:34 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

10:26:34 PM  CPU    intr/s
10:26:34 PM  all     36.51
10:26:34 PM    0      0.00
10:26:34 PM    1      0.00
10:26:34 PM    2      0.04
10:26:34 PM    3      0.00

10:26:34 PM  CPU     0/s     1/s     8/s     9/s    12/s    14/s    15/s    16/s    19/s    20/s    21/s    33/s   NMI/s   LOC/s   SPU/s   PMI/s   PND/s   RES/s   CAL/s   TLB/s   TRM/s   THR/s   MCE/s   MCP/s   ERR/s   MIS/s
10:26:34 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    7.47    0.00    0.00    0.00    0.00    0.02    0.00    0.00    0.00    0.00    0.00    0.00    0.00
10:26:34 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    4.90    0.00    0.00    0.00    0.00    0.03    0.00    0.00    0.00    0.00    0.00    0.00    0.00
10:26:34 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.04    0.00    0.00    0.00    0.00    0.00    3.32    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
10:26:34 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    4.17    0.00    0.00    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00    0.00

24. mpstat – 显示单个 CPU(或)Core 的 CPU 统计信息

选项 -P ALL,显示所有单个 CPU(或核心)及其统计信息,如下所示。

$ mpstat -P ALL
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011      _x86_64_        (4 CPU)

10:28:04 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:28:04 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.99
10:28:04 PM    0    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00   99.98
10:28:04 PM    1    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00   99.98
10:28:04 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:28:04 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

要显示特定 CPU(或内核)的统计信息,请使用选项 -P,如下所示。

$ mpstat -P 0
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011      _x86_64_        (8 CPU)

10:28:53 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:28:53 PM    0    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00   99.98

$ mpstat -P 1
Linux 2.6.32-100.28.5.el6.x86_64 (dev-db)       07/09/2011      _x86_64_        (8 CPU)

10:28:55 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:28:55 PM    1    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00   99.98

最后,正如我们之前提到的,mpstat 是 sysstat 包的一部分。当你执行mpstat -V时,它会真正显示sysstat包的版本号,如下图所示。

$ mpstat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat  orange.fr)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。