Iostat 命令用于监控系统的输入/输出 (I/O) 设备负载,方法是观察设备相对于其平均传输速率的活动时间。iostat 创建可用于更改系统配置的报告,以更好地平衡物理磁盘之间的输入/输出。
Iostat 包含在sysstat包中。Iostat 默认安装在大多数 Linux 发行版中。
如果没有,则需要先安装。
在 RedHat / CentOS / Fedora 上
$ yum install sysstat在 Debian / Ubuntu / Linux Mint 上
$ apt-get install sysstat当该命令不带参数运行时,它会生成一份详细报告,其中包含自系统启动以来的信息。您可以提供两个可选参数来更改此设置:
iostat [选项] [间隔] [计数]- interval参数指定每个报告之间的持续时间(以秒为单位)
- Count参数允许您指定在 iostat 退出之前生成的报告数。
当使用这些参数首次运行命令时,第一个报告包含自系统启动以来的信息,而每个后续报告都涵盖自上次报告生成以来的时间段。
$ iostat 2 3
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.65 0.00 0.18 0.02 0.00 99.15
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.88 4.29 7.07 217829 358600
avg-cpu: %user %nice %system %iowait %steal %idle
1.01 0.00 0.50 0.00 0.00 98.49
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.50 0.00 2.01 0 4
avg-cpu: %user %nice %system %iowait %steal %idle
3.00 0.00 0.50 0.00 0.00 96.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 0.00 30.00 0 60Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)1.获取报告和统计
iostat 默认不带任何选项显示由CPU 和设备组成的统计报告。
$ iostat输出:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/22/2017 _x86_64 (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.69 0.00 0.19 0.02 0.04 99.08
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 3.40 14.08 1552428 6423128avg-cpu: %user %nice %system %iowait %steal %idle第一部分包含 CPU 报告
- %user :在用户(应用程序)级别执行时发生的CPU 利用率 百分比
- %nice : 在用户级别以 nice 优先级执行时发生的 CPU 利用率百分比
- %system : 在系统(内核)级别执行时发生的 CPU 利用率百分比
- %iowait : CPU 或 CPU 空闲的时间百分比,在此期间系统有未完成的磁盘 I/O 请求
- %steal : 当虚拟机管理程序为另一个虚拟处理器提供服务时,虚拟 CPU 或多个 CPU 非自愿等待所花费的时间百分比
- %idle : CPU 或 CPU 空闲且系统没有未完成的磁盘 I/O 请求的时间百分比
第二部分包含设备利用率报告
- device:/dev目录中列出的设备/分区名称
- tps : 每秒向设备发出的传输次数。更高的 tps 意味着处理器更忙
- blk_read/s :显示从设备读取的数据量,以每秒块数(千字节、兆字节)表示
- Blk_wrtn/s : 写入设备的数据量,以每秒块数(千字节、兆字节)表示
- blk_read :显示读取的块总数
- blk_wrtn :显示写入的总块数
iostat 使用以下文件创建报告:
/proc/stat包含系统统计信息。/proc/uptime包含系统正常运行时间。/proc/diskstats包含磁盘统计信息。/sys包含块设备的统计信息。/proc/self/mountstats包含网络文件系统的统计信息。/dev/disk包含永久设备名称。
2.显示更详细的统计信息
Iostat 命令提供 I/O 设备报告利用率。可以使用选项扩展深入诊断的统计结果-x。
$ iostat -x输出:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.69 0.00 0.19 0.02 0.04 99.06
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.01 1.10 0.16 0.84 3.37 14.04 34.88 0.00 2.35 1.41 2.53 - avg-cpu: 是cpu块信息
- devide: 是设备块信息。确保您使用的是好设备
- %util:存储设备有多少时间有未完成的工作(很忙)。
- svctm:指示您的 I/O 子系统在忙碌时响应请求的速度。实际上,加载系统越少,svctm 越高。
- await:指示请求通过的速度。这只是一个平均值。
- avgqu-sz:请求队列中有多少个请求。低 = 您的系统未加载,或者已序列化 I/O 并且无法正确利用底层存储。高 = 您的软件堆栈具有足够的可扩展性,可以正确加载底层 I/O。
- avgrq-sz:只是平均请求大小。可以指示发生了什么样的工作量。
- wsec/s & rsec/s:每秒读取和写入的扇区数。除以 2048,您将获得每秒兆字节数。
- r/s & w/s:每秒读取和写入请求。这些数字是 I/O 容量数据,当然,取决于 I/O 子系统的底层压力(队列大小!),它们可能会有所不同。
- rrqm/s & wrqm/s:块层合并了多少请求。
3. 只显示 cpu 统计信息
-c可以通过选项显示我们的 cpu 的统计信息和报告
$ iostat -c输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.93 0.08 2.40 3.35 0.00 81.244.只显示设备报告
可以通过选项仅显示设备利用率的状态-d。它将列出每个连接设备的信息。
$ iostat -d输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 17.73 510.80 632.10 5127420 6345037
mmcblk0 0.03 0.63 0.00 6282 05. 仅显示设备的扩展 I/O 统计信息
我们可以在一侧显示扩展统计信息,从另一侧我们可以显示扩展统计信息。这意味着我们只能显示带有选项的设备的扩展统计信息-xd。
$ iostat -xd输出:
$ iostat -xd
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.48 25.33 8.43 7.81 417.06 540.42 117.88 1.18 72.83 35.98 112.62 6.18 10.03
mmcblk0 0.30 0.00 0.02 0.00 0.49 0.00 49.47 0.00 3.73 3.73 6.以千字节或兆字节捕获统计信息
默认情况下,iostat 以字节为单位测量 I/O 系统。为了更容易阅读,我们可以将 iostat 转换为以千字节或兆字节为单位显示报告。
只需添加选项-k以创建以千字节为单位的报告。
$ iostat -k输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.54 0.08 2.37 3.41 0.00 81.61
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 16.18 345.76 504.55 5622164 8204113
mmcblk0 0.02 0.39 0.00 6282 0-m创建以兆字节为单位的报告的选项。
$ iostat -m
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.54 0.08 2.37 3.41 0.00 81.61
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 16.18 0.34 0.49 5490 8012
mmcblk0 0.02 0.00 0.00 6 07.延迟显示cpu和设备统计信息
与vmstat相同,作为统计工具,使用它的最佳方法是使用延迟参数。通过延迟,我们可以看到趋势是什么。以下是一些延迟运行 iostat 的示例。
以千字节为单位运行 iostat,间隔 2 秒,报告 3 次。
$ iostat -k 2 3输出:
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.70 0.00 0.19 0.02 0.03 99.05
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 3.33 14.03 1561788 6572152
avg-cpu: %user %nice %system %iowait %steal %idle
0.50 0.00 0.00 0.00 0.00 99.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3.52 0.00 0.50 0.00 0.00 95.98
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.51 0.00 12.06 0 24avg-cpu: %user %nice %system %iowait %steal %idle要显示间隔为 2 秒和 2 次报告的仅 CPU 报告,请键入:
$ iostat -c 2 2
Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.71 0.00 0.19 0.02 0.03 99.05
avg-cpu: %user %nice %system %iowait %steal %idle
1.50 0.00 0.00 0.00 0.00 98.50要显示 sda6 和 sda7 设备仅报告 2 秒间隔和 2 次报告,请运行:
$ iostat -d sda7 sda6 2 2输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda6 3.40 108.29 130.75 1928577 2328496
sda7 12.19 211.96 305.79 3774804 5445696
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda6 0.00 0.00 0.00 0 0
sda7 1.00 0.00 24.00 0 488.显示持久化设备名称统计
可以按设备名称打印报告。代替标准/dev/sda名称,它将使用选项-j和添加ID关键字(指定持久名称的类型)打印持久设备名称。
$ iostat -j ID mmcbkl0 sda6 -x -m 2 2输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14.33 0.10 2.48 3.26 0.00 79.83
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
ata-ST500LT012-1DG142_S3P4312X-part6
0.19 0.88 2.51 0.82 0.10 0.12 138.36 0.21 61.81 57.12 76.12 10.81 3.60
avg-cpu: %user %nice %system %iowait %steal %idle
19.40 0.00 1.25 0.63 0.00 78.72
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
ata-ST500LT012-1DG142_S3P4312X-part6
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 9.显示块设备的统计信息
可以直接自动显示每个块设备的信息。无需指明每个设备名称。它将显示系统使用的块设备及其所有分区的统计信息。如果在命令行中输入了设备名称,则会显示该设备及其所有分区的统计信息。只需使用-p选项
$ iostat -p输出:
Linux 4.4.0-78-generic (shinigami) 05/23/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14.93 0.10 2.51 3.19 0.00 79.28
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 15.82 297.18 474.87 5928512 9473117
sda1 0.00 0.11 0.00 2108 0
sda2 0.01 0.28 0.00 5679 1
sda3 0.00 0.10 0.00 2084 0
sda4 0.00 0.10 0.00 2092 0
sda5 0.09 0.77 45.62 15428 910068
sda6 3.26 102.76 117.09 2049957 2335908
sda7 12.09 192.75 306.99 3845120 6124136
sda8 0.12 0.20 5.16 3896 103004
mmcblk0 0.01 0.31 0.00 6282 0
mmcblk0p1 0.01 0.26 0.00 5242 0
$ iostat -p sdf 1 2
Linux 3.10.0-514.16.1.el7.x86_64 (centos7-srv) 05/23/2017 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
7.18 0.41 3.94 4.10 0.00 84.37
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdf 0.47 3.54 0.00 4656 0
sdf1 0.09 0.70 0.00 920 0
sdf2 0.09 0.69 0.00 904 0
sdf3 0.09 0.69 0.00 904 0
sdf4 0.09 0.69 0.00 904 0
avg-cpu: %user %nice %system %iowait %steal %idle
6.00 1.00 2.00 0.00 0.00 91.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdf 0.00 0.00 0.00 0 0
sdf1 0.00 0.00 0.00 0 0
sdf2 0.00 0.00 0.00 0 0
sdf3 0.00 0.00 0.00 0 0
sdf4 0.00 0.00 0.00 0 010.显示lvm2统计信息
可以使用选项查看LVM统计信息-N。该命令显示任何设备映射器设备的已注册设备映射器名称。
$ iostat -N
结论
我们可以通过选项告诉 iostat 忽略在采样期间没有活动的任何设备的输出-z。
此工具的优点之一是您可以在没有 root 权限的情况下运行它们。您可以通过在控制台中键入man iostat来浏览 iostat 手册页来更深入地挖掘它以带来 iostat 手册页。
















