viernes, 5 de julio de 2013

Medición del Rendimiento

El tiempo es la medida del rendimiento de un ordenador: el ordenador que ejecuta la misma cantidad de trabajo en el menor tiempo  es el más rápido. El tiempo de ejecución de un programa se mide en segundos por programa. Pero el tiempo puede ser definido de maneras diferentes, dependiendo de lo que se cuente. La definición más sencilla de tiempo se llama tiempo de reloj (wall clock time), tiempo de respuesta (response time) o tiempo transcurrido (elapsed time). Estos términos se refieren al tiempo total que tarda una tarea en completarse, e incluye los accesos a disco, los accesos a memoria, las actividades de entrada/salida (E/S) y la carga adicional introducida por el sistema operativo.

      Sin embargo, a menudo los computadores son de tiempo compartido, y un procesador podría trabajar en diferentes programas simultáneamente. En estos casos, el sistema podría intentar optimizar la productividad más que tratar de minimizar el tiempo de ejecución de un programa  concreto. Por lo tanto, a menudo se querrá distinguir entre el tiempo transcurrido y el tiempo que un procesador está trabajando para nosotros. El tiempo de ejecución de CPU o simplemente tiempo de ejecución, el cual reconoce esta distinción, es el tiempo que la CPU dedica a ejecutar una tarea concreta y no incluye el tiempo perdido en las actividades de E/S o en la ejecución de otros programas. (Sin embargo, hay que recordar que el tiempo de respuesta que un usuario se encuentra será el tiempo transcurrido para el programa, no el tiempo de CPU.) Además, el tiempo de CPU puede ser dividido en el tiempo de CPU consumido por el programa, llamado tiempo de CPU del usuario, y el tiempo de CPU consumido por el sistema operativo, llamado tiempo de CPU del sistema. La diferenciación entre los tiempos de CPU del usuario y del sistema es difícil de realizar de una manera precisa ya que a menudo es complicado el asignar la responsabilidad de las actividades del sistema operativo a un programa de usuario más que a otro.

      El desglose del tiempo de ejecución de una tarea queda reflejado con el comando de Unix time el cual, por ejemplo, podría retornar lo siguiente:

90.7u  12.9s  2:39  65%

El tiempo de CPU de usuario es 90,7 segundos, el de sistema es 12,9 segundos, el tiempo total transcurrido es 2 minutos y 39 segundos (159 segundos), y el porcentaje del tiempo transcurrido que corresponde a tiempo de CPU es

(90,7 + 12,9) / 159 = 0,65

o el 65%. En este ejemplo, más de una tercera parte del tiempo total de ejecución ha sido consumido esperando la E/S, ejecutando otros programas o ambos.

      A veces, se ignora el tiempo de CPU del sistema cuando se examina el tiempo de ejecución global debido a las imprecisiones cometidas por los sistemas operativos al medir su tiempo de ejecución y a la inexactitud que supone el incluir el tiempo de CPU del sistema cuando se compara el rendimiento de dos máquinas con diferentes sistemas operativos. Por otra parte, el código de sistema en algunas máquinas corresponde a código de usuario en otras, y, como los programas no pueden funcionar sin un sistema operativo que se ejecute por encima de la circuitería, se puede argumentar a favor de usar la suma de los tiempos de CPU del usuario y del sistema como medida del tiempo de ejecución de un programa.

      Por consistencia, mantendremos la distinción entre el rendimiento basado en el tiempo transcurrido y el basado en el tiempo de ejecución de CPU. Usaremos el término rendimiento del sistema para referirnos a tiempo transcurrido en un sistema sin carga, y usaremos rendimiento de CPU para referirnos al tiempo de CPU. Aquí nos centraremos en el rendimiento de la CPU, aunque nuestras argumentaciones sobre la manera de exponer el rendimiento pueden ser aplicadas para el tiempo total de ejecución o para el tiempo de CPU.

      Aunque como usuarios de ordenadores nos importa el tiempo, cuando se examinan los detalles de una máquina es conveniente considerar el rendimiento según otras medidas. En particular, es posible que los diseñadores de computadores quieran considerar una máquina utilizando una medida relacionada con la rapidez con que la circuitería realiza determinadas funciones básicas. Casi todos los ordenadores tienen un reloj que funciona a una frecuencia concreta y determina el momento en que tienen lugar los sucesos en la circuitería. Estos intervalos discretos de tiempo se llaman los sucesos en la circuitería. Estos intervalos discretos de tiempo se llaman ciclos de reloj ( o tics, tics de reloj, periodos de reloj o ciclos). Los diseñadores llaman a la longitud del periodo de reloj tanto el tiempo de un ciclo de reloj completo (p. ej. 2 nanosegundos. o 2 ns) como la frecuencia de reloj (p. ej. 500 megahercios o 500 MHz), que es el inverso del periodo de reloj. 

No hay comentarios:

Publicar un comentario