Preguntas: Moisés E. Ramírez G. | UTM |

El tiempo de ejecución se puede definir de formas distintas dependiendo de lo que queramos contar. La definición más directa de tiempo se denomina tiempo de reloj (wall-clock time), tiempo de respuesta (response time), o tiempo transcurrido (elapsed time).

Esta es la latencia para completar una tarea, incluyendo accesos a disco, accesos a memoria, actividades de entrada/salida, gastos del sistema operativo - todo.

Sin embargo, como en multiprogramación, el CPU trabaja sobre otro programa mientras espera las E/S y, necesariamente, puede no minimizar el tiempo transcurrido de un programa; es necesario un término que tenga en cuenta esta actividad.

El tiempo de CPU reconoce esta distinción y mide el tiempo que el CPU está calculando sin incluir el tiempo de espera para las E/S o para ejecutar otros programas. (Obviamente, el tiempo de respuesta visto por el usuario es el tiempo transcurrido del programa, no el tiempo de CPU.) El tiempo de CPU, además, puede dividirse en:

Estas distinciones están reflejadas en la instrucción «time» de UNIX, que devuelve lo siguiente:
# time ./programa 
user 90.700s
sys  12.900s 
real 2:39m 65%

El tiempo de CPU del usuario es de 90,7 segundos,
el tiempo de CPU del sistema es de 12,9 segundos,
el tiempo transcurrido (tiempo de CPU total) es de 2 minutos y 39 segundos (159 segundos),
y el porcentaje de tiempo transcurrido, que es el tiempo de CPU:
(90,7 + 12,9)/159 aprox. 65%.

Más de un tercio del tiempo ocupado en este ejemplo transcurrió esperando las E/S o ejecutando otros programas, o ambas cosas. Muchas medidas ignoran el tiempo de CPU del sistema debido a la poca precisión de las automedidas de los sistemas operativos y a la injusticia de incluir el tiempo de CPU del sistema cuando se comparan rendimientos entre máquinas con códigos de sistema diferentes. Por otro lado, el código del sistema de algunas máquinas es el código del usuario en otras y ningún programa corre sin que se ejecute el sistema operativo sobre el hardware, lo que es un argumento a favor de utilizar la suma del tiempo de CPU del usuario y del tiempo de CPU del sistema.

En la discusión actual, se mantiene la distinción entre el rendimiento basado en el tiempo transcurrido y el basado en el tiempo de CPU.

El término rendimiento del sistema se utiliza para referenciar el tiempo transcurrido en un sistema no cargado, mientras que el rendimiento del CPU se refiere al tiempo de CPU del usuario en un sistema no cargado.

En este capítulo nos concentraremos en el rendimiento del CPU.