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         60
Linux 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    6423128
avg-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.24

4.只显示设备报告

可以通过选项仅显示设备利用率的状态-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          0


5. 仅显示设备的扩展 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          0


7.延迟显示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         24
avg-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         48


8.显示持久化设备名称统计

可以按设备名称打印报告。代替标准/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          0


10.显示lvm2统计信息

可以使用选项查看LVM统计信息-N。该命令显示任何设备映射器设备的已注册设备映射器名称。

$ iostat -N

iostat的安装 iostat -en_linux

结论

我们可以通过选项告诉 iostat 忽略在采样期间没有活动的任何设备的输出-z

此工具的优点之一是您可以在没有 root 权限的情况下运行它们。您可以通过在控制台中键入man iostat来浏览 iostat 手册页来更深入地挖掘它以带来 iostat 手册页。