El manual para el

clustering con openMosix

---------------------------------------------------------------------------------------

miKeL a.k.a.mc2 & Kris Buytaert

Versión 1.0

6 de septiembre 2004

Este manual ha estado posible gracias a las importantes contribuciones de:

Carlos Manzanedo y Jordi Polo. Ambos han aportado texto en los capítulos sobre generalidades de la supercomputación. También del apéndice sobre GNU/Linux. Ingenieros Informáticos por la Universidad de Alcalá de Henares (Madrid).
Extractos de la documentación de su proyecto de final de carrera Clusters para Linux (septiembre 2001).

David Santo Orcero (irbis). Aportaciones desde su inmenso archivo personal que cubren las secciones de instalación, ajustes y herramientas de usuario de openMosix. La relevancia de dichas aportaciones se deben a que es el desarrolaldor de las mismas.
Ingeniero Informático por la Escuela Técnica Superior de Ingeniería Informática de Málaga.

Asimismo agradezco las colaboraciones de:

Ana Pérez Arteaga correcciones ortográficas

C. W. Strommer traducción de las PMF (preguntas más frecuentes)

Jaime Perea capítulo sobre PCMCIA

Marcelo Stutz acceso a openMosixview con `ssh` y el Stress-Test

Ross Moore gracias por contestar todas mis dudas sobre `latex2html`

» ABSTRACT
Los sistemas cluster hace años que fueron diseñados, la computación paralela y distribuida no es ninguna novedad en el año 2004. No obstante no había sido hasta ahora que el usuario había empezado a necesitarlas. La tecnología del silicio está llegando a sus postrimerías y los computadores cuánticos aún están en fase de desarrollo.

Mientras grandes empresas, instituciones y universidades selectas disponen -desde hace años- de grandes computadoras superescalares, el usuario había estado relegado -al menos hasta ahora- a máquinas SMP en el mejor de los casos.

Pero todo esto está canviando: la demanda de rendimiento no puede ser suplida por la arquitectura monoprocesador y menos por los x86 compatibles. La solución que han adoptado los fabricantes ha estado saltar a arquitecturas de 64 bits o aumentar más aún la frecuencia de bus. Son desplazamientos del mismo problema en el tiempo.

En este marco toman mayor importancia los clusters, concebidos para proporcionar cálculo paralelo con componentes habituales en el mercado. Estaciones de trabajo conectadas por red trabajando de forma cooperativa que permiten aumentar notablemente las prestaciones de todas ellas por separado.

En este documento se han desarrollado diversos métodos para llegar a construir -y mantener- un cluster openMosix a partir de cero, es decir, desdel hardware.

La documentación aportada deja claras las grandes capacidades tecnológicas de openMosix, que se podrán aprovechar en proyectos de pequeña, mediana o gran dimensión gracias a su escalabilidad y flexibilidad. También se enfatiza en la importancia de la aplicación de las tecnologías de programario libre como mejor solución para poner en manos del usuario las mejores herramientas que posibilitarán un futuro enriquecedor tanto tecnológica como socialmente. Este entorno es el que mejor defiende la propia congruencia de intenciones ya sea en la lógica docente, donde priman -o deberían hacerlo- el conocimiento y su libre difusión, o dentro de la lógica empresarial -donde se prioriza el beneficio al menor coste posible-.

PALABRAS CLAVE: supercomputación, cluster, gnu/linux, openmosix, ssi, diskless.

- Índice de Figuras
- Índice de Tablas
- Índice General
- 1. Presentación
  - 1.1 PRELIMINARES
    - 1.1.1 Sobre este documento
    - 1.1.2 Limitación de responsabilidad
    - 1.1.3 Política de distribución
    - 1.1.4 Nuevas versiones de este documento
    - 1.1.5 Mantenimiento
  - 1.2 ORGANIZACIÓN
