Clustering

Clustering mit openMosix

von

Christian Wiese

Stefan Krause

Übersicht

Begriffsdefinitionen

Cluster-Typen

Realisierung

PVM

MPI

openMosix

Demonstration openMosix Cluster

Begriffsdefinitionen

Parallele Datenverarbeitung

Konzept zur Steigerung der Ausführungs-

geschwindigkeit eines Programms durch

Aufteilung des Programms in n Fragmente, die simultan ausgeführt werden können.

Cluster (als Spezialisierung eines VS)

Lose gekoppelter Verbund aus n Rechen-

systemen (Knoten), die parallele Daten-

verarbeitung durchführen.

Cluster-Typen

Fail-over Cluster

Hochverfügbare Dienste

Load-balancing Cluster

Fokus liegt auf Auslastung einzelner Knoten

Verteilung von Anfragen an wenig ausgelastete Knoten.

z.B. bei stark frequentierten Webservern

meistens mehr Knoten als ein Fail-over Cluster

Cluster-Typen

HPC (High Performance Computing) Cluster

Knoten sind auf hohe Performance ausgelegt

Geschwindigkeitsgewinn durch Parallelisierung /

Verteilung von Prozessen auf n Knoten

Realisierung

PVM

MPI

openMosix

PVM – Parallel Virtual Machine

Ermöglicht die kooperative Nutzung einer Menge von Rechensystemen zur Durchführung von nebenläufigen / parallelen Berechnungen in

heterogenen Umgebungen

architekturunabhängig

besteht aus Software-Tools- und Bibliotheken

entstand als Forschungsprojekt

Designziel: Portabilität

PVM - Prinzipien

Benutzer kann Knoten der PVM definieren

für PVM-Applikation ist Abstraktion von der Hardware optional (Bestimmte Tasks können auf der geeignetsten Hardware ausgeführt

werden)

Explizierter Nachrichtenaustausch

Nachrichtenlänge nicht begrenzt

Multi-Prozessor Unterstützung

PVM – Architektur I

PVM daemon

PVM library

Application

PVM daemon

PVM library

Application

PVM – Architektur II

Master

Slave

Slave

Slave

Master - Slave

Node-only

Node 1

Node 4

Node 3

Node 2

MPI – Message Passing Interface

Spezifikation einer Bibliothek zum

Nachrichtenaustausch

Standardisiert

Komitee aus 40 Experten aus F&E

viele Implementationen verfügbar

MPICH, LAN

Entwicklungsgrund: viele proprietäre APIs von MPP-System-Herstellern für den Nachrichtenaustausch verhindern portable parallele Applikationen

Designziel: Performance

openMosix

Kernelerweiterung für SSI-Clustering

für UP und SMP Knoten verbunden durch LAN (Ethernet, Gigabit-Ethernet, ATM)

adaptive Algorithmen für Ressourcenteilung

preemptive / transparente Prozessmigration

zur Lastverteilung

verhindert Thrashing bei Knoten

openMosix - Ziele

Cluster-Performance optimieren

Multi-User Umgebung realisieren

sequentielle / parallele Applikationen ausführen

Kompatibilität: keine Anpassung von vorhandener SW notwendig

keine Abhängigkeiten von Bibliotheken (vgl. PVM & MPI)

dynamische Konfiguration der Knoten-Menge

openMosix - Kernelalgorithmen

Ressourcenverwaltung

Lastverteilung

Speichermanagement

Prozessmigration

openMosix - Ressourcenverwaltung

Speichermanagement

max. Anzahl von Prozessen in RAM

-> Vermeidung Thrashing & Swapping

Algorithmus wird bei starken Paging angestoßen

-> Prozess wird zu Knoten mit ausreichend Speicher migriert

Lastverteilung

Mathematisches Modell aus Wirtschaftswissenschaften

Totale Auslastung heterogener Ressourcen (CPU, Speicher, Bandbreite) wird mit „Kostenfunktion“ abgebildet

openMosix – Prozessmigration I

Deputy

Link-Layer

User

Kernel

Remote

Link-Layer

UHN

openMosix – Prozessmigration II

User-Kontext / Remote (migierbar)

Programmcode, Stack, Daten, Register

System-Kontext / Deputy (UHN abhängig)

verwendete Ressourcen, Kernel-Stack

Link-Layer

Kommunikation zwischen Remote & Deputy

Systemaufrufe, Signale, Daten

Read-ahead caching, bei Remote-Kopiervorgängen

-> Overhead-Vermeidung

Remote-Prozesse (auf entfernten Knoten) sind von anderen Prozessen auf diesem Knoten isoliert

openMosix - Dateizugriff

Direct File System Access (DFSA)

Designziel: Overhead-Vermeidung

wenn möglich werden Systemaufrufe lokal ausgeführt

arbeitet mit Lastverteilung zusammen. I/O lastige	Prozesse werden auf Knoten migriert, auf dem sie die meisten I/O-Operationen durchführen

openMosix - Installation

openMosix-Kernel-Patch anwenden

User-Tools installieren

Knoten neu booten

Alternative:

Terminal Server aufsetzen, der Kernel und

Root-FS für Knoten zur Verfügung stellt

Knoten booten über LAN vom Terminal Server

Quellen

PVM

http://www.csm.ornl.gov/pvm/pvm_home.html

MPI

http://www-unix.mcs.anl.gov/mpi/

www.csm.ornl.gov/pvm/PVMvsMPI.ps

openMosix

http://openmosix.sourceforge.net/

Howtos

http://www.ibiblio.org/pub/Linux/docs/HOWTO/

other-formats/html_single/

openMosix : openMosix-HOWTO.html

Linux Parallel Processing : Parallel-Processing-HOWTO.html

Linux Cluster : Cluster-HOWTO.html

2003-10-17T11:27:59