Evaluación de Rendimiento de Sistemas Computacionales
Cuando se dice que un computador tiene mejor rendimiento que otra, surge la pregunta ¿A qué nos referimos? Si estuviéramos ejecutando un programa en dos computadoras diferentes, diríamos que la más rápida seria la cual ejecutara mas rápido, si se estuviera ejecutando un centro de procesamiento de datos, podríamos decir que la más rápida fue la que ejecuto mas trabajos durante cierto tiempo establecido; las personas normales que usan una computadora están interesadas en reducir el tiempo de inicio y finalización de una tarea (tiempo de ejecución), los administradores de los Datacenter están interesados en aumentar el throughput o bandwidth (la cantidad de trabajos realizados en un tiempo).
Por lo que será necesario diferentes métricas de rendimiento, del mismo modo diferentes conjuntos de aplicaciones para hacer comparaciones (benchmark) entre computadoras que son las que se centran mas en el tiempo de respuesta en comparación con los servidores (datacenter) que se centran mas en el throughput, la métrica es la medición, lo que buscamos medir en los computadores es el tiempo mínimo para realizar una trabajo y lo que buscamos medir en un servidor es la capacidad de procesamiento de grandes datos.
Medición del rendimiento: el tiempo es la medida del rendimiento de un computador, el equipo que realiza una cantidad de trabajo en el menor tiempo es la más rápida, el tiempo de ejecución se mide en segundos por programa, el tiempo de respuesta es el tiempo que se requiere para completar una tarea, donde se incluye el acceso al disco duro, a la memoria ram, las actividades de salida y entrada, la sobrecarga en el sistema operativo, y demás acciones. En algunos casos el procesador puede funcionar en varios programas que se ejecutan a la vez, en ese caso lo que se busca es optimizar el rendimiento mas no el tiempo que requiere cada programa.
El tiempo
de ejecución del procesador o tiempo de la CPU es el tiempo que dedica el
procesador para una tarea y que no incluye el tiempo de espera para la entra y
salida o el ejecutar otros programas, recalcar que el tiempo que el usuario
experimenta es el tiempo que tarda el programa mas no el tiempo que ocupa el
procesador; tenemos dos tiempos diferentes en la CPU, el tiempo que usa el
sistema operativo y el tiempo que usa el usuario.
Como es complejo diferenciar los dos tiempos de la CPU, podemos definir los tiempos, el tiempo de CPU que utiliza el usuario es el tiempo que el procesador usa para ejecutar programas del usuario, no se cuenta el tiempo de espera debido a las entradas y salidas o el tiempo utilizado para ejecutar otros programas, para el tiempo que utiliza el sistema operativo, podemos describirlo como el tiempo que emplea el sistema operativo para su administración interna.
Las diferentes
aplicaciones son sensibles a diferentes aspectos cuando medimos el rendimiento
de un sistema informático o computacional; por ejemplo si tenemos aplicaciones
que vamos a ejecutar en servidores, estas dependen en gran parte de las entradas
y las salidas, que a su vez dependen del hardware y del software, el tiempo real
transcurrido o wall clock time es el tiempo de interés, en algunas
aplicaciones, el usuario puede preocuparse por el throughput, el tiempo de respuesta
o incluso puede hacerse una combinación de estos dos como puede ser el
throughput con tiempo de respuesta en el peor de los casos. Para mejorar el
desempeño de un programa es importante tener claro la definición de métrica que
se va a utilizar, y luego buscar y solucionar los posibles cuellos de botellas,
midiendo la ejecución del programa y buscando los posibles cuellos de botella,
esto se hace para mejorar el rendimiento en las partes del sistema.
En el caso de una computadora es importante pensar en el rendimiento en otras métricas, los diseñadores pueden pensar en hacer componentes usando las medidas que se relacionen con la rapidez con la que el hardware puede realizar operaciones o funciones, casi todas las computadoras se construyen usando un reloj que determina cuando ocurre un evento en el hardware, estos intervalos de tiempo se llaman ciclos de reloj, los diseñadores se refieren a la duración de un perdió del reloj como el tiempo para un ciclo de reloj complejo como puede ser ( 150 nanosegundos) y como la frecuencia de un reloj, como puede ser 3.8 GHz, que es el inverso del periodo del reloj.
Ahora hablaremos de las medidas de desempeño:
Capacidad de respuesta: estas medidas son destinado a evaluar qué tan rápido una tarea determinada puede ser logrado por el sistema. Las posibles medidas son el tiempo de espera, la longitud de la cola, etc.
Nivel de uso: estas medidas están destinadas a evaluar qué tan bien los diversos componentes del se está utilizando el sistema. Las posibles medidas son rendimiento y utilización de varios recursos.
Fiabilidad: estas medidas indican qué tan confiable es el sistema a largo plazo.
Productividad: estas medidas indican la eficacia con la que un usuario puede realizar su trabajo.
Para evaluar el rendimiento tenemos varias opciones: modelos analíticos (matemáticos) y modelos de simulación (algoritmos) estos dos son antes de que la maquina exista, ya que ambos tienen limitaciones por la dificultad de explicar mediante fórmulas matemáticas el comportamiento de la maquina y su carga, se usan mas cuando se está desarrollando la máquina.
También existe una tercera alternativa que es con la maquina ya real, para esto se requiere el uso de programas que hagan el benchmark, estos se pueden clasificar en función al ámbito de aplicación, mas concretamente el tipo de recurso que intervienen en el benchmark, por eso podemos clasificarlos en el ámbito de aplicación:
Enteros: aplicaciones donde domina la aritmética entera, con inclusiones a procedimientos de búsquedas, operaciones lógicas.
Transacciones: aplicaciones donde dominan las transacciones online y offline sobre bases de datos.
Punto flotante: calculo numérico con números reales.
También podemos
clasificarlos según la naturaleza del programa:
Programas reales: compiladores, procesadores de texto, permiten diferentes opciones de ejecución y con ello se obtienen medidas precisas.
Kernels: trozos de programas reales, que son buenos para analizar rendimientos específicos de una determinada máquina.
Patrones conjuntos: también llamados benchmark suits, son el conjunto de programas que miden los modos de funcionamiento de la máquina.
Patrones reducidos: también llamados toy benchmark que son programas cuya línea de código es reducida y que tiene resultados desconocidos, son fáciles de introducir y ejecutar en cualquier máquina.
Patrones sintéticos: o synthetic benchmark, es código artificial que no pertenece a ningún programa del usuario y que se usa para determinar perfiles de ejecución.
En conclusión
podemos decir que la evaluación de rendimiento es importante a la hora de
diseñar o incluso comprar software, ya que si necesitamos una mayor velocidad
de procesamiento es conveniente comprar u obtener una CPU con una alta frecuencia
de reloj para que este no tarde tanto en hacer operaciones o las funciones, de
los programas que vamos a ejecutar, incluso es importante tener en cuenta los
otras partes, tratando de buscar cual es la mejor combinación de partes para que
al combinarlas me den el mejor rendimiento de acuerdo al uso que le vamos a
dar, ya sea correr un programa que requiera mucho espacio de memoria o procesar
grandes datos; del mismo modo debemos escoger las partes que mejor nos sirvan
de acuerdo al uso que le daremos, de igual manera, podemos hacer uso de los
programas para hacer un benchkmark de nuestro equipo.
Referencias bibliográficas :
http://wiki.sc3.uis.edu.co/images/3/34/TextBookFull.pdf
http://www.fdi.ucm.es/profesor/jjruz/web2/temas/ec4.pdf

Muy bien explicado, se estructura muy bien que se debe tener en cuenta al momento de saber que se necesita para tener el mejor rendimiento teniendo en cuenta las exigencias que tienen los programas o aplicaciones deseo ejecutar, explica muy bien el rendimiento de la CPU.
ResponderEliminarBastante completo, da entender cuáles son las razones por las cuales es importante evaluar el rendimiento de un equipo.
ResponderEliminarLa manera de explicar del compañero es interesante, complementa lo que he leído también, siempre debemos tener en cuenta el momento en el que se necesite el rendimiento indicado con respecto el software que se vaya a utilizar.
ResponderEliminarEn el articulo podemos ver como medir el rendimiento, ademas de las opciones para llevar acabo esta medición , es decir modelos analíticos (matemáticos), modelos de simulación (algoritmos) o con la maquina, y esta ultima tiene dos tipos según la naturaleza del programa o el ámbito de aplicación. Buena explicación del tema.
ResponderEliminar