You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# **iostat**
## 说明
**iostat命令** 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况, 同时也会汇报出CPU使用情况
同vmstat一样, iostat也有一个弱点, 就是它不能对某个进程进行深入分析, 仅对系统的整体情况进行分析
## 选项
```markdown
-c: 仅显示CPU使用情况
-d: 仅显示设备利用率
-k: 显示状态以千字节每秒为单位, 而不使用块每秒
-m: 显示状态以兆字节每秒为单位
-p: 仅显示块设备和所有被使用的其他分区的状态
-t: 显示每个报告产生时的时间
-V: 显示版号并退出
-x: 显示扩展状态
* 间隔时间:每次报告的间隔时间(秒)
* 次数:显示报告的次数
```
## 实例
```bash
iostat -x /dev/sda1 # 查看磁盘sda1的I/O详细情况
iostat -d -x -k 1 1
: << comment
输出说明:
%iowait的值过高, 表示硬盘存在I/O瓶颈。
%util 接近100%, 说明产生的I/O请求太多, I/O系统已经满负荷, 该磁盘可能存在瓶颈。
svctm 比较接近 await, 说明 I/O 几乎没有等待时间;
await 远大于 svctm, 说明I/O 队列太长, io响应太慢, 则需要进行必要优化。
avgqu-sz比较大, 也表示有大量io在等待。
idble小于70%, I/O负荷过大, 进程读取有过多的等待, 用vmstat查看b参数(等待资源的进程数)和wa参数(I/O等待所占用的CPU时间
百分比, 高于30%说明I/O压力较高)
comment
```
详细说明: 第二行是系统信息和监测时间, 第三行和第四行显示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百分比 |
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈.
idle小于70% IO压力就较大了,一般读取速度有较多的wait.同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所
占用的CPU时间的百分比,高过30%时IO压力高);另外 await 的参数也要多和 svctm 来参考.差的过高就一定有 IO 的问题.一般地系统IO
响应时间(await)应该低于5ms, 如果大于10ms就比较大
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小
如果数据拿的大,才IO 的数据会高.也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的
CPU属性值说明:
%user: CPU处在用户模式下的时间百分比
%nice: CPU处在带NICE值的用户模式下的时间百分比
%system: CPU处在系统模式下的时间百分比
%iowait: CPU等待输入输出完成时间的百分比
%steal: 管理程序维护另一个虚拟处理器时, 虚拟CPU的无意识等待时间百分比
%idle: CPU空闲时间百分比