使用iostat查看磁盘使用情况
Ⅰ、iostat安装
[root@VM_42_63_centos ~]# yum install -y sysstat
Ⅱ、玩一手
[root@VM_42_63_centos ~]# iostat -xm 3
Linux 3.10.0-514.21.1.el7.x86_64 (VM_42_63_centos) 06/28/2018 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.41 0.00 0.25 0.35 0.00 98.98
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 4.53 0.43 5.42 0.01 0.06 24.09 0.47 79.51 33.78 83.15 1.39 0.81
scd0 0.00 0.00 0.00 0.00 0.00 0.00 17.45 0.00 2.68 2.68 0.00 2.53 0.00
2.1 cpu指标
- | 说明 |
---|---|
%user | CPU处在用户模式下的时间百分比 |
%nice | CPU处在带NICE值的用户模式下的时间百分比 |
%system | CPU处在系统模式下的时间百分比 |
%iowait | CPU等待IO完成时间的百分比 |
%steal | 管理程序维护另一个虚拟处理器时,虚拟CPU的无意的等待时间的百分比 |
%idle | 闲置cpu的百分比 |
- %iowait的值过高,表示硬盘存在I/O瓶颈;
- %idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
- %idle值如果持续很低,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU
2.2 device指标
- | 说明 |
---|---|
rrqm/s | 每秒merge的读操作数(read request merge) |
wrqm/s | 每秒merge的写操作数 |
r/s | 每秒完成读I/O设备的次数 |
w/s | 每秒完成写I/O设备的次数 |
rMB/s | 用带宽(吞吐量)来表示读写的情况 |
wMB/s | - |
avgrq-sz | 平均每秒钟request请求的size |
avgqu-sz | 平均I/O队列深度,HDD可能在4左右,SSD可以达到30左右 |
await | 平均每次设备I/O操作等待时间(ms) |
r_await | 读的等待时间 |
w_await | 写的等待时间 |
svctm | 平均每次设备I/O操作的服务时间(ms) |
%util | 每秒钟有百分之多少的时间用于I/O操作,即被io消耗的cpu百分比 |
Merge将若干个连续地址的IO请求进行合并来提高IO的效率
r/s + w/s = IOPS
avgrq-sz其实就是每秒读取的扇区的数量,每个扇区在磁盘上固定为512bit,这个值乘以512就是带宽(rMB/s+wMB/s)了,也可以说是每秒钟平均请求的块大小
- %util 接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈(不一定,需要结合avgrq-sz分析)
- svctm 比较接近await,说明 I/O 几乎没有等待时间;
- await 远大于svctm,说明I/O队列太长,io响应太慢,则需要进行必要优化。
- avgqu-sz比较大,也表示有当量io在等待