iostat 命令介绍

news/2025/3/21 23:46:43/文章来源:https://www.cnblogs.com/MuXinu/p/18783517

Linux iostat 命令详解:CPU 和磁盘 I/O 监控

在 Linux 服务器上,性能优化和故障排查是日常运维的重要任务,而 iostat 命令是分析 CPU 负载磁盘 I/O 的利器。

本文将深入解析 iostat 的使用方法,并通过 实例解析 CPU 和磁盘 I/O 指标,帮助大家掌握其应用场景。


1. 什么是 iostat

iostat(I/O Statistics)用于 监控 CPU 使用率磁盘 I/O 性能,帮助判断:

  • CPU 是否因 I/O 过载
  • 磁盘是否存在瓶颈
  • 系统整体负载情况

iostat 主要包含两部分:

  1. CPU 负载信息(用户态、系统态、I/O 等待等)
  2. 磁盘 I/O 负载信息(吞吐量、TPS、读写速率等)

2. iostat 命令安装

如果系统没有安装 iostat,可以通过 sysstat 软件包进行安装:

# CentOS / RHEL
yum install -y sysstat# Ubuntu / Debian
apt install -y sysstat

3. iostat 命令基本使用

(1) 查看 CPU 和磁盘 I/O 负载

iostat

示例输出:

