谈谈iostat
具体参数
-
aqu-sz: 发出到设备的请求的平均队列长度。 注意:在以前的版本中,此字段称为avgqu-sz。这个指标高需要重点关注,可能IO太多,需要等待
-
rareq-sz 单次读请求的平均大小,以千字节为单位
-
wareq-sz 单次写请求的平均大小,以千字节为单位
-
w_await 向设备发出的写请求被处理的平均时间(以毫秒为单位)。这包括请求在队列中等待的时间以及实际处理这些请求的时间。
-
r_await 向设备发出的读请求被处理的平均时间(以毫秒为单位)。这包括请求在队列中等待的时间以及实际处理这些请求的时间。
-
rrqm/s : 每秒合并读操作的次数
-
wrqm/s: 每秒合并写操作的次数
-
avgrq-sz: 平均一次读写涉及的扇区数量,对sata盘来讲单个扇区的大小是512字节,对nvme的ssd来说,也是512字节(这个很奇怪,ssd不是说没有扇区的概念么?但是根据读写次数和读写总量来计算,avgrq-sz的值乘以512字节刚好就是每次io的平均流量)。
-
avgqu-sz: 平均等待处理的IO请求队列长度
rqm/s 和wrqm/s
块设备有相应的调度算法。如果两个IO发生在相邻的数据块时,他们可以合并成1个IO。
这个简单的可以理解为快递员要给一个18层的公司所有员工送快递,每一层都有一些包裹,对于快递员来说,最好的办法是同一楼层相近的位置的包裹一起投递,否则如果不采用这种算法,采用最原始的来一个送一个(即noop算法),那么这个快递员,可能先送了一个包括到18层,又不得不跑到2层送另一个包裹,然后有不得不跑到16层送第三个包裹,然后包到1层送第三个包裹,那么快递员的轨迹是杂乱无章的,也是非常低效的。
新版本的iostat里面已经没有svctm 这个参数了。它本来的意思是磁盘真正执行请求的时间(不算排队时间)。