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.
|
|
|
|
# **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空闲时间百分比
|
|
|
|
|
|
|
|
|
|
|