有效的I/O 监控对于维护一个健康且响应迅速的 Linux 系统至关重要。一个强大的命令行工具是 iostat,它提供有关 CPU 和磁盘活动的详细报告。
运行 iostat 命令会生成系统性能指标的快照。
pete@icebox:~$ iostat
Linux 3.13.0-39-lowlatency (icebox) 01/28/2016 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.13 0.03 0.50 0.01 0.00 99.33
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.17 3.49 1.92 385106 212417
输出分为两个主要部分。我们来分解一下。
理解 CPU 指标
第一个报告详细说明了 CPU 利用率,提供了有关处理器如何分配时间的见解。
- %user: 用于执行用户级(应用程序)进程的 CPU 时间百分比。
- %nice: 用于执行具有修改(nice)优先级的用户级进程的 CPU 时间百分比。
- %system: 用于执行系统级(内核)进程的 CPU 时间百分比。
- %iowait: CPU 在等待待处理的磁盘 I/O 请求完成而处于空闲状态的时间百分比。这里的高值可能表明存储瓶颈。
- %steal: 在虚拟化环境中,这是虚拟 CPU 在等待真实 CPU 期间,而管理程序正在为另一个虚拟处理器提供服务的时间百分比。
- %idle: CPU 处于空闲状态且未等待任何磁盘 I/O 请求的时间百分比。
分析磁盘利用率
第二个报告侧重于设备级别的I/O 监控,显示数据是如何在存储设备之间传输的。
- tps: 发送到设备的每秒传输次数。一次传输是一个 I/O 请求,多个逻辑请求可以合并为一个请求。
- kB_read/s: 从设备读取的数据量,以每千字节/秒为单位。
- kB_wrtn/s: 写入到设备的字节量,以每千字节/秒为单位。
- kB_read: 自上次重新启动以来从设备读取的总千字节数。
- kB_wrtn: 自上次重新启动以来写入到设备的字节总数。