Sistemas Computacionales: evaluación del rendimiento.
Rendimiento en sistemas computacionales. Una frase que como tópico ha sido enorme foco de interés y estudio en los últimos años. Hablar del performance, de cómo encontrar una manera 'correcta' de evaluarlo y qué implicaciones teóricas tiene puede ser todo un reto, dado que el amplio rango de técnicas de mejora del rendimiento empleado por diseñadores de hardware, ha hecho de la evaluación del desempeño algo mucho más complicado. Ahora bien, podríamos hacernos varias preguntas: cuando decimos que un sistema computacional es mejor que otro, ¿a qué nos referimos? ¿Es realmente importante evaluar los sitemas? ¿Qué conocimientos implica esto? Y ¿por qué es importante definir buenas métricas?
Los seres humanos hemos creado las máquinas para resolver problemas, y medir qué tan bien estas desempeñan su trabajo es de vital importancia para ir mejorándolas y poder predecir la carga máxima aceptada (capacity planning). Es por ello que el rendimiento es uno de los factores claves a tener en cuenta a la hora del diseño, desarrollo y configuración o elección de un sistema computacional; haciendo de la evaluación una práctica requerida a lo largo de todo el ciclo de vida de los sistemas computacionales. Tanto así que la utilización de un conjunto de índices de rendimiento cuantificables será más importante a medida que la dimensión del sistema computacional sea mayor y más críticas sean las necesidades de recursos.
Por otro lado, para la apreciación de esos índices es necesario implementar técnicas de evaluación en dos fases diferenciadas. La primera es la fase de diagnóstico, sobre la cual se averiguan las causas de los cuellos de botella que pudiesen afectar el desempeño global del sistema. La segunda es la fase de terapia, en el que se eliminan los factores causantes de los cuellos de botella para hacer el sistema más eficiente (Ver figura 1). No obstante, este proceso no le permitirá al evaluador hacer una mejora del funcionamiento del sistema computacional de manera ilimitada, sino que está acotada, el incremento del rendimiento que se obtiene al mejorar algún módulo o componente del sistema podrá calcularse con la Ley de Amdahl y podrá compararse con otros sistemas haciendo usos de programas de prueba denominados Benchmark.
| Figura 1. |
La Ley de Amdahl prácticamente establece que el cambiar algún componente de ejecución por otro más rápido hará que la mejora obtenida en el rendimiento sea limitada por la fracción de tiempo que este pueda utilizar. Este cambio de componente hará que se puedan diferenciar dos tipos de aceleraciones. La aceleración relativa se refiere a la disminución en el tiempo de acabado de un trabajo luego de haber hecho el cambio del componente; y la aceleración global del sistema es la relación entre los tiempos de ejecución de una misma tarea cuando se modifican los atributos de algunos de los elementos que operan en ella.
Esta ley ayuda a cuantificar la mejoría de un funcionamiento global del sistema, la cual se obtendrá dependiendo del incremento en la velocidad o rendimiento del elemento que reemplazará al ya existente como de la porción de tiempo en que se utilizará. También nos permitirá adecuar la distribución de recursos para la mejora de la relación rendimiento/costo del mismo.
Un ejemplo sería suponer como tiempo total que usa un componente como Ts, durante los que no como Tn, y la suma de estos dos como To, de la misma manera en que se ilustra en la figura 2. Asumiendo que luego de haber hecho la sustitución del componente, el sistema tiene una acleración relativa de valor k (ver figura 3), entonces el cociente entre el tiempo original To y el mejorado resulta ser como en la figura 4, expresión conocida como Ley de Amdahl.
| Figura 2. |
| Figura 3. |
| Figura 4. |
Una técnica de uso generalizada para evaluar y analizar el rendimiento de un sistema computacional ya puesto a funcionar es la monitorización de este por medio de software que detecte los estados de un sistema, es decir, que recolecte datos del estado de ciertos componentes en ciertos instantes de tiempo, detectando así los cuellos de botella que influyen directamente en el rendimiento final del sistema.
Otro método es la referenciación con índices relacionados con el tiempo de ejecución de ciertos programas de prueba o Benchmark, los cuales tienen características en cierto sistema computacional. Estos se crean con el objetivo de testear las características de cómputo de cierto sistema, para así conocer las prestaciones de este, las relaciones entre ellas y su costo.
Dado que no existe un criterio único o una lista de prioridades a la hora de hacer la evaluación de rendimiento, es recomendable hacer una valoración cuantificable (y no cualitativa) de los diversos índices o medidas de rendimiento. Uno de ellos es el tiempo de respuesta, el cual abarca el tiempo total desde el principio hasta el final de la actividad (tiempo de ejecución de un programa o tiempo de acceso a un disco); y otro es la productividad (throughput) o cantidad de trabajo hecho por unidad de tiempo (por ejemplo programas ejecutados por hora). Entre mayor sea la dimensión del sistema computacional, más importante será el establecimiento de estos índices.
En cuanto a las características básicas que se miden usualmente en los sistemas computaciones son: la cuenta, la duración (la cual ya se mencionó brevemente) y el tamaño. Para ilustrarlo: el número de veces en que un procesador comienza un requerimiento de entrada, salida, la duración que una petición tarda en ser completada y la cantidad de bits transferidos. Todos estos ítems podemos usarlos para derivar el valor actual que deseamos usar para describir el rendimiento del sistema computacional a evaluar. Con todo, la métrica escogida como criterio o indicador del desempeño de un sistema debe tener propiedades como la linealidad, confiabilidad, repetitividad, facilidad de medir y consistencia.
Las métricas de evaluación de rendimiento se pueden categorizar en tres diferentes clases: 1. Lower is Better (LB): valor más bajo es el mejor. Un ejemplo es el tiempo de respuesta. 2. High is Better (HB): valor más alto es el mejor. Un ejemplo es la productividad. 3. Nominal Is Best (NB): el valor nominal es el mejor. Un ejemplo es la utilización (porcentaje usado de los medios que disponemos). Estas tres categorías listadas abarcan las ilustradas en la figura 5.
| Figura 5. |
Todas las técnicas que se mencionaron en este post son unas de las herramientas que le pueden ayudar al usuario a visualizar y hacer un análisis de rango de valores, seleccionando en cada momento todos los factores que se considere de interés en la situación. Por supuesto hay más métodos y herramientas para monitorizar o hasta referenciar con sistemas reales o modelados, pero de esos hablaremos en otro post. ¡Hasta la próxima!
REFERENCIAS:
COMPUTER ORGANIZATION AND DESIGN: The hardware / Software Interface
https://www.lehigh.edu/~inimr/computer-basics-tutorial/computersperformance.htm
Introducción a la evaluación de rendimiento
Destaca bastante la explicación tan completa sobre la Ley de Andahl, ya que no se limita a explicar en que consiste, sino que describe la teoría detrás de ella, incluso se apoya con graficas para ayudar al lector a comprenderla. Bastante completa la descripción de las métricas, ya que menciona varias y a que se enfocan y las muestra en una grafica fácilmente comprensible que deja muy claro los enfoques y métricas existentes.
ResponderEliminarEs interesante la gran cantidad de factores que se tienen en cuenta a la hora de evaluar el rendimiento de un equipo de computo, como herramientas desde los Benchmark, que al parecer facilitan mucho este tipo de tareas y además, no solo herramientas de software, también otros conocimientos teóricos como la Ley de Amdahl.
ResponderEliminarExcelente articulo no tenía casi nocion con respecto a los conceptos teóricos desarrollados acerca de la evaluacion del rendimiento de los sistemas, ya que desconocía la temática relacionada a Técnicas de Evaluación, Medidas de Rendimiento y la Ingeniería de Rendimiento. Gracias por el aporte, y buen trabajo.
ResponderEliminarEs muy interesante lo comentado en el blog, sobre como un proyecto se puede ver afectado por la evaluación de rendimientos, siendo así, que puede cambiar lo planteado o mejorar el proyecto en si, lo cual es súper importante, ya que en base a esto un proyecto puede tener éxito o no.
ResponderEliminarQue importante analizar este tipo de formulas pues nos ayuda a entender q tipo de rendimiento estoy buscando dados los procesos que puedo llegar a manejar
ResponderEliminarConocer las leyes y las funciones de estos sistemas de computación, es de vital importancia porque nos ayudan a darle a nuestros equipos un buen manejo, para que así tengan un mejor rendimiento.
ResponderEliminarCual es el error de la Ley de Amdahl enfocado a un análisis numérico
ResponderEliminarHola Paula!! No sé si te refieras al hecho de cometer un error al momento de aplicar la ley de Amdahl, en ese caso, un error cometido comúnmente por arquitectos de computadores es suponer que al
Eliminaraplicarse una mejora en el rendimiento de un componente, el sistema computacional mejorará globalmente y de manera proporcional. Cualquier otra duda quedo atenta!!
ResponderEliminarLa búsqueda de un rendimiento optimo y adecuado según las necesidades solicitadas, generan un objetivo al cual llegar, no obstante, la viabilidad para alcanzarlo, según lo expuesto, es en primera medida la fase del diagnostico con la cual no solo se busca identificar los problemas de rendimiento, también busca encontrar sus causas. En el post se enumeran tres métricas de evaluación de rendimiento, mi pregunta es: ¿En que circunstancias cada categoría es viable? ¿Cuál sería para cada una sus desventajas? .
Hola Nikolee!! Buena deducción. En cuanto a tu cuestión, las tres métricas de evaluación por las que preguntas y que fueron mencionadas en el post tienen como objetivo clasificar, así que si lo que se desea es hacer es una evaluación de rendimiento completa lo ideal sería tenerlas en cuenta a todas, pero si deseas hacer una evaluación parcial de ciertos componentes pues la desventaja será eso mismo, que solo tendrás una evaluación de una parte de tu sistema computacional. Cualquier duda que tengas puedes responder por acá o escribirme a mi correo personal. Espero haberte ayudado!!
Eliminar