开发者

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

开发者 https://www.devze.com 2025-10-24 10:17 出处:网络 作者: 学亮编程手记
目录1. 什么是 IOStat?2. 主要功能3. 安装 iostat4. 基本语法和常用选项5. 输出字段详解(重点)5.1 CPU 使用率报告5.2 设备 I/O 统计报告(基础)5.3 扩展 I/O 统计报告(关键!)6. 实用示例7. 性能分析思路总结好
目录
  • 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 时间百分比。
        %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 也很大javascript,基本可以断定该磁盘是性能瓶颈。
          • 如果 %util 不高,但 await 很高,可能是应用程序的 I/O 模式有问题(例如大量随机 I/O),或者磁盘本身(如 RAID)的响应速度慢。

        总结

        iostat 是 Linux 系统管理员和性能工程师工具箱中不可或缺的工具。通过理解其输出字段的含义,特别是扩展统计(-x)中的 %utilawaithttp://www.devze.com编程客栈avgqu-sz,你可以快速定位和诊断与磁盘 I/O 相关的性能问题。

        以上就是Linux使用iostat命令监控系统磁盘I/O性能和CPU使用情况的详细内容,更多关于Linux iostat监控磁盘I/O性能和CPU使用的资料请关注编程客栈(www.devze.com)其它相关文章!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号