El problema del equilibrio de carga (I)

El problema del equilibrio de carga de trabajo entre los nodos que componen una arquitectura de memoria distribuida (ya hemos hablado de este tipo de sistemas, clusters y Grids en varias entradas pasadas) es uno de los que más impacto tiene en el rendimiento del sistema. Una distribucón inadecuada de las tareas entre los distintos nodos del sistema puede producir una situación de desequilibrio en la que algunos nodos estén muy cargados mientras que otros estén muy poco cargados o incluso desocupados. Y este mal reparto de la carga puede influir muy negativamente en el tiempo de respuesta de las aplicaciones en el sistema.

Los algoritmos de equilibrio de carga tienen como objetivo repartir las tareas que se ejecutan en el sistema de manera que cada nodo ejecute una carga proporcional a su capacidad de cómputo y se optimice la utilización de los recursos.

Hay que diferenciar estos algoritmos de los de compartición de carga, cuyo objetivo es un poco más simple puesto que sólo aseguran que en ningún momento va a haber tareas esperando para ejecutarse en un nodo mientras que otro está inactivo. Y también hay que diferenciarlos de los algoritmos de planificación, que no sólo deciden en qué nodo debe ejecutarse una tarea sino también en qué momento.

Los algoritmos de equilibrio de carga pueden clasificarse en primera instancia en dos grandes categorías, algoritmos estáticos y dinámicos.Los algoritmos estáticos asignan los procesos a los nodos del sistema en tiempo de compilación mientras que los algoritmos dinámicos realizan esa asignación en tiempo de ejecución.

La principal ventaja de los algoritmos estáticos es que no consumen recursos del sistema durante la ejecución de las aplicaciones y por lo tanto no suponen ninguna penalización en su rendimiento. Pero se basan en información a priori sobre los procesos que se van a ejecutar y sobre el estado del sistema. Por lo tanto no son adecuados para sistemas muy dinámicos como los basados en clusters de computadores o en tecnología Grid.

En estos casos es imprescindible la utilización de algoritmos dinámicos, ya que en la mayor parte de los casos no se podrá prever la carga de trabajo que va haber en el sistema ni cómo va a variar a lo largo del tiempo. Los algoritmos dinámicos son capaces de adaptarse a estas variaciones distribuyendo la carga en función del estado del sistema en cada momento. Aunque hay que tener en cuenta que estos algoritmos consumen recursos del sistema en tiempo de ejecución y por lo tanto, siempre hay que valorar la penalización que esta sobrecarga introduce en el rendimiento del sistema.

No hay comentarios: