Tengo un script que convierte archivos de video y lo ejecuto en el servidor con datos de prueba y mido su tiempo time
. En resultado vi:
real 2m48.326s
user 6m57.498s
sys 0m3.120s
¿Por qué el tiempo real es mucho más bajo que el tiempo del usuario? ¿Tiene esto alguna conexión con multihilo? O que mas?
Editar: Y creo que ese script se estaba ejecutando alrededor de las 2m48
real
tiempo es el tiempo del reloj de pared como se explica a continuación (es decir, lo que mediríamos si tuviéramos un cronómetro)Respuestas:
El resultado que muestra es un poco extraño, ya que el tiempo real generalmente sería mayor que los otros dos.
Real
el tiempo es la hora del reloj de pared. (lo que podríamos medir con un cronómetro)User
tiempo es la cantidad de tiempo que se pasa en modo de usuario dentro del procesoSys
es el tiempo de CPU que pasa en el núcleo dentro del proceso.Entonces, supongo que si el trabajo fue realizado por varios procesadores al mismo tiempo, el tiempo de CPU sería mayor que el tiempo transcurrido del reloj de pared.
¿Era este un tipo de aplicación concurrente / multihilo / paralelo?
Solo como ejemplo, esto es lo que obtengo en mi sistema Linux cuando ejecuto el
time find .
comando. Como era de esperar, elreal
tiempo transcurrido es mucho mayor que los demás en este proceso de usuario único / núcleo único.La regla de oro es:
fuente
avconv
es multiproceso. Puede ser.avconv
Es la nueva generación deffmpeg
. Estaba convirtiendo 7 archivos flv cortos (unos 20 segundos cada uno).find
ejemplo, elusr
valor es mucho más bajo porque la mayor parte del tiempo se ha gastado durante las interrupciones, incluso sifind
hubiera sido multiproceso habría permanecido bajo (lo siento si no domino los tiempos verbales en inglés).Solo para ilustrar lo que se ha dicho, con un proceso de dos subprocesos haciendo algunos cálculos.
compilar
(Esto es solo para ilustrar, en la vida real debería haber agregado el indicador -D_REENTRANT)
(Los tiempos están en un Intel Atom que tiene dos núcleos lentos :))
fuente