- 2. Teoria de la supercomputación
  - 2.1 INTRODUCCIÓN
    - 2.1.1 Visión histórica
    - 2.1.2 Problemas que se pueden resolver con sistemas paralelos
    - 2.1.3 Soluciones actuales que se dan a dichos problemas
  - 2.2 PARALELISMO
    - 2.2.1 Definiciones previas
    - 2.2.2 Límites en el hardware
    - 2.2.3 Límites del software
    - 2.2.4 Granularidad del paralelismo
    - 2.2.5 El problema de la transparencia
    - 2.2.6 Paralelización de programas
    - 2.2.7 Ejemplos de problemas paralelizables
  - 2.3 ARQUITECTURAS
    - 2.3.1 Soluciones hardware
    - 2.3.2 Soluciones software
  - 2.4 SISTEMAS DISTRIBUIDOS
    - 2.4.1 Concepto de sistema distribuido y sistema operativo distribuido
    - 2.4.2 Necesidad de sistemas distribuidos
    - 2.4.3 Desventajas: el problema de la transparencia
    - 2.4.4 La tendencia a lo distribuido
- 3. Implementación de Sistemas Distribuidos
  - 3.1 SISTEMAS OPERATIVOS
    - Introducción
    - 3.1.1 Procesos y Scheduling
    - 3.1.2 Compartición de recursos
    - 3.1.3 Comunicación entre procesos
    - 3.1.4 La importancia de los sistemas de ficheros
    - 3.1.5 Entrada salida
  - 3.2 LA IMPORTANCIA DE LA RED
    - 3.2.1 La importancia del sistema de comunicación
    - 3.2.2 Topologías de red
    - 3.2.3 Tecnologías de red
    - 3.2.4 Protocolos utilizados a nivel de red
    - 3.2.5 Protocolos utilizados a nivel de transporte (UDP/TCP)
    - 3.2.6 Diseño de redes
    - 3.2.7 Conclusiones
- 4. Clusters
  - 4.1 CLUSTERS. NOCIONES GENERALES
    - 4.1.1 El concepto de cluster
    - 4.1.2 Características de un cluster
    - 4.1.3 Clasificación según el servicio prioritario
    - 4.1.4 Clusters HP: alto rendimiento
    - 4.1.5 Clusters HA: alta disponibilidad
    - 4.1.6 Clusters HR: alta confiabilidad
  - 4.2 CLUSTERS HA
    - 4.2.1 Introducción
    - 4.2.2 El interés comercial
    - 4.2.3 Conceptos importantes
    - 4.2.4 Soluciones libres
    - 4.2.5 LVS (Linux Virtual Server)
  - 4.3 CLUSTERS HP
    - 4.3.1 Conceptos importantes: migración y balanceo)
    - 4.3.2 PVM y MPI
    - 4.3.3 Beowulf
    - 4.3.4 openMosix
    - 4.3.5 TOP 500
  - 4.4 REQUERIMIENTOS Y PLANTEAMIENTOS
    - 4.4.1 Requerimientos hardware
    - 4.4.2 Lineas básicas en la configuración del hardware
    - 4.4.3 Planteamientos del cluster
