当前位置: 代码网 > 服务器>服务器>Linux > Linux使用iostat命令监控系统磁盘I/O性能和CPU使用情况

Linux使用iostat命令监控系统磁盘I/O性能和CPU使用情况

2025年10月24日 Linux 我要评论
好的,我们来详细介绍一下 linux 系统中的 iostat 命令。1. 什么是 iostat?iostat(input/output statistics)是一个用于监控系统磁盘i/o(输入/输出)

好的,我们来详细介绍一下 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/centos/fedora 上:

# rhel/centos (使用 yum 或 dnf)
sudo yum install sysstat
# 或者
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 时间百分比。
%idlecpu 空闲时间百分比。

5.2 设备 i/o 统计报告(基础)

使用 iostat -d 查看。

字段描述
device块设备(磁盘)的名称,如 sdasdb1
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. 性能分析思路

  1. 看整体负载:先看 %iowait 和 tps/r/s/w/s,了解系统 i/o 压力。
  2. 看设备饱和度:查看 %util。如果持续 100%,说明该设备是瓶颈。
  3. 看响应时间:查看 await。如果 await 很高,用户体验会变差(操作卡顿)。
  4. 看队列长度:查看 avgqu-sz。队列越长,说明设备处理不过来,请求在积压。
  5. 综合分析
    • 如果 %util 接近 100%,且 await 很高,avgqu-sz 也很大,基本可以断定该磁盘是性能瓶颈。
    • 如果 %util 不高,但 await 很高,可能是应用程序的 i/o 模式有问题(例如大量随机 i/o),或者磁盘本身(如 raid)的响应速度慢。

总结

iostat 是 linux 系统管理员和性能工程师工具箱中不可或缺的工具。通过理解其输出字段的含义,特别是扩展统计(-x)中的 %utilawaitavgqu-sz,你可以快速定位和诊断与磁盘 i/o 相关的性能问题。

以上就是linux使用iostat命令监控系统磁盘i/o性能和cpu使用情况的详细内容,更多关于linux iostat监控磁盘i/o性能和cpu使用的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com