next up previous contents
Next: 2.4.4 Implementación Up: 2.4.3 Clusters tipo Beowulf Previous: 2.4.3.1 Historia   Índice General

2.4.3.2 Características

Un Beowulf puede definirse como ``una clase de computadora masivamente paralela de alto rendimiento construida primordialmente con componentes comerciales ampliamente disponibles''. En realidad, como se vio anteriormente, esto consiste en un grupo de computadoras personales dedicadas a ejecutar en conjunto tareas de cómputo que requieren alto rendimiento.

Ya que las computadoras personales compatibles con IBM, basadas en procesadores Intel x86 y con alguna variante de red de área local Ethernet, son las más comunes en el mercado, la mayoría del desarrollo de Beowulfs se ha realizado bajo esta plataforma; sin embargo, la tecnología básica de un Beowulf puede emplearse bajo cualquier arquitectura de cómputo personal.

Un Beowulf consta de una serie de computadoras personales, o nodos. Cada una de estas computadoras es un sistema completo e independiente, contando con su propio procesador, memoria y almacenamiento secundario. Estas computadoras se enlazan a través de alguna tecnología de red local disponible comercialmente. Gracias a su amplia disponibilidad, las redes tipo Ethernet, en sus tres variantes (Ethernet, Fast Ethernet y Gigabit Ethernet) son las más utilizadas, aunque también se pueden utilizar otro tipo de conexiones, como HIPPI (HI-performance Parallel Port Interface) y Myrinet (una tecnología de red de alta velocidad (2 Gbps), con conmutación y bajo tiempo de latencia (9 $\mu s$) creado por la empresa Myricom).

Cada uno de los nodos de un Beowulf funciona independientemente bajo algún sistema operativo, que tradicionalmente es alguna variante de Unix, y en la mayoría de los casos es el sistema operativo Linux.

Hay varios factores que determinan que Linux sea el sistema operativo más utilizado en un Beowulf. El desarrollo del primer Beowulf se hizo bajo el sistema Linux. Esto fue debido a la amplia disponibilidad de Linux, así como de su código fuente, que permitía a los investigadores del proyecto Beowulf realizar las modificaciones necesarias para alcanzar sus metas de rendimiento. De hecho, los controladores Ethernet que se utilizan, aún actualmente, bajo Linux, son derivados de los controladores creados por Donald Becker para el proyecto Beowulf, y Becker está aún muy involucrado con el desarrollo de controladores Ethernet de alto rendimiento, pues estos son básicos para el rendimiento en un cluster. Por otro lado, el desarrollo constante de Linux hace que este sistema suela tener un buen desempeño dentro de cada nodo, así como una gran estabilidad. Ya que el desarrollo normal de Linux sigue la evolución de las arquitecturas de cómputo personal más populares, no se requiere un esfuerzo adicional para mantener el sistema operativo al día con los avances tecnológicos. Finalmente, el utilizar un sistema tan difundido reduce la curva de aprendizaje de quienes desean crear un Beowulf por sí mismos.

El componente final para un Beowulf es el mecanismo que las aplicaciones utilizan para comunicación y cooperación entre nodos. Este vacío es llenado por implementaciones de los dos grandes estándares de comunicación por paso de mensajes, PVM y MPI. Una de las plataformas soportadas por PVM es Linux, empleando comunicación a través de TCP/IP. Por otro lado, varias implementaciones de MPI, entre ellas MPICH y LAM/MPI, soportan Beowulfs utilizando Linux como el sistema operativo. De esta manera, se aprovecha toda la experiencia previa de los programadores utilizando paso de mensajes, y se asegura un gran nivel de compatibilidad, portabilidad e interoperabilidad de las aplicaciones paralelas que se desarrollen.

En general la organización de un Beowulf suena similar a la de un NOW. Existen, sin embargo, algunas características que diferencían claramente estos dos tipos de clusters. Los nodos de un Beowulf no realizan ninguna tarea que no sea relativa al cluster. También es necesario contar con una red dedicada a comunicación entre nodos del cluster. Estas dos características proporcionan una serie de ventajas. La primera es un mayor rendimiento ya que los nodos y la red no realizan tareas ajenas al cómputo del cluster. La segunda es una mayor predecibilidad del comportamiento tanto de los nodos como de la red; así se eliminan cargas impredecibles por procesos extraños en los nodos, y no se tienen problemas de latencia en la red pues en esta no existe más tráfico que el relativo a comunicaciones internodos. La restricción también redunda en una mayor facilidad de uso pues todo el trabajo se realiza sobre un nodo central, y deben existir mecanismos para distribución de programas y ejecución que sean transparentes al usuario. Adicionalmente se facilita el trabajo en cuanto a seguridad, ya que el nodo central actúa como ``firewall'' protegiendo a la red del cluster y reduciendo la necesidad de implementar políticas de seguridad en los nodos como tales.

Una característica importante de un Beowulf es que las actualizaciones de hardware más comunes, como son actualización de procesador, incremento de memoria, o mejora de velocidad de transferencia en la red, no cambian el modelo de programación utilizado. Por lo tanto, los usuarios de estos sistemas pueden contar con mejor compatibilidad con equipos futuros.

Dentro de la clasificación de equipos de cómputo paralelo, los Beowulf se pueden visualizar en un punto intermedio entre los equipos MPP propiamente dichos y las NOW. Un Beowulf comúnmente tiene menos procesadores que un equipo MPP; también, el mecanismo o bus de interconexión entre nodos es de menor rendimiento en un Beowulf; se tiene mayor tiempo de latencia y menor ancho de banda. Por otro lado, las NOW buscan utilizar la capacidad de cómputo no aprovechada en una red, mientras se busca que las características de la red no afecten la realización de cálculos. En una plataforma NOW se tienen consideraciones que no existen en un Beowulf, como son seguridad, balanceo de carga por trabajos extraños realizados en las estaciones, y latencia y ancho de banda variables en las comunicaciones entre nodos.


next up previous contents
Next: 2.4.4 Implementación Up: 2.4.3 Clusters tipo Beowulf Previous: 2.4.3.1 Historia   Índice General
2002-05-15