1.磁盘读写常见的指标
(1)IOPS(Input/Output Operations per Second)
指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,有顺序IOPS和随机IOPS
比如100次/秒,那iops就是100次/秒,例如数据库类应用等典型场景重点提升这个指标,下面是阿里云盘性能
(2)吞吐量/带宽(Throughput)
是指单位时间内可以成功传输的数据数量,单位为MB/s
比如 一个硬盘的读写 IO 是 1MB,硬盘的 IOPS 是 100,那么硬盘总的吞吐率就是 100MB/s
带宽 = IOPS * IO大小
(3)访问时延(Latency)
是指IO请求从发出到收到响应的间隔时间,常以毫秒ms或者微妙us为单位
硬盘响应时间 = 硬盘访问时间 + IO排队延迟,过高的时延会导致应用性能下降或报错。
普通的HDD磁盘,随机IO读写延迟是10毫秒,IO带宽大约100MB/秒,随机IOPS一般在100左右
(4)使用率 Utilization
指磁盘处理 I/O 的时间百分比,过高的使用率 ,常规字段 Utilization-缩写%util 表示
如超过 80%意味着磁盘 I/O 存在性能瓶颈
(5)I/O 等待队列长度 Queue Length
表示等待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,就会增大队列长度
(6)饱和度
使用率只考虑有没有IO,不考虑IO的大小;当使用率是100%时,磁盘也可能接收新的IO请求
2.iostat查看系统综合的磁盘IO情况
格式:iostat [参数] [时间] [次数] iostat -p ALL -h
参数说明
参数
说明
-c
仅显示CPU状态统计信息
-d
仅显示磁盘统计信息
-k或者-m
以kb或者mb为单位显示,常用-h可读性高
-p
指定显示IO的设备,ALL表示显示所有
-x
显示详细信息
注意:iostat不能直接得到磁盘饱和度
字段
说明
r/s
每秒发送给磁盘的读请求次数,r/s+w/s 是磁盘IOPS
w/s
每秒发送给磁盘的写请求次数,r/s+w/s手机磁盘IOPS
rkB/s
每秒从磁盘读取的数据量,rkB/s+wkB/s 是吞吐量
wkB/s
每秒向磁盘写入的数据量,rkB/s+wkB/s 是吞吐量
r_await
读请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间r_await+w_await ,是RT响应时间
w_await
写请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间r_await+w_await ,是RT响应时间
aqu-sz
平均请求队列长度
rareq-sz
平均读请求大小
wareq-sz
平均写请求大小
%util
磁盘处理I/O的时间百分比,表示的是磁盘的忙碌情况;如果>80% 就是磁盘可能处于忙碌状态一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
3.磁盘IO常见指标和分析命令工具介绍
(1)iotop命令
查看当前系统各个进程使用磁盘IO的情况
安装:yum -y install iotop
iotop -o -d 3 每3秒刷新下各个进程磁盘IO情况
参数
说明
-o
只显示正在读写磁盘的程序
-d
跟一个数值,表示iotop命令刷新的时间
字段
说明
Total DISK READ
从磁盘中读取的总速率
Total DISK WRITE
往磁盘里写入的总速率
Actual DISK READ
从磁盘中读取的实际速率
Actual DISK WRITE
往磁盘里写入的实际速率
TID
线程ID,按p可以转换成进程ID
PRIO
优先级
USER
线程所有者
DISK READ
进程从磁盘中读取的速率
DISK WRITE
进程往磁盘里写入的速率
SWAPIN
进程swap交换百分比
IO>
IO等待所占用的百分比
COMMAND
具体的进程命令
iostats是系统级别的IO监控
iotop是进程级别的IO监控
(2)案例测试:模拟IO密集型应用,系统是4核
终端一 模拟2个磁盘IO进程, 持续600s stress --hdd 2 --hdd-bytes 6G --timeout 600s
终端二 全局 iostat -d -x 1
终端三 全局 top
终端四 局部 iotop
测试结果