iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,这些指标实际上来自 /proc/diskstats。

使用方式说明

[root@izwz98ahlvpkv3l7551ud2z ~]# iostat -help
用法:
	iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]

选项:
  [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
  [ -j { ID | LABEL | PATH | UUID | ... } ]
  [ [ -T ] -g <用户组名> ] [ -p [ <设备> [,...] | ALL ] ]
  [ <设备> [...] | ALL ]

选项参数说明:

  • -c: 仅显示CPU统计信息,与-d选项互斥
  • -d:仅显示磁盘统计信息,与-c选项互斥
  • -h:使用NFS(Network File System网络文件系统)的输出报告,更加友好可读。需要使用-n参数开启NFS。
  • -k:以 kb 为单位显示,默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -m:以 mb 为单位显示(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -N:显示磁盘阵列(LVM) 信息。
  • -V:显示版本信息
  • -x:显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -n:显示NFS(Network File System网络文件系统) 使用情况(该参数仅在linux内核版本2.6.17以后有效)
  • -t:输出报告时显示系统时间
  • -p:[ { device [,…] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
  • -y:跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来的累计的数据,这个参数非常重要,因为第一次数据不属于正常数据,所以如果做数据统计时,计入了统计,会影响最终数据结果
  • -z:只显示在采样周期内有活动的磁盘
  • -j:{ ID | LABEL | PATH | UUID | … } 磁盘列表的Device列要用什么维度来描述磁盘

指标含义说明

iostat 基本输出界面如下:

iostat中的dm iostat 详解_网络

指标说明:

  • avg-cpu(CPU性能指标):

性能指标

含义

%usr

CPU在用户模式下的时间百分比

%nice

CPU处在带NICE值的用户模式下的时间百分比

%system

CPU在系统模式下的时间百分比

%iowait

CPU等待输入输出完成时间的百分比

%steal

管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比

%idle

CPU空闲时间百分比

  • Device(设备性能指标):

性能指标

含义

tps

该设备每秒传输次数

kB_read/s

每秒从设备读取的数据量

kB_wrtn/s

每秒向设备写入的数据量

kB_read

读取的总数据量

kB_wrtn

写入的总数据量

iostat 详细输出界面如下:

iostat中的dm iostat 详解_网络_02


指标说明:

性能指标

含义

提示

Device

磁盘设备的名字

rrqm/s

每秒合并的读请求数

%rrqm表示合并读请求的百分比

wrqm/s

每秒合并的写请求数

%wrqm表示合并写请求的百分比

r/s

每秒发送给磁盘的读请求数

合并后的请求数,r/s+w/s就是磁盘IOPS

w/s

每次发送给磁盘的写请求数

合并后的请求数

rkB/s

每秒向磁盘读取的数据量

单位为kB,rkB/s+wkB/s就是磁盘吞吐量

wkB/s

每秒向磁盘写入的数据量

单位为kB

avgrq-sz

平均每次设备I/O操作的 (扇区)数据大小。

avgqu-sz

平均I/O队列长度,即IO等待个数。数值越低越好。

新版中为aqu-sz

await

每一个IO请求的处理的平均时间(单位ms)。

r_await

读请求处理完成等待时间

包括队列中的等待时间和设备实际处理的时间,单位为毫秒,r_await+w_await就是磁盘对请求响应时间

w_await

写请求处理完成等待时间

包括队列中的等待时间和设备实际处理的时间,单位为毫秒

rareq-sz

平均读请求大小

单位为kB

wareq-sz

平均写请求大小

单位为kB

svctm

处理I/O请求所需的平均时间(不包括等待时间)

单位为毫秒。注意这是推断的数据,并不保证完全准确

%util

磁盘处理I/O的时间百分比

即磁盘IO使用率,由于可能存在并行I/O,100%并不一定表明磁盘I/O饱和。