# iostat.md

监视系统输入输出设备和CPU的使用情况

## 补充说明

**iostat命令** 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况，同时也会汇报出CPU使用情况。同vmstat一样，iostat也有一个弱点，就是它不能对某个进程进行深入分析，仅对系统的整体情况进行分析。

### 语法

```
iostat(选项)(参数)
```

### 选项

```
-c：仅显示CPU使用情况；
-d：仅显示设备利用率；
-k：显示状态以千字节每秒为单位，而不使用块每秒；
-m：显示状态以兆字节每秒为单位；
-p：仅显示块设备和所有被使用的其他分区的状态；
-t：显示每个报告产生时的时间；
-V：显示版号并退出；
-x：显示扩展状态。
```

### 参数

* 间隔时间：每次报告的间隔时间（秒）；
* 次数：显示报告的次数。

### 实例

用`iostat -x /dev/sda1`来观看磁盘I/O的详细情况：

```
iostat -x /dev/sda1 
Linux 2.6.18-164.el5xen (localhost.localdomain)
2010年03月26日  

avg-cpu:  %user   %nice %system %iowait 
%steal   %idle  
            0.11    0.02    0.18    0.35   
0.03    99.31  

Device:         tps   Blk_read/s    Blk_wrtn/s  
Blk_read   Blk_wrtn  
sda1                0.02          0.08       
0.00          2014               4
```

详细说明：第二行是系统信息和监测时间，第三行和第四行显示CPU使用情况（具体内容和mpstat命令相同）。这里主要关注后面I/O输出的信息，如下所示：

| 标示       | 说明                       |
| -------- | ------------------------ |
| Device   | 监测设备名称                   |
| rrqm/s   | 每秒需要读取需求的数量              |
| wrqm/s   | 每秒需要写入需求的数量              |
| r/s      | 每秒实际读取需求的数量              |
| w/s      | 每秒实际写入需求的数量              |
| rsec/s   | 每秒读取区段的数量                |
| wsec/s   | 每秒写入区段的数量                |
| rkB/s    | 每秒实际读取的大小，单位为KB          |
| wkB/s    | 每秒实际写入的大小，单位为KB          |
| avgrq-sz | 需求的平均大小区段                |
| avgqu-sz | 需求的平均队列长度                |
| await    | 等待I/O平均的时间（milliseconds） |
| svctm    | I/O需求完成的平均时间             |
| %util    | 被I/O需求消耗的CPU百分比          |
