10个Linux iostat命令来报告CPU和I/O统计信息

时间:2020-03-05 15:28:33  来源:igfitidea点击:

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统计信息。

该命令显示任何设备映射器设备的注册设备映射器名称。