¿Por qué el tiempo "real" sería mucho más alto que los tiempos "usuario" y "sys" combinados?

19

Ejecuto y timemuchos comandos (es decir nslookup) a través SSHy recopilo el tiempo total necesario para que se complete el servicio implícito (es decir, DNS ). Así que recopilo el tiempo usery el systiempo, ya que el realtiempo cuenta el tiempo cuando mi proceso está bloqueando, lo que no necesito ... supongo.

Pero algunas de mis pruebas tuvieron resultados como tales:

real 3m22.033s
user 0m0.009s
sys 0m0.014s

Ejecuto estas pruebas en recursos limitados de Linux, pero aún así, el realtiempo es significativamente alto. ¿Esto solo indicaría que la caja está MUY ocupada ejecutando diferentes procesos? ¿Sigue siendo correcta para sumar las usery syslos tiempos para saber cuánto tomó el servicio?

Muhammad Gelbana
fuente

Respuestas:

22

Real es el tiempo total que tardó el proceso en finalizar (es decir, la diferencia entre el tiempo de inicio y el tiempo de finalización):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s

En este listado, usuario y sys se refieren al tiempo empleado respectivamente en modo de usuario y modo kernel. Estos no incluyen el tiempo que pasas estando inactivo, en estado de sueño . Un proceso queda inactivo cuando lo solicitó deliberadamente, o cuando está esperando que esté disponible IO (acceso a la red / acceso al disco / interacción del usuario), o esperando que finalicen otros procesos, por falta de CPU disponible cuando el sistema está bajo una carga muy alta etc.

Por lo general, si se llama timeen wget, verdadero corresponderá a la vez que la descarga tarda, el usuario debe ser insignificante (a menos wgetque se pide para realizar el procesamiento intensivo de datos), sys deben ser pequeños (algo de tiempo podría ser gastado para hacer frente a los tampones, regresando de datos y adelante del espacio del kernel al espacio del usuario).

Stéphane Gimenez
fuente
Lo siento, agregué wgeta la pregunta, en realidad no lo hago time, pero gracias por la explicación. Decir que eso realincluye los tiempos de bloqueo, como esperar la red IO, me hace pensar en incluir ese tiempo también porque en realidad estoy probando la red. Gracias.
Muhammad Gelbana
¿Podría confirmar lo siguiente, para probar el rendimiento de la red y la capacidad de respuesta de la máquina consultada, ya sea un DNSservidor o una máquina pinchada, es suficiente para medir solo el realtiempo?
Muhammad Gelbana
@MuhammadGelbana: Este tiempo real es solo un cronómetro, nada más. Si deja pingcorrer durante 3 minutos 22, devolverá 3 minutos 22. Es simplemente inútil en este caso (y en realidad es inútil como punto de referencia la mayor parte del tiempo, el resultado depende de factores externos).
Stéphane Gimenez
Gracias. ¿Pero sabrías por qué no se agotó el tiempo? ¡Leí que el tiempo de espera predeterminado nslookupes de 5 segundos!
Muhammad Gelbana