用于 Linux 性能监控的iostat、mpstat 和 vmstat示例
本文共提供了 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)
- 点赞
- 收藏
- 关注作者
评论(0)