I/O 监控
100%

进程利用率 · 第 5 课

I/O 监控

学习如何使用 iostat 样本调查 CPU 和块设备活动。

iostat 通常由 sysstat 软件包提供,用于报告 CPU 和块设备活动。应结合重复采样和应用延迟进行分析:吞吐量或利用率本身并不能证明存储正在造成用户可见的问题。

收集有效样本

可以每秒收集一次扩展设备统计信息:

$ iostat -xz 1

在常见实现中,第一份报告包含系统启动以来的平均值,后续报告则覆盖各自的采样间隔。-x 选项增加扩展字段,-z 则隐藏无活动设备。应等待多个间隔,以捕获正常和异常时段。

第一份 iostat 报告通常表示什么?

阅读 CPU 字段

CPU 部分通常包括用户时间(%user)、系统时间(%system)、空闲时间(%idle)、I/O 等待时间(%iowait)和虚拟机窃取时间(%steal)。I/O 等待是系统存在尚未完成的 I/O 请求时 CPU 的空闲时间,并不是磁盘繁忙程度的百分比。

%iowait 描述什么?

阅读设备字段

字段名称会随 sysstat 版本而变化,但常用概念包括:

  • 每秒读写操作数或数据量表示工作负载速率。
  • await 表示平均请求延迟,其中包括排队时间和服务时间。
  • 平均队列大小字段表示正在等待或处理的请求。
  • %util 表示设备存在 I/O 活动的时间占总时间的百分比。

对于简单的串行设备,较高的 %util 可能表示已经饱和;但对于并行存储、阵列或虚拟设备,它不能直接换算为性能容量。应把延迟与设备设计、工作负载模式和服务目标进行比较。

哪个字段与平均 I/O 请求延迟最直接相关?

关联分析证据

下结论前,应先把设备名称对应到挂载点和底层设备:

$ lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
$ findmnt

然后将 iostat 的各个间隔与应用响应时间、数据库或文件系统指标以及进程级 I/O 相互关联。设备映射器、RAID、容器和网络后端存储都可能增加额外层次,需要使用各自对应的工具检查。

看到设备的 %util 较高后,应该怎么做?

课程已完成

你已完成 I/O 监控

现在,你可以把 iostat 用作 I/O 调查中的证据。

  • 收集多个扩展统计采样间隔。

  • 区分 CPU 的 I/O 等待时间与设备繁忙时间。

  • 综合解读延迟、排队、吞吐量和利用率。

  • 将设备映射到工作负载,并验证对应用的影响。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 进程利用率