iostat: жду против 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не рекомендуется, какова разница между этими двумя столбцами ?

dotancohen
источник

Ответы:

13

В Linux iostat, то awaitколонка (среднее время ожидания) показывает среднее время , затрачиваемое запроса ввода / вывода , вычисленной из своего самого начала к его концу.

svctmКолонка (срок службы) должен показывать среднее время обслуживания запроса, то есть время , проведенное «вне» ОС. Он должен быть равен или меньше предыдущего, поскольку запрос мог потерять время ожидания в очереди, если устройство уже занято и не принимает больше одновременных запросов.

В отличие от большинства, если не всех других реализаций, подобных Unix / Unix, ядро ​​Linux не измеряет фактическое время обслуживания, поэтому iostatна этой платформе пытается извлечь его из существующей статистики, но не может, поскольку это просто невозможно сделать за пределами тривиальных вариантов использования.

Смотрите этот блог и интересные обсуждения, которые следуют за деталями.

jlliagre
источник
3
Благодарю. Теперь я понимаю , что await= svctm+ however_long_in_queue, так же как штраф ручные состояния!
Dotancohen