Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux iostat监控磁盘I/O性能和CPU使用

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

作者:学亮编程手记

iostat(Input/Output Statistics)是一个用于监控系统磁盘I/O(输入/输出)性能和CPU使用情况的强大工具,本文给大家介绍了Linux如何使用iostat命令监控系统磁盘I/O性能和CPU使用情况,需要的朋友可以参考下

好的,我们来详细介绍一下 Linux 系统中的 iostat 命令。

1. 什么是 iostat?

iostat(Input/Output Statistics)是一个用于监控系统磁盘I/O(输入/输出)性能和CPU使用情况的强大工具。它是 sysstat 软件包的一部分,在大多数 Linux 发行版中默认并不安装,但可以轻松通过包管理器获取。

它的主要作用是帮助系统管理员识别存储设备的性能瓶颈。

2. 主要功能

iostat 提供两大类信息:

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使用的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文