Möglichkeiten zur Steigerung der Rechenleistung in einem Netzwerk von Linux-Computern
--
High Throughput Computing

Andreas Hirczy

Zusammenfassung:

Noch vor etwa 15 Jahren wurden beinahe ausschließlich große Computer im Time-Sharing Verfahren benutzt. Jeder Benutzer hatte dadurch Zugang zur gesamten Rechenleistung einer Organisation. Heute sind viele Workstations den Benutzern direkt zugeordnet; diese Computer werden häufig nur während kurzer Zeiten vollständig genutzt. Mittels High Throughput Computing wird versucht, diese Ressourcen verfügbar zu machen.

Nachtrag: MOSIX

Was ist High Throughput Computing?

Beim High Performance Computing (HPC) steht die möglichst kurze Programmlaufzeit im Vordergrund. Dazu wird neben allgemeinen Optimierungen und schnelleren Prozessoren vor allem Parallelverarbeitung genutzt.

Allerdings sind Supercomputer in Anschaffung und Unterhalt wesentlich teurer als Workstations. Die Entwicklung paralleler Programme wird durch diverse Bibliotheken (PVM [1], MPI [2], ...) zwar unterstützt; dennoch ist Parallelverarbeitung [3] programmtechnisch anspruchsvoll. Die beiden Bibliotheken ermöglichen allerdings die Verwendung von Workstations im Netz zum parallelen Ablauf von Programmen.

Beim High Throughput Computing (HTC) wird besonders auf die Rechenleistung über lange Zeiträume geachtet; in vielen Fällen ist die kurze Antwortzeit des HPC nicht erforderlich; notwendig ist, die Berechnungen in absehbarem Zeitrahmen fertigzustellen. Bei der Rechengeschwindigkeit ist daher weniger die Spitzenleistung in FLOPS[*], sondern die permanent verfügbare Rechenleistung (/FLOPW, FLOPM oder FLOPY[*]) von Interesse.

Voraussetzungen

Aufgrund der Natur des HTC sollten einige Voraussetzungen erfüllt sein.

Typische Anwendungen

HTC eignet sich insbesondere für Anwendungen die lange Laufzeiten aufweisen und wenn dasselbe Programm mit unterschiedlichen Parametersätzen mehrfach gestartet werden soll.

Implementierungen

Condor

Condor [6] ist ein Softwarepaket, mit dem Batch-Jobs auf sonst unbenutzten Computern ausgeführt werden können. Die wichtigsten Eigenschaften von Condor sind

Diese Eigenschaften können ohne Veränderungen an den Betriebssystemen erzielt werden. Benutzer von Condor müssen ihre Programme nicht verändern; Linken mit einigen speziellen Libraries ist allerdings notwendig, wenn die Programme im Standard Universe laufen sollen.

Die Hauptziele bei der Entwicklung von Condor waren:

Verfügbarkeit

Dokumentation und Programme können von der Condor-Homepage
http://www.cs.wisc.edu/condor/
geladen werden. Die Lizenzbedingungen der Academic Object Code Use License for Condor gestatten die unentgeltliche Nutzung für nicht kommerzielle Zwecke.

Frühere Versionen waren als Quelltexte erhältlich; ab der Version 6.0 sind nur mehr die ausführbaren Programme verfügbar. Unterstützte Plattformen sind Silicon Graphics IRIX, Sun Solaris Sparc/i386, Digital Unix, IBM AIX und Linux i386. Ältere Versionen laufen auch mit Sun OS und HPUX 10. Unterstützung für Windows NT war für diese Version geplant, konnte aber wegen technischer Schwierigkeiten mit dem Betriebssystem noch nicht realisiert werden.

Leider gibt es für die aktuelle Version 6.0 keine Manual Pages im troff-Format mehr. Dokumentation [7] ist lokal unter /usr/local/doc/condor/... zu finden.

Benutzung

Wie bereits erwähnt, müssen die Programme nicht besonders an Condor angepaßt werden. Die Programme laufen in verschiedenen Universen (Condor-Jargon für Betriebsarten):
Plain Vanilla Universe:
Hier können alle beinahe alle Programme und Shellskripte ausgeführt werden, allerdings steht das Checkpoint-Service nicht zur Verfügung.
Standard Universe:
Im Standard Universe stehen alle Features von Condor zur Verfügung. Allerdings müssen wegen der Fähigkeit, Checkpoints zu generieren, einige Einschränkungen hingenommen werden:

Programme die im Standard Universe laufen sollen, müssen mit einigen speziellen Bibliotheken gelinkt werden. Dazu ist nur nötig, vor dem Befehl zum Erzeugen der ausführbaren Programme condor_compile anzugeben.

PVM Universe:
Im PVM Universe[*] können parallele Programme ausgeführt werde; Condor stellt die geforderte Anzahl von Computern aus dem Pool der gerade freien Rechner bereit.

Um die Prozesse zu starten, muß eine Submit-Datei geschrieben und mit dem Befehl condor_submit ausgeführt werden. Ein einfaches Beispiel für eine Submit-Datei ist

  Executable = foo
  Error      = foo.err
  Log        = foo.log

  Arguments = 1 3 
  Input     = inp.$(Process)
  Output    = out.$(Process)

  Queue 100