- 5. Clustering con openMosix
  - 5.1 ?`QUÉ ES REALMENTE OPENMOSIX?
    - 5.1.1 Una muy breve introducción al clustering
    - 5.1.2 Una aproximación histoórica
  - 5.2 CARACTERISTICAS DE OPENMOSIX
    - 5.2.1 Pros de openMosix
    - 5.2.2 Contras de openMosix
    - 5.2.3 Subsistemas de openMosix
    - 5.2.4 El algoritmo de migración
  - 5.3 INSTALACIÓN DE UN CLUSTER OPENMOSIX
    - 5.3.1 Instalación del kernel de openMosix
    - 5.3.2 Instalación de las herramientas de área de usuario
    - 5.3.3 Configurando la topología del cluster
    - 5.3.4 Las herramientas de área de usuario
    - 5.3.5 Optimizando el cluster
  - 5.4 ADMINISTRACIÓN DEL CLUSTER
    - 5.4.1 Administración básica
    - 5.4.2 Configuración
    - 5.4.3 Las herramientas de área de usuario
    - 5.4.4 Detección automática de nodos
  - 5.5 AJUSTES EN EL CLUSTER
    - 5.5.1 Testeo de rendimiento con Stress-Test
  - 5.6 OPENMOSIXVIEW
    - 5.6.1 Instalación
    - 5.6.2 Utilizando openMosixview
    - 5.6.3 openMosixprocs
    - 5.6.4 openMosixcollector
    - 5.6.5 openMosixanalyzer
    - 5.6.6 openMosixhistory
    - 5.6.7 openMosixview + SSH2
    - 5.6.8 FAQ de openMosixview -preguntas más frecuentes
  - 5.7 PROBLEMAS MÁS COMUNES
    - 5.7.1 No veo todos los nodos
    - 5.7.2 FAQ de openMosix -preguntas más frecuentes-
  - 5.8 PARA MÁS INFORMACIÓN
- 6. openMosix a fondo
  - 6.1 The openMosix internals (Moshe Bar)
    - Aspectos generales de openMosix
    - Detalles de openMosix
    - La implementación
    - Muestreo de información
  - 6.2 MODELIZACIÓN MATEMÁTICA DE PROCEDIMIENTOS
    - Formalización de recursos. Objectivo de rendimento
    - Optimizando la planificación
    - Modelo simplificado de ponderación
  - 6.3 `./arch/*`
    - 6.3.1 config.in
    - 6.3.2 defconfig
    - 6.3.3 entry.S
    - 6.3.4 i387.c
    - 6.3.5 ioport.c
    - 6.3.6 offset.c
    - 6.3.7 ptrace.c
    - 6.3.8 signal.c
    - 6.3.9 vm86.c
  - 6.4 `./Documentation/*`
  - 6.5 `./drivers/*`
  - 6.6 `./fs/*`
  - 6.7 `./hpc/*`
    - 6.7.1 badops.c
    - 6.7.2 balance.c
    - 6.7.3 mig.c
    - 6.7.4 info.c
    - 6.7.5 comm.c
    - 6.7.6 config.c
    - 6.7.7 load.c
    - 6.7.8 remote.c
  - 6.8 `./include/*`
    - 6.8.1 hpc.h
  - 6.9 `./init/*`
    - 6.9.1 main.c
  - 6.10 `./ipc/*`
    - 6.10.1 shm.c
  - 6.11 `./kernel/*`
  - 6.12 `./lib/*`
    - 6.12.1 rwsem.c
    - 6.12.2 rwsem-spinlock.c
  - 6.13 `./mm/*`
  - 6.14 `./net/*`
  - 6.15 EL API DE OPENMOSIX
- 7. Tutoriales útiles para casos especiales
  - 7.1 Nodos sin discos
    - 7.1.1 Componentes hardware requeridos
    - 7.1.2 Componentes hardware prescindibles
    - 7.1.3 Ventajas e inconvenientes
    - 7.1.4 Croquis de la arquitectura
    - 7.1.5 Diálogo de comunicación
    - 7.1.6 Servicios requeridos
    - 7.1.7 Configuración de los servicios requeridos
  - 7.2 ROMs para arranque sin discos
    - Arranque del cliente desde chip EPROM
    - Arranque del cliente desde disquete
    - Generando imagen para RPL
    - Generando la rom para tagged image
  - 7.3 Live Linux CD! Funcionando desde cdrom
    - 7.3.1 Consideraciones previas
    - 7.3.2 Dispositivos ramdisk en linux
    - 7.3.3 Modificaciones a linux
    - 7.3.4 Creando el cdrom
    - 7.3.5 Últimos detalles
  - 7.4 Referencias
- 8. Apéndices
  - 8.1 APÉNDICE A: Aplicaciones funcionando, o no
    - Programas que funcionan
    - Programas que NO funcionan
  - 8.2 APÉNDICE B: Salidas de comandos y ficheros
    - 8.2.1 `lspci`
    - 8.2.2 /proc/bus/pci/devices
    - 8.2.3 /etc/mtab y `df`
    - 8.2.4 /etc/lilo.conf
    - 8.2.5 `syslinux.cfg`
    - 8.2.6 `rpld.conf`
    - 8.2.7 `dhcpd.conf`
  - 8.3 APÉNDICE C: Acrónimos
- 9. GNU Free Documentation License
  - 9.1 PREAMBLE
  - 9.2 APPLICABILITY AND DEFINITIONS
  - 9.3 VERBATIM COPYING
  - 9.4 COPYING IN QUANTITY
  - 9.5 MODIFICATIONS
  - 9.6 COMBINING DOCUMENTS
  - 9.7 COLLECTIONS OF DOCUMENTS
  - 9.8 AGGREGATION WITH INDEPENDENT WORKS
  - 9.9 TRANSLATION
  - 9.10 TERMINATION
  - 9.11 FUTURE REVISIONS OF THIS LICENSE
- Bibliografía
- Sobre este documento...