性能优化工具-iostat

常用命令

  • -x 扩展信息

  • -m 使用MB单位

  • 命令后跟数字x y 每x秒刷新, 显示y次

    #每隔 2 秒显示一次详细的设备统计信息,共显示 5 次。

    iostat -x 2 5
  • -c 显示cpu相关的信息

  • -p 指定特定设备信息,比如-p sda只展示sda下的\

指标

基本指标

  • Device: 设备名称,例如 sda 表示第一个SCSI磁盘设备。

读取指标

  • r/s: 每秒读取请求数(读操作次数)。
  • rrqm/s: 每秒合并的读取请求数。操作系统会将多个相邻的读取请求合并为一个以提高效率。
  • %rrqm: 合并读取请求的百分比,计算公式

$$
%rrqm/s = (r/s + rrqm/s)
$$

  • rkB/s: 每秒读取的千字节数。
  • r_await: 平均每个读取请求的等待时间(以毫秒计),包括在队列中的时间和服务时间。
  • rareq-sz: 平均每个读取请求的大小(单位是扇区,即(512字节))。

写入指标

  • w/s: 每秒写入请求数(写操作次数)。
  • wrqm/s: 每秒合并的写入请求数。操作系统会将多个相邻的写入请求合并为一个以提高效率。
  • %wrqm: 合并写入请求的百分比,计算公式为 wrqm/s 除以 w/s

$$
%wrqm/s = (w/s + wrqm/s)
$$

  • wkB/s: 每秒写入的千字节数。
  • w_await: 平均每个写入请求的等待时间(以毫秒计),包括在队列中的时间和服务时间。
  • wareq-sz: 平均每个写入请求的大小(单位是扇区,即(512字节))。

删除指标(如果适用)

  • d/s: 每秒删除请求数(删除操作次数)。
  • drqm/s: 每秒合并的删除请求数。
  • %drqm: 合并删除请求的百分比

$$
%drqm/s = (w/s + drqm/s)
$$

  • dkB/s: 每秒删除的千字节数。
  • d_await: 平均每个删除请求的等待时间(以毫秒计),包括在队列中的时间和服务时间。
  • dareq-sz: 平均每个删除请求的大小(单位是扇区,即(512字节))。

文件系统指标

  • f/s: 每秒文件系统操作数。
  • f_await: 平均每个文件系统操作的等待时间(以毫秒计)。

其它指标

  • aqu-sz: 平均I/O队列长度,即平均有多少I/O请求在队列中等待处理。

  • %util: 设备利用率,表示设备忙碌的时间百分比。

    $$
    %util = (time device is busy / total time) * 100
    $$

    • 因为现在IO设备有并行处理的能力,因此util=100%也并不意味着IO设备是饱和的(因为100%只代表每次采样都有请求,不能代表这个时候不能接受更多请求了);举个简化的例子:某硬盘处理单个I/O需要0.1秒,有能力同时处理10个I/O请求,那么当10个I/O请求依次顺序提交的时候,需要1秒才能全部完成,在1秒的采样周期里%util达到100%;而如果10个I/O请求一次性提交的话,0.1秒就全部完成,在1秒的采样周期里%util只有10%。可见,即使%util高达100%,硬盘也仍然有可能还有余力处理更多的I/O请求,即没有达到饱和状态。

参考资料

深入理解iostat

作者

deepwzh

发布于

2024-10-12

更新于

2025-01-16

许可协议

评论