iostat:await vs. svctm


16

iostat联机帮助页中,我找到了这两个相似的列:

await
    The average time (in milliseconds) for I/O requests issued to the device to be  served.  This
    includes the time spent by the requests in queue and the time spent servicing them.

svctm
    The  average  service time (in milliseconds) for I/O requests that were issued to the device.
    Warning! Do not trust this field any more.  This field will be removed in  a  future  sysstat
    version.

这些列是否表示同一件事?我似乎有时他们同意,但有时不同意:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.44    0.02    1.00    0.36    0.00   94.19

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.07     0.96    0.28    1.28     8.98    47.45    72.13     0.02   11.36   11.49   11.34   5.71   0.89

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.00    0.00    2.50    2.50    0.00   87.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     9.00    2.00    6.00    12.00    68.00    20.00     0.05    6.00    2.00    7.33   6.00   4.80

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.57    0.00    0.51    0.00    0.00   94.92

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          13.93    0.00    1.99    1.49    0.00   82.59

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00    29.00    0.00    4.00     0.00   132.00    66.00     0.03    7.00    0.00    7.00   7.00   2.80

除了明显的svctm折旧警告外,这两列还有什么区别

Answers:


13

在linux上iostatawait列(平均等待时间)显示从开始到结束计算的I / O请求所花费的平均时间。

所述svctm柱(服务时间)应当显示花费请求提供服务的平均时间的,即所花费的时间“外”的OS。它应该等于或小于上一个,因为如果设备已经很忙并且不接受更多并发请求,则请求可能会浪费时间在队列中等待。

与大多数(如果不是全部)其他Unix / Unix之类的实现不同,Linux内核不会衡量实际的服务时间,因此iostat在该平台上尝试从现有统计信息中得出它的时间,但是失败了,因为这无法在琐碎的用例之外完成。

有关详细信息请参见此博客和随后有趣的讨论


3
谢谢。我现在理解await= svctm+ however_long_in_queue,就像很好的手册所述!
dotancohen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.