Mit dieser Datei wird das Programm foo 100 mal ausgeführt. Die Standardeingabe bzw. Standardausgabe wird dabei für den ersten Prozess auf die Dateien inp.0 und out.0 gelenkt; für den zweiten Prozess auf inp.1 und out.1. Die Fehlerausgaben werden nach foo.err und die Logginginformationen nach foo.log geschrieben.

Während die Programme laufen, kann mit dem Kommando condor_status die Belegung der Computer im Pool geprüft werden; mit condor_q -global wird der Status der wartenden Programme gezeigt.

Probleme mit Condor

Fallbeispiel

Im Lauf der Übung Computersimulation in der Physik habe ich das Programm positron_walk zur Simulation des Eindringens von Positronen in Aluminium geschrieben.

Das Programm erhält seine Eingabeparameter über die Kommandozeile:

positron_walk <anz> <en>
              <anz> Anzahl der Positronen
              <en>  Anfangsenergie der Positronen [eV]

Als Ausgabe wird die Restenergie und der Endpunkt des Positrons auf die Standardausgabe geschrieben.

Für die Simulation verwendete ich jeweils 5000 Positronen, die Anfangsenergie wurde in Schritten von 100 eV von 1000 bis 5500 eV variiert. Ich habe mit einem Perl-Skript die Submit-Datei erzeugt. Abschicken der Programme zu Condor erzeugt 46 Prozesse, die der Reihe nach den freien Computern zugeordnet werden.

Die Laufzeiten der einzelnen Programme liegen im Bereich von 20 Sekunden bis 7 Minuten; alle Tasks waren am 7.6.1998 nach etwa 27 Minuten abgeschlossen. Verwendet wurde dabei ein Pentium 200MMX und vier i486DX2/66 mit 128 bzw. 32 MB RAM. Die Laufzeiten können mit dem Befehl condor_history | less betrachtet werden.

Zur Programmierung des Perl-Skripts war ein Mehraufwand von wenigen Minuten notwendig. Für eine parallele Implementierung wäre der zusätzliche Aufwand wesentlich größer gewesen.

Perl-Skript

  #!/usr/bin/perl -w

  print <<EOF
      Executable = positron_walk
      Log        = foo.log
      Error      = foo.err
      Universe   = vanilla
      EOF;
    
  for ($e=1000; $e<=5500; $e+=100){
      print "Arguments = 5000 $e\n";
      print "Output = foo.out.$e\n";
      print "Queue\n\n";
  }

Submit-Datei

  Executable = positron_walk
  Log        = foo.log
  Error      = foo.err
  Universe   = vanilla

  Arguments = 5000 1000
  Output = foo.out.1000
  Queue

  Arguments = 5000 1100
  Output = foo.out.1100
  Queue

  ....
  ....
  ....

  Arguments = 5000 5500
  Output = foo.out.5500
  Queue

An der Submit Datei sieht man, daß die Verwendung des Prozesszählers praktischer wäre; leider kann man in der Submit-Datei nicht rechnen.

Literatur

1
THIEMANN, Uwe:
Virtuelle Parallelrechner in Workstation-Netzen.
In: iX
(1994), 7, S. 152-156

2
KOWALLIK, Rainer:
Standardschnittstelle für Nachrichtengesteuerte Parallelisierung auf Multiprozessorsystemen.
In: iX
(1995), 7, S. 138-142

3
FOSTER, Ian:
Designing and Building Parallel Programs.
Addison-Wesley, 1995. -
http://www-c.mcs.anl.gov/dbpp/

4
DUKE, Dennis W. ; GREEN, Thomas P. ; PASKO, Joseph L.:
Research Toward a Heterogeneous Networked Computing Cluster: The Distributed Queuing System Version 3.0
/ Supercomputer Computations Research Institute, Florida State University.
Tallahassee, Florida, 1995?
- Forschungsbericht.
http://www.scri.fsu.edu/~pasko/dqs.html

5
LEWIS, Margaret:
Maui Scheduler Beta 1.1 Technical Overview
/ Maui High Performance Computing Center, University of New Mexico, Brigham Young University.
1997.
- Forschungsbericht.
http://www.mhpcc.edu/doc/uku/ms_overview.html

6
LITZKOW, Mike ; LIVNY, Miron ; MUTKA, Matt W.:
Condor - A Hunter of Idle Workstations.
In: Proceedings of the 8th International Conference of Distributed Computing Systems, 1988, S. 104-111

7
Condor Team, University of Wisconsin-Madison:
Condor Version 6.0 Manual.
Mai 1998

Über dieses Dokument ...

Möglichkeiten zur Steigerung der Rechenleistung in einem Netzwerk von Linux-Computern
--
High Throughput Computing

This document was generated using the LaTeX2HTML translator Version 97.1 (release) (July 13th, 1997)

Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -html_version 3.2 -split 0 -no_navigation HTC.tex.

The translation was initiated by on 9/4/1998


Footnotes

...FLOPS
FLoating point Operations Per Second

...FLOPY
FLoating point Operations Per Week, ...

...Standardkonfiguration
In unserem Netz werden die Prozesse nicht gestoppt, sondern laufen mit hohem Nice-Level im Hintergrund.

...Universe
bei uns nicht installiert




9/4/1998