iostat: czekaj vs. svctm

16

Na stronie iostatpodręcznej znalazłem dwie podobne kolumny:

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.

Czy te kolumny mają reprezentować to samo? Wydaje mi się, że czasami się zgadzają, ale czasem nie:

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

Oprócz oczywistego ostrzeżenia, które svctmjest amortyzowane, jaka jest różnica między tymi dwiema kolumnami ?

dotancohen
źródło

Odpowiedzi:

13

W iostatsystemie Linux awaitkolumna (średni czas oczekiwania) pokazuje średni czas spędzony na żądaniu We / Wy obliczony od samego początku do końca.

svctmKolumna (czas obsługi) powinny wykazywać średni czas spędzony obsługi żądania, tj czas spędzony „na zewnątrz” systemu operacyjnego. Powinien być równy lub mniejszy niż poprzedni, ponieważ żądanie mogło stracić czas oczekiwania w kolejce, jeśli urządzenie jest już zajęte i nie przyjmuje więcej równoczesnych żądań.

W przeciwieństwie do większości, jeśli nie wszystkich innych implementacji uniksowych / uniksowych, jądro Linuksa nie mierzy rzeczywistego czasu usługi, więc iostatna tej platformie stara się go wyprowadzić z istniejących statystyk, ale kończy się niepowodzeniem, ponieważ nie można tego zrobić poza trywialnymi przypadkami użycia.

Szczegółowe informacje można znaleźć na tym blogu oraz w interesujących dyskusjach .

jlliagre
źródło
3
Dzięki. Rozumiem teraz, że await= svctm+ however_long_in_queue, tak jak stwierdza to drobna instrukcja!
dotancohen,