关于磁盘IO

  • iostat作为systat这个系统自带的使用工具包中的命令,但iostat -x显示的内容中潜伏着一些警告
  • util值和scvtm值一般用于判断磁盘的利用率和饱和度的重要指标

基础知识

  • svctm表示向设备发起I/O请求的平均响应时间(被广泛认为是一个操作锁华为的平均时间)
  • util表示向设别发送I/O请求的CPU时间百分比(被广泛认为超过80%就是严重的IO性能瓶颈)

svctm和util的值在带有固态驱动器或者RAID上被放大了,这两个字段的值并不能反应出它们的性能限制 iostat手册中将svctm描述警告为平均服务时间(svctm字段)值没有意义,因为I/O统计现在是在块级别计算的,我们不知道磁盘驱动程序何时开始处理请求。

假设A做10件事情需要20分钟,那么平均做每件事情需要2分钟。假设B可以同时做10件事情,做每件事情也同样需要两分钟,这样看来B拥有更高的并行度。但是在单次请求结果方面,A和B处理一次事情的时间都是2分钟 所以在拥有固态或者RAID的服务器中,svctm和uil并不能反应出性能限制

实例:

Device:     rrqm/s   wrqm/s       r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util 
sdd           0.00     0.00  13823.00    0.00 55292.00     0.00     8.00  -1.78    0.06    0.06    0.00   0.06  78.40
Device:     rrqm/s   wrqm/s       r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd           0.00     0.00  72914.67    0.00 291658.67    0.00     8.00  15.27    0.21    0.21    0.00   0.01 100.00

那么%util发生了什么?第一个iostat结果告诉我们,驱动器的利用率为 78.4%,每秒读取13823 次。第二行告诉我们,驱动器在每秒 72914 次读取时被100%使用。如果要14000才能填到78.4%,难道我们不期望它总共只能做18000吗?7.3万怎么做到的?

这里的问题是出在并行性。当iostat 说%util时,它的意思是“向设备发出 I/O 请求的 CPU 时间百分比”。驱动器至少做一件事的时间百分比。如果它同时做 16 件事,那不会改变。再一次,这个计算对于驱动器来说效果很好,它一次只做一件事。他们花在做一件事上的时间很好地表明了他们真正的忙碌程度。另一方面,SSD(以及 RAID 和 Alice)可以同时做多项事情。如果你可以同时做多件事,你至少做一件事的时间百分比不能很好地预测您的表现潜力

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-09-19 10:45:38

results matching ""

    No results matching ""