¿Cuáles son las diferencias entre la hora del reloj de pared, la hora del usuario y la hora de la CPU?

14

Estamos ejecutando trabajos informáticos con GridEngine. Cada trabajo vuelve 3 veces diferentes:

  • Reloj de pared
  • Tiempo de usuario
  • Tiempo de CPU

¿Cuáles son las diferencias entre estos tres? ¿Cuál de estos tres es el más adecuado para comparar el rendimiento de dos aplicaciones / scripts?

Peter Smit
fuente

Respuestas:

18

El tiempo del reloj de pared es la cantidad real de tiempo necesario para realizar un trabajo. Esto es equivalente a cronometrar su trabajo con un cronómetro y el tiempo medido para completar su tarea puede verse afectado por cualquier otra cosa que el sistema esté haciendo en ese momento.

El tiempo del usuario mide la cantidad de tiempo que la CPU pasó ejecutando su código. Esto no cuenta nada más que pueda estar ejecutándose, y tampoco cuenta el tiempo de CPU gastado en el núcleo (como en el caso de E / S de archivo).

El tiempo de CPU mide la cantidad total de tiempo que la CPU pasó ejecutando su código o cualquier cosa solicitada por su código. Esto incluye el tiempo del kernel.

La medición del "tiempo de usuario" es probablemente la más apropiada para medir el desempeño de diferentes trabajos, ya que se verá menos afectada por otras cosas que suceden en el sistema.

Greg Hewgill
fuente
3

De Wikipedia:

El término "tiempo de CPU del usuario" puede ser un poco engañoso al principio. Para que quede claro el tiempo total (tiempo real de la CPU), es la combinación de la cantidad de tiempo que la CPU pasa realizando alguna acción para un programa y la cantidad de tiempo que la CPU pasa 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

El tiempo del reloj de pared es el tiempo real que tarda una computadora en completar una tarea. Es la suma de tres términos: tiempo de CPU, tiempo de E / S y el retraso del canal de comunicación (por ejemplo, si los datos están dispersos en varias máquinas). A diferencia del tiempo de CPU, que mide solo el tiempo durante el cual el procesador está trabajando activamente en una determinada tarea, el tiempo de pared mide el tiempo total para que se complete el proceso. La diferencia entre los dos consiste en el tiempo que pasa debido a demoras programadas o esperando que los recursos estén disponibles.

Maxwell
fuente