10个Linux iostat命令来报告CPU和I/O统计信息
Iostat命令是用于通过观察设备的活动时间(相对于其平均传输速率)来监视系统的输入/输出(I/O)设备负载的命令。
iostat创建报告,可用于更改系统配置,以更好地平衡物理磁盘之间的输入/输出。
iostat包含在sysstat软件包中。
如果没有它,则需要先安装。
在RedHat/CentOS/Fedora上
# yum install sysstat
在Debian/Ubuntu/Linux Mint上
# apt-get install sysstat
在不带参数的情况下运行该命令时,它将生成详细的报告,其中包含自引导系统以来的信息。
我们可以提供两个可选参数来更改此设置:
# iostat [option] [interval] [count]
- interval参数指定每个报告之间的持续时间(以秒为单位)
- Count参数使我们可以指定在iostat退出之前生成的报告数。
当使用这些参数首次运行命令时,第一个报告包含自系统启动以来的信息,而每个后续报告都覆盖自生成上一个报告以来的时间段。
# iostat 2 3 Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2016 _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 60
1)获取报告和统计数据
要运行它,只需在控制台中使用命令。
这是一个示例。
# iostat Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/22/2016 _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 6423128
第一部分包含CPU报告
- %user:在用户(应用程序)级别执行时发生的CPU利用率百分比
- %nice:在具有优先级的用户级别执行时发生的CPU利用率百分比
- %system:在系统(内核)级别执行时发生的CPU利用率百分比
- %iowait:系统有未完成的磁盘I/O请求时,一个或者多个CPU空闲的时间百分比
- %steal:虚拟机管理程序为另一个虚拟处理器提供服务时,一个或者多个虚拟CPU在非自愿等待中花费的时间百分比
- %idle:一个或者多个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/2016 _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 0.40 0.04
- 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/2016 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 12.93 0.08 2.40 3.35 0.00 81.24
4)仅显示设备报告
只能通过“ -d”选项显示设备利用率的状态。
它将列出每个已连接设备的信息
$iostat -d Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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 0
5)仅显示设备的扩展I/O统计信息
我们可以在一侧显示扩展的统计信息,而在另一侧可以显示扩展的统计信息。
这意味着我们只能为带有“ -xd”选项的设备显示扩展统计信息,如下所示
$iostat -xd Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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 4.00 2.99 0.01
6)捕获以千字节或者兆字节为单位的统计信息
缺省情况下,iostat以字节为单位测量I/O系统。
为了便于阅读,我们可以将iostat转换为以千字节或者兆字节为单位显示报告。
只需添加“ -k”参数即可创建以千字节为单位的报告
$iostat -k Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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/2016 _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 0
7)延迟显示cpu和设备统计信息
与vmstat相同,作为统计工具,使用它的最佳方法是使用delay参数。
随着时间的推移,我们可以看到趋势。
以下是一些延迟运行iostat的示例。
以千字节为单位运行iostat,间隔2秒,运行3次报告
# iostat -k 2 3 Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2016 _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 24
仅显示CPU报告,间隔为2秒,报告为2次
# iostat -c 2 2 Linux 3.10.0-514.16.1.el7.x86_64 (centos-01) 05/23/2016 _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
仅以2秒间隔和2次报告显示sda6和sda7设备报告
$iostat -d sda7 sda6 2 2 Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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 48
8)显示持久性设备名称统计
可以按设备名称打印报告。
代替标准的'/dev/sda'名称,它将使用'-j'参数并添加'ID'关键字(指定永久名称的类型)来打印永久设备名称。
$iostat -j ID mmcbkl0 sda6 -x -m 2 2 Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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 0.00 0.00
9)显示块设备的统计信息
可以自动直接直接显示每个块设备的信息。
无需指出每个设备名称。
它将显示系统使用的块设备及其所有分区的统计信息。
如果在命令行上输入了设备名称,那么将显示该设备及其所有分区的统计信息。
只需使用-p选项
$iostat -p Linux 4.4.0-78-generic (shinigami) 05/23/2016 _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/2016 _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 0
10)显示lvm2的统计信息
可以使用“ -N”选项查看LVM统计信息。
该命令显示任何设备映射器设备的注册设备映射器名称。