iostat: attendre vs svctm

16

Dans la iostatpage de manuel, j'ai trouvé ces deux colonnes similaires:

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.

Ces colonnes sont-elles censées représenter la même chose? Il me semble que parfois ils sont d'accord, mais parfois non:

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

Outre l'avertissement évident qui svctmest déprécié, quelle est la différence entre ces deux colonnes ?

dotancohen
la source

Réponses:

13

Sous linux iostat, la awaitcolonne (attente moyenne) indique le temps moyen passé par une demande d'E / S calculé de son tout début à sa fin.

La svctmcolonne (temps de service) doit afficher le temps moyen passé à traiter la demande, c'est-à-dire le temps passé "en dehors" du système d'exploitation. Elle doit être égale ou inférieure à la précédente, car la demande peut avoir perdu du temps à attendre dans une file d'attente si le périphérique est déjà occupé et n'accepte plus de demandes simultanées.

Contrairement à la plupart sinon à toutes les autres implémentations Unix / Unix, le noyau Linux ne mesure pas le temps de service réel, de sorte iostatque cette plate-forme essaie de le dériver des statistiques existantes mais échoue car cela ne peut tout simplement pas être fait en dehors de cas d'utilisation triviaux.

Voir ce blog et les discussions intéressantes qui suivent pour plus de détails.

jlliagre
la source
3
Merci. Je comprends maintenant que await= svctm+ however_long_in_queue, tout comme le beau manuel l'indique!
dotancohen