文章目录
iostat命令不存在
问题:
bash
[root@jobbinqiao ~]# iostat
-bash: iostat: command not found
在 RHEL 及 CentOS 最小化安裝不會包括 iostat, 只要安裝 sysstat 套件便可以解決問題, 除了 iostat 外, sysstat 套件還包括 mpstat, sar 及 sa 等工具。
解决方案:
bash
yum intstall -y sysstat
iostat命令详解
iostat 是用来输出cpu/磁盘的I/O情况的命令
单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息。
bash
[root@jobbinqiao ~]# iostat
# 当前内核版本、主机名、时间等
Linux 3.10.0-1160.11.1.el7.x86_64 (jobbinqiao) 08/21/2023 _x86_64_ (2 CPU)
# 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.18 0.17 0.00 99.47
# 各磁盘的I/O使用状况
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.61 0.07 12.92 415315 77814333
scd0 0.00 0.00 0.00 888 0
cpu平均值属性含义
参数 | 含义 |
---|---|
%user | CPU在用户态执行进程的时间百分比 |
%nice | CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比 |
%system | CPU处在内核态执行进程的时间百分比 |
%iowait | CPU用于等待I/O操作占用CPU总时间的百分比 |
%steal | 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比 |
%idle | CPU空闲时间百分比 |
tips
- 若 %iowait 的值过高,表示硬盘存在I/O瓶颈 ;
- 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量;
- 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是 CPU
avg-cpu中各列参数含义如下:
每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
参数 | 含义 |
---|---|
Blk_read/s | 以每秒块数表示从设备读取的数据量 |
Blk_wrtn/s | 以每秒块数表示写入设备的数据量 |
Blk_read | 取样时间间隔内读扇区总数量 |
Blk_wrtn | 取样时间间隔内写扇区总数量 |
我们可以使用-c选项单独显示avg-cpu部分的结果,使用-d选项单独显示Device部分的信息。
bash
iostat interval [count]
指定iostat命令的采样间隔和采样次数
bash
## 每一秒展示一次io信息,一共展示5次
iostat -d 1 5
[root@jobbinqiao shell]# iostat -d 1 5
Linux 3.10.0-1160.11.1.el7.x86_64 (jobbinqiao) 08/21/2023 _x86_64_ (2 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.61 0.07 12.92 415507 78045401
scd0 0.00 0.00 0.00 888 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 2.00 0.00 20.00 0 20
scd0 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
## 其中可以使用ctrl + c终止
以kB为单位显示读写信息(-k选项)/以mB为单位显示读写信息(-m选项)
bash
[root@jobbinqiao shell]# iostat -k
Linux 3.10.0-1160.11.1.el7.x86_64 (jobbinqiao) 08/21/2023 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.18 0.17 0.00 99.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.61 0.07 12.92 415507 78050297
scd0 0.00 0.00 0.00 888 0
为显示更详细的io设备统计信息,可以使用-x选项。
在分析io瓶颈时,一般都会开启-x选项。
bash
[root@jobbinqiao ~]# iostat -x
Linux 3.10.0-1160.11.1.el7.x86_64 (jobbinqiao) 08/21/2023 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.18 0.17 0.00 99.47
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 1.34 0.00 1.61 0.07 12.92 16.14 0.02 12.32 7.97 12.32 2.68 0.43
scd0 0.00 0.00 0.00 0.00 0.00 0.00 16.44 0.00 0.34 0.34 0.00 0.32 0.00