iostat: wait vs. svctm

16

En la página de iostatmanual he encontrado estas dos columnas similares:

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.

¿Estas columnas están destinadas a representar lo mismo? Parece que a veces están de acuerdo, pero a veces no:

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

Además de la advertencia obvia que svctmse deprecia, ¿cuál es la diferencia entre estas dos columnas ?

dotancohen
fuente

Respuestas:

13

En Linux iostat, la awaitcolumna (espera promedio) muestra el tiempo promedio empleado por una solicitud de E / S calculada desde el principio hasta el final.

La svctmcolumna (tiempo de servicio) debe mostrar el tiempo promedio dedicado a atender la solicitud, es decir, el tiempo pasado "fuera" del sistema operativo. Debe ser igual o menor que el anterior ya que la solicitud podría haber perdido tiempo esperando en una cola si el dispositivo ya está ocupado y no acepta más solicitudes concurrentes.

A diferencia de la mayoría de las implementaciones similares a Unix / Unix, el kernel de Linux no mide el tiempo de servicio real, por lo iostatque esa plataforma intenta derivarlo de las estadísticas existentes, pero falla, ya que esto no se puede hacer fuera de casos de uso triviales.

Vea este blog y las interesantes discusiones que siguen para más detalles.

jlliagre
fuente
3
Gracias. ¡Ahora entiendo que await= svctm+ however_long_in_queue, tal como dice el excelente manual!
dotancohen