Linux 2.6.32-696.10.1.el6.x86_64 (devhost32)    03/20/2025      _x86_64_        (32 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.15    0.00    0.06    0.04    0.00   99.76Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.97         0.53        76.33    8195476 1180424664
sdb               1.56         0.98        45.19   15172746  698917744

📌 分析:

  • CPU 部分:
    • %iowait = 0.04% → 说明磁盘 I/O 没有严重影响 CPU 性能。
    • %idle = 99.76% → CPU 资源充足,负载较低。
  • 磁盘部分:
    • sdaBlk_wrtn/s = 76.33磁盘写入压力较大,但 TPS(2.97)不高。

4. 详细参数解析

(1) CPU 负载指标

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
指标 说明
%user 用户态 CPU 使用率(应用程序占用)
%nice 低优先级任务 CPU 使用率(nice 调度的进程)
%system 内核态 CPU 使用率(驱动程序、系统调用等)
%iowait CPU 等待磁盘 I/O 的时间,高于 10% 可能存在 I/O 瓶颈
%steal 被虚拟机管理程序(hypervisor)抢占的 CPU 时间,用于虚拟化环境
%idle CPU 空闲率,越高代表负载越低

(2) 磁盘 I/O 指标

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
指标 说明
Device 设备名称(如 sdasdbdm-* 等)
tps 每秒 I/O 传输数(事务数),代表磁盘 IOPS
Blk_read/s 每秒读取的块数(默认 512B/块)
Blk_wrtn/s 每秒写入的块数
Blk_read 读取的总块数
Blk_wrtn 写入的总块数

📌 重点关注 tpsiowait

  • tps 高,但 iowait → 说明磁盘可以承受压力,I/O 性能正常。
  • tps 低,但 iowait → 可能是磁盘 I/O 瓶颈,建议优化存储。

5. iostat 高级用法

(1) 每秒更新一次,连续监控

iostat 1

📌 适用于实时监控系统 I/O 变化趋势。

(2) 只显示磁盘 I/O 统计

iostat -d 2

📌 每 2 秒刷新一次,仅显示磁盘 I/O 信息

(3) 显示扩展 I/O 信息

iostat -x 1

📌 包含 util 指标,显示磁盘利用率

Device:         rrqm/s   wrqm/s     r/s     w/s   svctm   %util
sda               0.00    45.33   10.21   78.14    1.32   85.23
指标 说明
rrqm/s 每秒合并的读请求数
wrqm/s 每秒合并的写请求数
r/s 每秒读取次数
w/s 每秒写入次数
svctm 平均 I/O 响应时间(毫秒)
%util 磁盘忙碌率(接近 100% 表示磁盘瓶颈)

📌 如何判断磁盘瓶颈?

  1. %util > 80%:磁盘负载过高。
  2. svctm 过大(> 10ms):I/O 响应变慢,可能是磁盘性能问题。

6. 典型故障分析

(1) iowait 过高(磁盘瓶颈)

%user  %system  %iowait  %idle1.5     1.2      40.3    57.0

📌 解决方案

  • 确认磁盘负载:iostat -x 1
  • 查看 I/O 进程:iotop
  • 增加 SSD、优化磁盘 RAID 或 I/O 调度策略

(2) %steal 过高(虚拟化瓶颈)

%user  %system  %steal  %idle5.0     3.2     45.7   46.1

📌 解决方案

  • %steal 过高 → 说明 CPU 资源被虚拟化管理器抢占,需要增加物理 CPU 资源。

7. 总结

关注点 现象 可能问题
%iowait 过高 >10% 磁盘 I/O 瓶颈
%util 过高 >80% 磁盘压力大
%steal 过高 >20% 虚拟机资源不足

iostat分析 CPU 与磁盘 I/O 瓶颈的利器,可以与 iotopvmstat 等工具结合使用,快速定位系统性能问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242801 2024-2025-2 《网络攻防实践》第4次作业

20242801 2024-2025-2 《网络攻防实践》第4次作业 一、实验内容 ​ 在虚拟机环境中完成TCP/IP协议栈重点协议的攻击实验,学习ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击的原理和相关知识,并动手进行实践。 二、实验过程 (一)ARP缓存欺…

缓存监控治理在游戏业务的实践和探索

通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。作者:来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景游戏业务中存在大量的高频请求尤其是对热门游戏而言,而…

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析 ZYNQ系列芯片集成了ARM处理器和FPGA(可编程逻辑单元),正是因为由于ARM处理器的存在,所以我们可以在ZYNQ系列芯片上面运行Linux系统。 在ZYNQ系列芯片上运行Linux会给我们带来很多优势:首先,我们可以将部分逻辑处理…

# 20241902 2024-2025-2 《网络攻防实践》第六周作业

1.实验内容 通过本周的学习和实践,学习使用metasploitable对windows进行远程的渗透测试实验;学习利用wireshark进行日志文件的分析和攻击取证,解读攻击者所利用的攻击、攻击者的具体操作以及如何对攻击行为进行防范;实践同一内网中对利用metasploitable对其他windows系统进…

gitlab+jenkins+harbor+k8s安装操作流程之rancher

关闭防火墙 systemctl stop firewalld yum安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 下载docker-ce.repo源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 安装docker yum install…

win11优化pyenv-venv虚拟环境切换

问题 使用 pyenv-venv activate env_name 命令激活虚拟环境后无法使用tab自动完善命令无法上下键切换历史命令脚本 #!/usr/bin/bashvenvs="/d/JavaProgramFiles/pyenv-win/pyenv-win-venv/envs" # #!/bin/bashactivate () {# 设置 PATHORIGIN_PATH="${ORIGIN_P…

安装Harbor

环境:OS:Centos 7说明:需要docker和 docker compose[root@node1 data]# docker version Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04…

Linux学习路线

Linux 学习路线Linux 学习路线 by 程序员鱼皮💂 + 💻 = 👴🏽 建议先观看视频入门:https://www.bilibili.com/video/BV1ev411G7VE/ 为什么学 Linux? 相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受企业青睐,甚至 90% 以上 的企业应用都是用…

【无问AI网络安全大模型】协助渗透测试挖掘sql注入

在日常工作中发现了一个登录框,话不多说,搞搞看看存不存在SQL注入。输入用户名密码开始抓包,可以看出用户名密码都进行了加密这个时候输入单引号,发现页面报错。 输入双引号,页面恢复正常这个时候,可以判断这个系统存在注入的可能非常大, 手工使用了报错注入、盲注都不行…

20242934 2024-2025-2 《网络攻防实践》第四周作业

1.实践内容 在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。 ARP缓存欺骗攻击:通过伪造ARP消息,欺骗目标设备将攻击者的MAC地址与合法IP地址关联,从而截获或篡改网络数据,造…

ConcurrentHashMap和锁

为什么HashMap数组的长度是2的指数次幂? 因为HashMap的底层是数组+链表+红黑树,在插入元素时,需要通过索引获得插入元素的位置,计算索引的方法是使用哈希函数,将元素的哈希值与数组长度取模,当数组长度是2的指数次幂时,取模操作相当于对元素的哈希值进行二进制位与运算(…

麒麟系统V10系统安全加固

一、安装clamav杀毒软件 1.在clamav官网下载:https://www.clamav.net/downloads 也可以在github上下载早一点的版本:https://github.com/Cisco-Talos/clamav/releases 我这里安装clamav-1.1.2rpm -ivh clamav-1.1.2.linux.x86_64.rpm2.下载病毒库: https://database.clamav.…