---
title: iostat工具
description: "iostat是调查磁盘I/O问题使用最频繁的工具。它汇总了所有在线磁盘统计信息，为负载特征，使用率和饱和度提供了指标。它可以由任何用户执行，统计信息直接来源于内核，因此这个工具的开销基本可以忽略不计。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/tuningtip/kunpengtuning_12_0035.html
sourcePath: /source/zh/perftuning/tuningtip/kunpengtuning_12_0035.html
indexId: cd559ac714126d57fcbd7b082f7d5a12e5dbd5443887eda3c0342afe4b614ced58
---
# iostat工具

#### 介绍

iostat是调查磁盘I/O问题使用最频繁的工具。它汇总了所有在线磁盘统计信息，为负载特征，使用率和饱和度提供了指标。它可以由任何用户执行，统计信息直接来源于内核，因此这个工具的开销基本可以忽略不计。


#### 安装方式

iostat一般会随系统安装。如果没有，以CentOS为例，可以使用以下命令安装：

```
yum -y install sysstat
```


#### 使用方式

命令格式：直接使用命令+参数，例如

```
iostat -d -k -x 1 100
```

常用参数如下：

| 参数 | 说明 |
| --- | --- |
| \-c | 显示CPU使用情况。 |
| \-d | 显示磁盘使用情况。 |
| \-k | 以KB为单位显示。 |
| \-m | 以M为单位显示。 |
| \-p | 显示每个磁盘的详细情况。 |
| \-t | 显示时间戳。 |
| \-x | 显示详细信息。 |


我们也可以在最后添加统计周期和统计次数，比如上面的样例中，是要求以1s为周期统计，总共统计100s。

输出格式：

```
Device:         rrqm/s   wrqm/s    r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await svctm  %util 
sda               0.02     7.25    0.04    1.90     0.74    35.47    37.15     0.04   19.13   5.58   1.09 
dm-0              0.00     0.00    0.04    3.05     0.28    12.18     8.07     0.65  209.01   1.11   0.34 
dm-1              0.00     0.00    0.02    5.82     0.46    23.26     8.13     0.43   74.33   1.30   0.76 
dm-2              0.00     0.00    0.00    0.01     0.00     0.02     8.00     0.00    5.41   3.28   0.00
```

参数含义如下：

| 参数 | 说明 |
| --- | --- |
| rrqm/s | 每秒合并放入请求队列的读操作数。 |
| wrqm/s | 每秒合并放入请求队列的写操作数。 |
| r/s | 每秒磁盘实际完成的读I/O设备次数。 |
| w/s | 每秒磁盘实际完成的写I/O设备次数。 |
| rkB/s | 每秒从磁盘读取KB数。 |
| wkB/s | 每秒写入磁盘的KB数。 |
| avgrq\-sz | 平均请求数据大小，单位为扇区（512B）。 |
| avgqu\-sz | 平均I/O队列长度（操作请求数）。 |
| await | 平均每次设备I/O操作的等待时间（毫秒）。 |
| svctm | 平均每次设备I/O操作的响应时间（毫秒）。 |
| %util | 用于I/O操作时间的百分比，即使用率。 |


重要参数详解：

1. rrqm/s和wrqm/s，每秒合并后的读或写的次数。如果值在统计周期内为非零，可能表明操作系统检测到逻辑上相邻或重叠的I/O请求，并通过合并优化减少实际下发到磁盘的I/O操作次数。这种合并通常意味着逻辑层面的连续访问模式，有利于提升HDD的吞吐量（减少寻址）或降低SSD的写入放大。
2. 如果%util接近100%，说明产生的I/O请求太多，I/O系统已经满负荷，相应的await也会增加，CPU的wait时间百分比也会增加（通过top命令查看），这时很明显就是磁盘成了瓶颈，影响整个系统。这时可以考虑更换更高性能的磁盘，或优化软件以减少对磁盘的依赖。
3. await（读写请求的平均等待时长）需要结合svctm参考。svctm和磁盘性能直接有关，它是磁盘内部处理的时长。await的大小一般取决于svctm以及I/O队列的长度。svctm一般会小于await，如果svctm比较接近await，说明I/O几乎没有等待时间（处理时间也会被算作等待的一部分时间）；如果await大于svctm差得过高的话一定是磁盘本身I/O的问题；这时可以考虑更换更快的磁盘，或优化应用。
4. 队列长度（avgqu-sz）也可作为衡量系统I/O负荷的指标，但是要多统计一段时间后查看，因为有时候只是一个峰值过高。
