¿Qué es "hora del sistema" cuando se usa "hora" en la línea de comando

10

Estoy usando timepara cronometrar un Perlscript en la terminal estándar en Ubuntu 14.04.

He leído que real timees tiempo de cronómetro; el tiempo que yo, como usuario, paso mirando el programa que se ejecuta desde que inicio el programa hasta que finaliza. Pero no entiendo qué usero qué systiempos son. La página de manual en timees vaga, por decir lo menos.

Si bien está algo claro que el realtiempo se divide usery sysno está claro qué representan.

En mi script estoy comparando [1] C ++ y Perl uno contra el otro para ver la diferencia, y me gustaría saber qué datos realmente estoy obteniendo. Un ejemplo de salida es:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

¿Podría alguien explicar qué le dice el usuario al formato de tiempo predeterminado? Soy un novato en Linux, así que no asumas demasiado.

[1] Curiosamente, aunque C ++ es mucho, mucho más rápido que Perl en mi punto de referencia con respecto al realtiempo, los systiempos no difieren mucho, ya que C ++ realmente usa más systiempo que Perl. Por eso quiero saber qué significan

Alrekr
fuente

Respuestas:

15

De wikipedia :

  • Hora del usuario vs Hora del sistema

El término "tiempo de CPU del usuario" puede ser un poco engañoso al principio. Para ser claros, el tiempo total de la CPU es la combinación de la cantidad de tiempo que la (s) CPU (s) pasaron realizando alguna acción para un programa y la cantidad de tiempo (s) que la (s) CPU (es) pasaron realizando las llamadas del sistema al núcleo en nombre del programa. Cuando un programa recorre una matriz, está acumulando tiempo de CPU del usuario. Por el contrario, cuando un programa ejecuta una llamada del sistema, como exec o fork, está acumulando tiempo de CPU del sistema.

  • Tiempo real vs tiempo de CPU

El término "tiempo real" en este contexto se refiere al tiempo transcurrido del "reloj de pared", como el uso de un cronómetro. El tiempo total de CPU (tiempo de usuario + tiempo de sistema) puede ser mayor o menor que ese valor. Debido a que un programa puede pasar algún tiempo esperando y no ejecutándose en absoluto (ya sea en modo de usuario o en modo de sistema), el tiempo real puede ser mayor que el tiempo total de la CPU. Debido a que un programa puede bifurcar a los niños cuyos tiempos de CPU (tanto el usuario como el sistema) se agregan a los valores informados por el comando de tiempo, el tiempo total de la CPU puede ser mayor que el tiempo real.

Konstantinos
fuente
1
No entiendo cómo logré no encontrar ese artículo de Wikipedia. Gracias.
Alrek