在 Linux 中使用 iostat 监控系统性能

iostat 命令用于通过观察物理磁盘与其平均传输速率相关的活动时间来监视系统输入/输出设备负载。
此信息可用于更改系统配置以更好地平衡物理磁盘和适配器之间的输入/输出负载。

以下是不带任何参数运行 iostat 命令时的示例输出。

# iostat
Linux 3.10.0-514.2.2.el7.x86_64 (onitroad)     11/07/2017      _x86_64_        (128 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.36    0.00    1.07    0.24    0.00   98.32
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              17.26         8.80       242.60    3795176  104664988
sdb               0.52         5.66        36.17    2440242   15603348
sdc               0.02         0.34         0.00     147313          0
sdd               0.01         0.09         0.00      39527          0
sde               0.01         0.10         0.00      41189          0
sdf               0.01         0.09         0.00      39025          0
.....

第一行显示 Linux 内核版本、主机名、当前日期、体系结构和系统上的 CPU 数量。

iostat 实用程序报告包含以下部分:

  • CPU 利用率
  • 设备利用率

CPU 使用率报告

接下来的两行显示 CPU 统计信息。
对于多处理器系统,CPU 值是所有处理器的全局平均值。
列定义如下:

说明
%user在用户级别执行应用程序时使用的 CPU 百分比
%nice在具有良好优先级的用户级别执行时使用的 CPU 百分比
%system在系统(内核)级别执行时使用的 CPU 百分比
%iowait当系统有未完成的磁盘 I/O 请求时 CPU 空闲的时间百分比
%steal当管理程序为另一个虚拟处理器提供服务时,一个或者多个虚拟 CPU 用于非自愿等待的时间百分比
%idleCPU(或者 CPU)空闲且系统没有未完成的磁盘 I/O 请求的时间百分比
欢迎来到之路教程(on itroad-com)

设备利用率报告

示例中的其余行显示基于每个物理设备或者每个分区的统计信息。
我们可以包含块设备和分区作为 iostat 命令的参数。
如果不包含任何参数,报告将显示内核具有统计信息的所有设备。
列定义如下:

说明
Device/dev 目录中列出的设备或者分区名称
tps每秒向设备发出的传输(I/O 请求)数
kB_read/s从设备读取的数据量,以每秒千字节数表示。
kB_wrtn/s写入设备的数据量,以每秒千字节数表示
kB_read读取的千字节总数
kB_wrtn写入的千字节总数

通过为 iostat 命令提供不同的选项,可以包含更详细的统计信息。
列出了一些命令行选项:

说明
-c显示 CPU 利用率报告。
-d显示设备利用率报告。
-m以每秒兆字节为单位显示统计信息。
-x显示扩展统计信息。

通过使用 interval 和 count 参数,可以在不同的时间间隔运行多个报告。
以下示例以 2 秒的间隔显示所有设备的 6 个报告:

# iostat -d 2 6

iostat 命令示例

示例 1 - iostat 命令

要查看 CPU 和输入/输出设备利用率的统计信息,请使用以下命令:

# iostat 
Linux 3.10.0-693.21.1.el7.x86_64 (jamiericho1.mylabserver.com) 	03/16/2018 	_x86_64_	(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.90    0.00    2.60    1.76    2.87   86.87
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda             68.90       947.14      1117.86     340222     401546
xvdf              2.76        55.51         0.00      19940          0

iostat 的第一个输出是自系统启动以来的信息总和。
我们没有指定 iostat 命令运行的任何时间间隔,因此默认情况下它会显示系统启动以来的摘要信息。

示例 2 - 带有间隔的 iostat

为了能够查看统计信息中的趋势或者以固定间隔连续显示统计信息,请使用提供间隔的 iostat 命令。
例如,要每 5 秒报告一次统计信息:

# iostat 5

我们还可以通过提供多个间隔来限制要生成的统计信息的次数。
例如,要以 5 秒的间隔运行 iostat 命令,并且仅以 3 个间隔运行:

# iostat 5 3

示例 3 - 仅显示 CPU 统计信息

要仅显示系统的 CPU 统计信息,请使用带有 iostat 的“-c”选项。

# iostat -c
Linux 3.10.0-693.21.1.el7.x86_64 (jamiericho1.mylabserver.com) 	03/16/2018 	_x86_64_	(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.64    0.00    1.20    0.78    1.34   94.03

示例 4 - 显示磁盘统计信息

另一个与 iostat 一起使用的有用选项是“-d”,它只显示系统的磁盘统计信息。

# iostat -d
Linux 3.10.0-693.21.1.el7.x86_64 (jamiericho1.mylabserver.com) 	03/16/2018 	_x86_64_	(1 CPU)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda             28.82       389.03       465.87     340222     407421
xvdf              1.14        22.80         0.00      19940          0

示例 5 - 显示扩展统计信息

要使用 iostat 显示扩展统计信息,请使用“-x”选项。
例如,

# iostat -x
Linux 3.10.0-693.21.1.el7.x86_64 (jamiericho1.mylabserver.com) 	03/16/2018 	_x86_64_	(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.52    0.00    0.71    0.45    0.83   96.50
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              0.03     1.57   11.38    6.75   242.60   288.58    58.59     0.17    9.13    0.91   23.00   0.42   0.76
xvdf              0.00     0.00    0.70    0.00    14.10     0.00    40.16     0.00    2.84    2.84    0.00   2.15   0.15

示例 6 - 组合各种选项

我们始终可以组合上述示例中的多个选项。
使用此功能,我们可以以 2 秒为间隔显示 3 个间隔的扩展磁盘利用率报告,如下例所示。

# iostat -xdt 2 3
Linux 3.10.0-693.21.1.el7.x86_64 (jamiericho1.mylabserver.com) 	03/16/2018 	_x86_64_	(1 CPU)
03/16/2018 04:57:55 AM
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              0.03     1.45   10.47    6.23   223.11   265.50    58.53     0.15    9.12    0.91   22.93   0.42   0.70
xvdf              0.00     0.00    0.65    0.00    12.96     0.00    40.16     0.00    2.84    2.84    0.00   2.15   0.14
03/16/2018 04:57:57 AM
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              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
xvdf              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
03/16/2018 04:57:59 AM
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              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
xvdf              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

其中:
-t 显示时间间隔的时间戳

日期:2020-09-17 00:14:27 来源:oir作者:oir