目录
- 1. 什么是 IOStat?
- 2. 主要功能
- 3. 安装 iostat
- 4. 基本语法和常用选项
- 5. 输出字段详解(重点)
- 5.1 CPU 使用率报告
- 5.2 设备 I/O 统计报告(基础)
- 5.3 扩展 I/O 统计报告(关键!)
- 6. 实用示例
- 7. 性能分析思路
- 总结
好的,我们来详细介绍一下 linux 系统中的 iostat 命令。
1. 什么是 iostat?
iostat(Input/Output Statistics)是一个用于监控系统磁盘I/O(输入/输出)性能和CPU使用情况的强大工具。它是 sysstat 软件包的一部分,在大多数 Linux 发行版中默认并不安装,但可以轻松通过包管理器获取。
它的主要作用是帮助系统管理员识别存储设备的性能瓶颈。
2. 主要功能
iostat 提供两大类信息:
- CPU 使用率报告
- 设备/分区 I/O 统计报告
3. 安装 iostat
由于 iostat 属于 sysstat 包,你需要先安装它。
在 Debian/Ubuntu 上:
sudo apt-get update sudo apt-get install sysstat
在 RHEL/CenpythontOS/Fedora 上:
# RHEL/Centos (使用 yum 或 dnf) sudo yum install syswww.devze.comstat # 或者 sudo dnf install sysstat # Fedora sudo dnf install sysstat
安装后,sysstat 服务通常会启动并开始收集系统活动数据。
4. 基本语法和常用选项
基本语法:
iostat [选项] [时间间隔] [次数]
常用选项:
| 选项 | 描述 |
|---|---|
-c | 仅显示 CPU 使用率报告。 |
-d | 仅显示设备/分区 I/O 统计报告。 |
-x | 显示扩展的 I/O 统计信息,这是进行深入性能分析的关键。 |
-m | 以 MB/s 为单位显示统计信息,而不是默认的 KB/s。更易读。 |
-p | 显示所有块设备及其分区的统计信息。 |
-t | 在输出中打印时间戳。 |
-h | 以人类可读的格式输出(例如,与 -m 类似,但更友好)。 |
5. 输出字段详解(重点)
5.1 CPU 使用率报告
当你直接运行 iostat 时,首先看到的是 CPU 报告。
| 字段 | 描述 |
|---|---|
%user | 在用户级别(应用程序)运行时占用的 CPU 百分比。 |
%nice | 在用户级别,使用 nice 优先级运行的进程占用的 CPU 百分比。 |
%system | 在内核级别(系统调用)运行时占用的 CPU 百分比。 |
%iowait | 重要指标:CPU 空闲并且系统有未完成的磁盘 I/O 请求的时间百分比。如果这个值持续很高(例如 >20%),通常表示磁盘是系统瓶颈。 |
%steal | 在虚拟化环境中,被宿主机(Hypervisor)“偷走”的 CPU 时间百分比。 |
%idle | CPU 空闲时间百分比。 |
5.2 设备 I/O 统计报告(基础)
使用 iostat -d 查看。
| 字段 | 描述 |
|---|---|
Device | 块设备(磁盘)的名称,如 sda, sdb1。 |
tps | 每秒发送到设备的 I/O 请求数量(Transactions Per Second)。 |
kB_read/s | 从设备读取数据的速度(KB/s)。 |
kB_wrtn/s | 向设备写入数据的速度(KB/s)。 |
kB_read | 自启动以来从设备读取的总数据量(KB)。 |
kB_wrtn | 自启动以来向设备写入的总数据量(KB)。 |
5.3 扩展 I/O 统计报告(关键!)
使用 iostat -x 查看,这是进行性能诊断的核心。
| 字段 | 描述 |
|---|---|
rrqm/s | 每秒合并的读请求数(合并是为了提高效率)。 |
wrqm/s | 每秒合并的写请求数。 |
r/s | 每秒发给设备的读请求数。 |
w/s | 每秒发给设备的写请求数。 |
rkB/s | 每秒从设备读取的数据量(KB/s)。 |
wkB/s | 每秒向设备写入的数据量(KB/s)。 |
avgrq-sz | 发给设备的请求的平均大小(以扇区为单位)。 |
avgqu-sz | 重要指标:发给设备的请求的平均队列长度。如果持续大于1,可能表示设备已饱和。 |
await | 重要指标:I/O 请求处理的平均时间(毫秒),包括排队时间和服务时间。对应用户感受,值越小越好。如果 await 远大于 svctm,说明请求在队列中等待时间很长,磁盘可能过载。 |
r_await | 读请求的平均处理时间(毫秒)。 |
w_await | 写请求的平均处理时间(毫秒)。 |
svctm | 已弃用:设备处理 I/O 请求的平均服务时间(毫秒)。在现代系统中,这个值可能不准确,建议关注 await。 |
%util | 最重要指标:设备带宽的使用率百分比。表示设备在给定时间段内有多忙。如果持续接近 100%,说明设备 I/O 已饱和,成为系统瓶颈。 |
6. 实用示例
基本使用,每2秒刷新一次
iostat
仅显示磁盘统计,每1秒刷新一次,共刷新5次
iostat -d 1 5
显示扩展统计信息,以 MB/s 为单位
iostat -x -m 1
查看特定磁盘(如 sda)的详细统计
iostat -x -m sda 1
查看所有设备和分区的统计
iostat -x -m -p ALL 1
7. 性能分析思路
- 看整体负载:先看
%iowait和tps/r/s/w/s,了解系统 I/O 压力。 - 看设备饱和度:查看
%util。如果持续 100%,说明该设备是瓶颈。 - 看响应时间:查看
await。如果await很高,用户体验会变差(操作卡顿)。 - 看队列长度:查看
avgqu-sz。队列越长,说明设备处理不过来,请求在积压。 - 综合分析:
- 如果
%util接近 100%,且await很高,avgqu-sz也很大javascript,基本可以断定该磁盘是性能瓶颈。 - 如果
%util不高,但await很高,可能是应用程序的 I/O 模式有问题(例如大量随机 I/O),或者磁盘本身(如 RAID)的响应速度慢。
- 如果
总结
iostat 是 Linux 系统管理员和性能工程师工具箱中不可或缺的工具。通过理解其输出字段的含义,特别是扩展统计(-x)中的 %util、awaithttp://www.devze.com 和 编程客栈avgqu-sz,你可以快速定位和诊断与磁盘 I/O 相关的性能问题。
以上就是Linux使用iostat命令监控系统磁盘I/O性能和CPU使用情况的详细内容,更多关于Linux iostat监控磁盘I/O性能和CPU使用的资料请关注编程客栈(www.devze.com)其它相关文章!
加载中,请稍侯......
精彩评论