jueves, noviembre 16, 2006

Tácticas de desempeño



El desempeño, que puede ser medido en términos de LATENCIA (cuanto tiempo toma un servicio desde que recibe la petición, hasta que la petición es completada), tiempo de respuesta o throughput como lo ve el usuario, es muy importante en todos los sistemas. A la fecha, existen muchas teorías para manejar el desempeño, tales como teoría de encolado, teorías de planeación en tiempo real, redes de petri, etc.

Normalmente, se han usado en diseño de dispositivos de hardware, tales como switches. Con la llegada del desarrollo de software basado en componentes, la arquitectura de software, los ORBs, diseñar software para que tengan buen desempeño se ha convertido en un gran reto.

Las tácticas del SEI para desempeño caen en 3 categorías: Demanda de recursos, Gestión de Recursos y Arbitramiento de Recursos.

Para demanda de recursos, la primera táctica es incrementar la eficiencia computacional, esto no quiere decir comprar una maquina mas grande, sino mejorar los algoritmos en las áreas criticas (esto para no pelear con los clientes).

La segunda táctica es reducir sobreesfuerzo computacional, ejemplo, usar llamados binarios en vez de RMI.

La tercera táctica es manejar las tasas de eventos, por ejemplo, reducir la frecuencia de muestreo o por medio de cerrados parciales.

La cuarta táctica es controlar la frecuencia de muestreo.

Para la gestión de recursos la primera táctica es introducir concurrencia. La segunda táctica es mantener múltiples copias de los datos, por ejemplo, utilizando esquemas de caching.

La tercera táctica es incrementar la cantidad de recursos disponibles, por ejemplo, procesadores más rápidos, procesadores adicionales, memoria adicional, y redes más rápidas.

Para el arbitramiento de recursos, la táctica es definir políticas de planeación, como FIFO, planeamiento con prioridad fija, planeamiento estático.

Cada una de estas tácticas puede ser resuelta por software, ej. Cuando se quiere reducir la tasa de eventos se puede crear un filtro que nos permita controlar las tasas de llegada de peticiones (aunque pueden perderse peticiones).