-
Hintergrund der Erfindung
-
1. Bereich der Erfindung
-
Die
vorliegende Erfindung betrifft Computerverarbeitungssysteme und
insbesondere ein Verfahren zum Partitionieren einer durch ein Computerprogramm
auszuführenden
Aufgabe in kleinere Komponenten, so dass eine größere Anzahl von Prüfpunkten
oder Programmhaltepunkten (Checkpoints) gesetzt werden kann.
-
2. Beschreibung der verwandten
Technik
-
Die
Rechengeschwindigkeiten von Einzelprozessorcomputern haben in den
letzten drei Jahrzehnten enorm zugenommen. In vielen Anwendungsgebieten
ist jedoch eine Rechenleistung erforderlich, die selbst die des
schnellsten Einzelprozessorcomputers überschreitet. Ein Beispiel
ist eine Transaktionsverarbeitung, bei der mehrere Benutzer gleichzeitig
auf Computerressourcen zugreifen, und in denen die Ansprechzeiten
des Systems gering sein müssen,
damit es kommerziell akzeptabel ist. Ein anderes Beispiel ist Datenbank-Mining, wobei hunderte
Gigabyte Information verarbeitet werden muss, und wobei die Verarbeitung
von Daten auf einem seriellen Computer Tage oder Wochen dauern könnte. Daher
sind verschiedenartige "Parallelverarbeitungs"systeme zum Handhaben
derartiger Probleme entwickelt worden. Für die vorliegende Diskussion
weisen Parallelverarbeitungssysteme eine beliebige Konfiguration
von Computersystemen auf, in denen mehrere Zentraleinheiten (CPUs),
entweder lokal (z.B. Mehrprozessorsysteme, wie beispielsweise SMP-Computer)
oder lokal verteilt (z.B. mehrere als Cluster verbundene Prozessoren
oder MPPs) oder abgesetzt oder abgesetzt verteilt (z.B. mehrere über ein
LAN- oder ein WLAN verbundene Prozessoren) oder in einer Kombination
davon verwendet werden.
-
Die
meisten Geschäftsanwendungen
weisen einen Satz von "Programmkomponenten" auf, die Daten auf
irgendeine Weise umwandeln. Beispielsweise könnte eine Lohnkostenanwendung
ein Programm enthalten, das Arbeitsblätter in Gehaltsschecks umwandelt.
Wenn eine derartige Komponente als Teil einer Anwendung verwendet
wird, die auf einem Parallelverarbeitungssystem ausgeführt wird,
gelten die folgenden allgemeinen Grundsätze:
- (1)
Es wird ein Parallelitätsgrad
p gewählt.
In den meisten Fällen
entspricht p der Anzahl von Prozessoren.
- (2) Eingangsdaten für
die Programmkomponente werden auf einen Satz von p Eingangsdateien ("Partitionen") verteilt.
- (3) p Prozesse der Programmkomponente werden auf verschiedenen
Prozessoren gleichzeitig ausgeführt.
- (4) Jeder Prozess der Programmkomponente verarbeitet eine Partition
der Eingangsdaten.
-
Wenn
die Ausführung
der Programmkomponente beendet ist, werden ihre Ausgangsdaten in
p Partitionen geteilt worden sein. Die Ausgangsdaten können dann
als Eingangsdaten für
weitere Programmkomponenten verwendet oder in eine Speichervorrichtung
geschrieben werden.
-
Die
Organisation der Daten in diesen Partitionen ist häufig sehr
wichtig, da die Programmkomponente in vielen Fällen fehlerhafte Ergebnisse
liefern wird, wenn die Daten nicht geeignet partitioniert sind. Außerdem ist
die Ordnung oder Folge der Daten innerhalb jeder Partition häufig sehr
wichtig. Beispielsweise erfordern viele Programme, dass ihre Eingangsdaten
auf eine bestimmte Weise geordnet sind.
-
Um
eine korrekte Partitionierung der Daten zu erzielen, ist es üblich, ein
separates "Partitionierer"programm zu verwenden,
dem eine Eingangsdatei zugeführt
wird und das die Eingangsdatei gemäß einer vorgegebenen Regel
in p Teile teilt. Wenn die Weise der Partitionierung die durch die
Programmkomponente erzeugten Ergebnisse nicht beeinflusst, kann
der Partitionierer die Daten auf eine beliebige Weise teilen. Außerdem ist
es üblich,
dass die Partitionierung auf einer mathematischen Funktion basiert,
die jede Eintragung basierend auf den Datenwerten in der Eintragung
einer der p Partitionen zuweist.
-
Im
Allgemeinen werden die Eingangsdaten in q Eingangs- oder Anfangspartitionen
geteilt sein, jedoch nicht notwendigerweise auf eine Weise, die den
Erfordernissen der Programmkomponente entspricht. Um derartige Daten
zu partitionieren, werden im Allgemeinen q Kopien des Partitioniererprogramms
ausgeführt,
wobei jede Kopie als Eingangsdaten einer der q Anfangspartitionen
verwendet wird. Weil jede der q Kopien des Partitioniererprogramms p
Ausgangspartitionen erzeugt, werden die Eingangsdaten in p·q Partitionen
geteilt. Üblicherweise wird
dieses Problem dadurch gelöst,
dass ein zweites "Gatherer"-Programm zum Kombinieren
von Gruppen von q Partitionierungen (eine für jeden Prozess des Partitionierers)
und zum Erzeugen von End-Ausgangsdaten verwendet wird.
-
Es
ist wünschenswert,
wenn Anwendungen, die einmal geschrieben wurden, mit einem beliebigen Parallelitätsgrad p
ausführbar
sind. Dies ist erforderlich, weil im Verlauf der Zeit zunehmende
Datenmengen die Anschaffung eines Computers mit einer größeren Anzahl
von Prozessoren erforderlich ma chen kann. Um dies zu unterstützen, ist
es üblich,
die Partitionierer-/Gatherer-Programme derart zu parametrisieren,
dass sie eine beliebige Anzahl von Partitionen p erzeugen können, und
derart, dass die Programmkomponente korrekt arbeitet. Diese Eigenschaft
wird als "Skalierbarkeit" bezeichnet.
-
1 zeigt
ein Diagramm eines herkömmlichen
Partitionierer-/Gatherer-Systems zum Teilen von q Anfangspartitionen
in p Ausgangspartitionen. 1 zeigt
ein System für
den Fall einer Programmkomponente, die einzelne Eingangsdateien
liest und in einzelne Ausgangsdateien schreibt. Eingangsdatensätze 21 sind
in q = 3 Anfangs- oder Eingangspartitionen 1 geteilt worden.
Der gewünschte
Parallelitätsgrad
beträgt
p = 2. Es werden drei Prozesse von Partitionierern 2 ausgeführt, die
sechs Zwischenergebnisse erzeugen, die über Kommunikationskanäle 3 übertragen
werden. Diese Zwischenergebnisse werden durch zwei Prozesse von
Gatherer-Programmen 4 gelesen, die zwei Zwischendateien 5 erzeugen.
Dann werden zwei Prozesse von Programmkomponenten 6 ausgeführt, die
jeweils von einer spezifischen Zwischendatei 5 lesen und
in eine spezifische Ausgangsdatei 7 schreiben. Die Ausgangsdatei 7 weist
die Partitionen eines Ausgangsdatensatzes 22 auf. Wenn
mehrere Eingangsdatensätze 21 vorhanden
wären,
würden
der Partitionierer 2, die Kommunikationskanäle 3,
der Gatherer 5 und die Zwischendatei 6 für jeden
Eingangsdatensatz einmal kopiert (wodurch sich möglicherweise die Anzahl der Partitionierer 2 und
der Gatherer 3 ändert).
Außerdem
könnten
mehrere Ausgangsdatensätze 22 bereitgestellt
werden. Schließlich
ist es möglich,
einige individuelle Eingangsdateien nicht zu partitionieren, sondern
sie stattdessen zu allen Prozessen der Programmkomponente (nicht
dargestellt) zu übertragen.
-
Es
sind viele Modifikationen dieser Architektur möglich. Beispielsweise könnten die
Zwischendateien 5 durch entsprechende Kommunikationskanäle ersetzt
werden, oder die Kommunikationskanäle 3 könnten durch
entsprechende Dateien ersetzt werden.
-
2 zeigt
ein Diagramm eines herkömmlichen
Systems zum Darstellen eines wichtigen Spezialfalls "vorpartitionierter
Daten". Dieser Fall
tritt auf, wenn die Anzahl der Eingangspartitionen q dem gewünschten
Parallelitätsgrad
p der Programmkomponenten gleicht, und die Weise, auf die die Eingangsdatensätze 21 partitioniert
sind, für
die Programmkomponente 6 geeignet ist. In diesem Fall müssen die
Daten nicht partitioniert werden, so dass die Partitionierer 2,
die Kommunikationskanäle 3,
die Gatherer 4 und die Zwischendateien 5 eliminiert
werden können.
Es ist vorteilhaft, diesen Spezialfall zu nutzen, weil durch die
Eliminierung der Elemente 2-5 ein wesentlicher
Rechenaufwand und wesentlicher Speicherplatz eingespart werden.
-
Wenn
die Programmkomponente 6 mehrere Eingangsdaten aufweist,
wird für
einige dieser Eingangsdaten eine in 1 dargestellte
Partitionierung erforderlich sein, und andere werden wie in 2 dargestellt "vorpartitioniert" sein.
-
Um
eine komplexe Anwendung mit mehreren Programmkomponneten zu konstruieren,
können mehrere
Recheneinheiten ("Aufgaben" bzw. "Tasks") mit in 1 oder 2 dargestellten
Strukturen verknüpft
werden. Diese Verknüpfung
erfolgt durch Zuweisen der Ausgangspartitionen 7 einer
Stufe der Verarbeitung zu entsprechenden Eingangspartitionen 1 der
nächsten
Stufe.
-
Für komplexe
Anwendungen ist es wünschenswert,
wenn ein "Prüfpunkterstellungs"-Schema bereitgestellt
wird, durch das, wenn eine Systemstörung auftritt, die Anwendung
von einem "Prüfpunkt" ausgehend fortgesetzt
werden kann, der einen Zwischenzustand der Rechenverarbeitung hält, anstatt
dass die gesamte Anwendung von Anfang an erneut ausgeführt wird.
Für eine
allgemeine Diskussion der "Prüfpunkterstellung" und eines spezifischen Beispiels
eines verbesserten Prüfpunkterstellungssystems,
für das
die vorliegende Erfindung geeignet sein kann, wird auf die dem Bevollmächtigten
der vorliegenden Patentanmeldung übertragene mitanhängige Patenanmeldung
mit dem Titel "Methods
and Systems for Reconstructing the State of a Computation" verwiesen.
-
Eine
der Einschränkungen
der Prüfpunkterstellung
ist, dass Prüfpunkte
nur dann erzeugt werden dürfen,
wenn das System sich "im
Ruhezustand" befindet,
d.h., wenn keine Anwendungsprogramme ausgeführt werden. Ein System kann
derart aufgebaut sein, dass es sich zwischen zwei Aufgaben im Ruhezustand
befindet, so dass am Ende jeder Aufgabe ein Prüfpunkt erzeugt wird. Außerdem kann
ein Prüfpunkt
innerhalb einer Aufgabe, unmittelbar nach Ablauf des Gatherer-Programms 4 erzeugt
werden. Diese Techniken führen
jedoch möglicherweise
nicht zu einer ausreichenden Anzahl von Möglichkeiten für eine Prüfpunkterstellung.
Beispielsweise wird, wenn eine Programmkomponente 6 einer
Aufgabe 10 Stunden läuft,
die Anwendung notwendigerweise ein 10-Stunden-Periode aufweisen, in der keine Prüfpunkte
erzeugt werden können.
Wenn irgendwann innerhalb dieser 10-Stunden-Periode eine Störung auftritt,
muss die gesamte Anwendung von Anfang an neu ausgeführt werden.
-
Daher
besteht ein Bedarf für
ein Verfahren, in dem in parallelen komponentenbasierten Anwendungen
eine größere Anzahl
von Prüfpunkten
erstellt werden kann. Durch die vorliegende Erfindung wird ein Verfahren
bereitgestellt, das insbesondere für auf Parallelverarbeitungssystemen
laufende Anwendungen geeignet ist und außerdem für auf verteilten Verarbeitungssystemen
laufende Verarbeitungen geeignet ist.
-
Kurze Beschreibung
der Erfindung
-
Die
vorliegende Erfindung beinhaltet zwei Verfahren zum Modifizieren
einer Aufgabe (Task) in einer komplexen parallelen Anwendung derart,
dass sie häufiger
auf einen Ruhezustand schaltet (in dem Prüfpunkte erstellt werden können).
-
Eine
parallele Aufgabe beginnt mit einem oder mehreren Eingangsdatensätzen mit
q Anfangspartitionen, teilt die Eingangsdatensätze durch eine Kombination
von Partitionierungselementen (d.h. Partitionierer/Gatherer) in
p Partitionen, führt
einen Prozess einer Programmkomponente bezüglich jeder der p Partitionen
von Daten aus und erzeugt einen oder mehrere Sätze von Ausgangsdateien, wobei
jeder Satz als partitionierter Datensatz betrachtet wird. Die vorliegende
Erfindung wird beispielsweise folgendermaßen auf eine Aufgabe zum Erzeugen
einer neuen, "überpartitionierten" Aufgabe angewendet:
- (1) Der Partitionierer wird durch einen "Überpartitionierer" ersetzt, der seine
q Eingangsdaten in n·p
Partitionen teilt, wobei n einen ganzzahligen Überpartitionierungsfaktor darstellt.
- (2) Die Programmkomponente wird in einer Folge von n Ausführungsphasen
ausgeführt,
wobei Prozesse der Programmkomponente gleichzeitig laufen. In jeder
Phase wird jeder Prozess der Programmkomponente eine Überpartition
der Eingangsdaten lesen und eine Partition von Ausgangsdaten erzeugen.
- (3) Am Ende jeder der n Ausführungsphasen
befindet sich das System im Ruhezustand, in dem ein Prüfpunkt erzeugt
werden kann.
-
Die
Erfindung umfasst zwei bevorzugte Ausführungsformen. Eine Ausführungsform
dient zum "expliziten Überpartitionieren" der Eingangsdaten
unter Verwendung bekannter Parti tioniererprogramme, Kommunikationskanäle und Gatherer-Programme zum
Erzeugen überpartitionierter
Zwischendateien. Diese Ausführungsform
ist auf Aufgaben anwendbar, die die in 1 dargestellte
Form haben. Die zweite Ausführungsform
dient zum "dynamischen Überpartitionieren" der Eingangsdaten
durch Anordnen der Programmkomponenten derart, dass nacheinander aufeinanderfolgende
Untersätze
der originalen Eingangsdaten gelesen werden. Diese Ausführungsform
ist auf viele Aufgaben mit der in 2 dargestellten
Form anwendbar.
-
Details
der bevorzugten Ausführungsform der
vorliegenden Erfindung werden nachstehend unter Bezug auf die beigefügten Zeichnungen
beschrieben. Anhand der Details der Erfindung sind für Fachleute
zahlreiche weitere Innovationen und Änderungen ersichtlich.
-
Kurze Beschreibung der
Zeichnungen
-
1 zeigt
ein Diagramm eines herkömmlichen
Partitionierer-/Gatherer-Systems zum Teilen von q Anfangspartitionen
in p Ausgangspartitionen;
-
2 zeigt
ein Diagramm eines herkömmlichen
Systems zum Darstellen des Spezialfalls "vorpartitionierter Daten";
-
3a zeigt
ein Gesamtdiagramm einer Originalaufgabe vor der Anwendung eines
erfindungsgemäßen Überpartitionierungssystems;
-
3b zeigt
eine Gesamtansicht der Aufgabe von 3a nach
der Anwendung eines erfindungsgemäßen Überpartitionierungssystems;
-
4 zeigt
ein Detaildiagramm des Überpartitionierungssystems
von 3b zum Darstellen der bevorzugten Ausführungsform
eines erfindungsgemäßen expliziten Überpartitionierungssystems;
-
5a und 5b zeigen
Detaildiagramme zum Darstellen der Datenfluss-, Prozessor-, Kommunikations-
und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen expliziten Überpartitionierungssystems;
-
6 zeigt
ein Detaildiagramm des Überpartitionierungssystems
von 3b zum Darstellen der bevorzugten Ausführungsform
eines erfindungsgemäßen dynamischen Überpartitionierungssystems;
-
7 zeigt
ein Detaildiagramm zum Darstellen der Datenfluss-, Prozessor-, Kommunikations- und
Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen dynamischen Überpartitionierungssystems;
und
-
8 zeigt
ein Detaildiagramm zum Darstellen der Datenfluss-, Funktions- und
Kommunikationsbeziehungen eines Systems zum Implementieren von Zeigern
und Überwachungseinrichtungen
in einem erfindungsgemäßen dynamischen Überpartitionierungssystem.
-
In
den verschiedenen Zeichnungen stellen ähnliche Bezugszeichen und Bezeichnungen ähnliche
Elemente dar.
-
Ausführliche Beschreibung der Erfindung
-
In
der vorliegenden Beschreibung sollen die bevorzugte Ausführungsform
und die dargestellten Beispiele als exemplarisch und nicht im einschränkenden
Sinn verstanden werden.
-
Übersicht
-
3a zeigt
ein Gesamtdiagramm einer Originalaufgabe vor der Anwendung eines
erfindungsgemäßen Überpartitionierungssystems. 3a zeigt eine
parallele Aufgabe 11, die mit einem oder mehrren Eingangsdatensätzen 21 mit
q Eingangspartitionen 1 startet, diese durch eine Kombination
von Partitionierungselementen (d.h. Partitionierer/Gatherer) 8 in
p Partitionen 12 teilt, einen Prozess einer Programmkom ponente 6 bezüglich jeder
der p Partitionen 12 der Daten ausführt und einen oder mehrere Ausgangspartitionen 7 von
Ausgangsdaten 22 erzeugt.
-
3b zeigt
ein Gesamtdiagramm der Aufgabe von 3a nach
der Anwendung eines erfindungsgemäßen Überpartitionierungssystems.
Eine neue, überpartitionierte
Aufgabe 13 wird folgendermaßen erzeugt:
- (1)
Der Partitionierer 8 wird durch einen "Überpartitionierer" 9 ersetzt,
der seine q Eingangspartitionen in n·p Datenpartitionen 12 teilt,
wobei n einen ganzzahligen Überpartitionierungsfaktor
darstellt.
- (2) Die Programmkomponente 6 wird in einer Serie von
n Ausführungsphasen 10 ausgeführt, wobei
p Prozesse der Programmkomponente gleichzeitig ausgeführt werden.
In jeder Phase wird jeder Prozess der Programmkomponente 6 eine Partition 12 der
Eingangsdaten 21 lesen und eine Partition 7 der
Ausgangsdaten 22 erzeugen. Die Eingangsdatendateien 21 können ein
beliebiges Format haben, z.B. ein sequentielles, ein hierarchisches,
ein relationales oder ein ähnliches
Format.
- (3) Am Ende jeder der n Ausführungsphasen 10 befindet
sich das System im Ruhezustand, in dem ein Prüfpunkt erstellt werden kann.
-
Ein
wichtiges Merkmal ist hierbei, dass in den meisten Fällen die
zum Ausführen
der Programmkomponenten 6 erforderliche Zeit eng mit dem zu
verarbeitenden Datenvolumen in Beziehung steht, z.B. kann die Hälfte der
Daten etwa in der Hälfte
der Zeit verarbeitet werden. Durch eine n-fache Verminderung des
Datenvolumens kann daher die Laufzeit für jeden Prozess der Programmkomponente 6 um einen
entsprechenden Faktor n vermindert werden, wodurch das Intervall
zwischen Möglichkeiten
für die Erstellung
eines Prüfpunktes
um einen Faktor n vermindert wird.
-
Die
Erfindung umfasst zwei bevorzugte Ausführungsformen. Eine Ausführungsform
dient zum "expliziten Überpartitionieren" der Eingangsdaten 21 unter
Verwendung bekannter Partitioniererprogramme 2, Kommunikationskanäle 3 und
Gatherer-Programme 4 zum Erzeugen überpartitionierter Zwischendateien 5.
Diese Ausführungsform
ist auf Aufgaben anwendbar, die die in 1 dargestellte
Form haben. Die zweite Ausführungsform
dient zum "dynamischen Überpartitionieren" der Eingangsdaten 21 durch
Anordnen der Programmkomponenten 6 derart, dass nacheinander
aufeinanderfolgende Untersätze
der originalen Eingangsdaten 21 gelesen werden. Diese Ausführungsform
ist auf viele Aufgaben mit der in 2 dargestellten
Form anwendbar.
-
Explizite Überpartitionierung
-
Das
explizite Überpartitionierungsverfahren verwendet
zwei herkömmliche
Partitionierer 2, Kommunikationskanäle 3 und Gatherer 4 zum
erzeugt einen Satz "überpartitionierter" Zwischendateien 5 und führt dann
die Programmkomponenten 6 in mehreren Ausführungsphasen
bezüglich
den überpartitionierten
Dateien aus. Dieses Verfahren kann verwendet werden, wenn die folgenden
Anforderungen erfüllt sind:
- (1) Für
das Verfahren müssen
q Eingangspartitionen 1 von einem Eingangsdatensatz 21,
ein gewünschter
Parallelitätsgrad
p und ein gewünschter Überpartitionierungsgrad
n bereitgestellt werden.
- (2) Das Partitionierungsprogramm 2 muss derart konfiguriert
sein, dass es mindestens n·p
Ausgangspartitionen erzeugt.
- (3) Die Programmkomponente 6 muss "skalierbar" sein, d.h., es muss sichergestellt
sein, dass die Anwendung für
einen beliebigen Parallelitätsgrad
p gültige
Ergebnisse erzeugt.
-
4 zeigt
ein detaillierteres Diagramm des Überpartitionierungssystems
von 3b zum Darstellen der bevorzugten Ausführungsform
eines erfindungsgemäßen expliziten Überpartitionierungssystems.
Wenn die vorstehenden Anforderungen erfüllt sind, kann das explizite Überpartitionierungsverfahren
folgendermaßen
implementiert werden:
- (1) q Prozesse des Partitionierers 2 sind
derart konfiguriert, dass sie auf die q Eingangspartitionen einwirken.
Jeder Prozess des Partitionierers 2 ist derart konfiguriert,
dass er n·p
Partitionen erzeugt.
- (2) n·p
Prozesse des Gatherer 4 sind derart konfiguriert, dass
sie auf die Ausgangsdaten des Partitionierers 2 einwirken.
- (3) Die q Prozesse des Partitionierers 2 sind, wie dargestellt
ist, unter Verwendung von n·p·q Kommunikationskanälen mit
den n·p
Prozessen des Gatherers 4 verknüpft.
- (4) Alle Partitionierer 2 und Gatherer 4 laufen
und erzeugen n·p
Zwischendateien 5.
- (5) n Ausführungsphasen 10 werden
wie vorstehend beschrieben ausgeführt. In jeder Phase werden
p Prozesse der Programmkomponente 6 ausgeführt, wobei
jeder Prozess auf herkömmliche Weise
Daten von einer der Zwischendateien 5 liest und Daten in
eine der Ausgangspartitionsdateien 7 schreibt. Die Ausgangsdaten
werden aus n·p
Dateien bestehen.
-
In
vielen Fällen
ist die Logik der Programmkomponente 6 derart, dass die
durch die n aufeinanderfolgenden Ausführungsphasen 10 erzeugten
Ausgangsdaten, falls sie miteinander verknüpft werden, unabhängig vom
Wert n den gleichen Satz aus p (anstatt n·p) Ausgangsdateien erzeugen
werden, wie im überpartitionierten
Fall. In diesem Fall kann ein Satz aus p Ausgangsdateien erzeugt
werden, indem einfach die durch jeden Prozess der Programmkomponente 6 während ihrer
aufeinanderfolgenden Ausführungshasen 10 erzeugten
Ausgangsdaten angehängt
werden. Dies hat den Vorteil, dass die Anzahl der zu managenden
Ausgangsdateien vermindert wird.
-
Ähnlich wie
beim Stand der Technik sind viele Modifikationen dieser Architektur
möglich.
Beispielsweise könnten
die Zwischendateien 5 durch entsprechende Kommunikationskanäle ersetzt
werden, oder die Kommunikationskanäle 3 könnten durch
entsprechende Dateien ersetzt werden.
-
Die
vorstehenden Schritte könnten
entweder manuell (z.B. durch Überschreiben
der zum Steuern der Gesamtausführung
der Anwendung verwendeten Software) oder automatisch implementiert
werden. In der bevorzugten Ausführungsform
erfordert der automatische Fall, dass für jede Aufgabe die folgende
Information (oder äquivalente
Information) in maschinenlesbarer Form spezifiziert wird:
- (1) Der gewünschte
Parallelitätsgrad
p und der gewünschte Überpartitionierungsgrad
n.
- (2) Die Identität
der Programmkomponente 6.
- (3) Die Identitäten
der Dateien, die die Eingangsdaten 21 für die Programmkomponente 6 enthalten.
- (4) Für
jeden Eingangsdatensatz 21 für die Aufgabe die folgende
Zusatzinformation:
- (1) Die Identitäten
der Dateien, die ihre Eingangspartitionen 1 aufweisen.
- (2) Die Identitäten
der für
diese Eingangspartitionen geeigneten Partitionierer 2.
- (3) Die Identitäten
der für
diese Eingangspartitionen geeigneten Gatherer.
- (4) Die Identitäten
geeigneter Speichervorrichtungen, in denen die p Zwischendateien 5 gespeichert
werden können.
- (5) Für
jeden Ausgangsdatensatz 22 die Identitäten geeigneter Speichervorrichtungen,
in denen die p Ausgangspartitionsdateien 7 gespeichert werden
können.
- (6) Identifizierungen für
q "Partitions"prozessoren, durch
die die Partitioniererprogramme 2 ausgeführt werden
können.
- (7) Identifizierungen für
p "Gatherer"prozessoren, durch
die die Gatherer-Programme 4 ausgeführt werden können (die
gegebenenfalls die gleichen sein können wie die Partitioniererprozessoren).
- (8) Identifizierungen für
p "Arbeits"prozessoren, durch
die die Programmkomponenten 6 ausgeführt werden können (die
gegebenenfalls die gleichen sein können wie die Partitioniererprozessoren
oder die Gatherer-Prozessoren).
- (9) Für
die Partitionierer 2, die Gatherer 4 und die Programmkomponente 6 Information,
die erforderlich ist, um sie zu betreiben und sie mit Datendateien
und Kommunikationskanälen
zu verbinden; und im Fall der Partitionierer 2 Information darüber, wie
diese konfiguriert sein müssen,
um eine beliebige Anzahl von Partitionen zu erzeugen, wobei diese
Information auf herkömmliche Weise
bereitgestellt wird. In der bevorzugten Ausführungsform wird diese Information
durch eine Unterroutine bereitgestellt, wobei, wenn die Identitäten der
zu verbindenden Datendateien/Unterroutinen bereitgestellt wird (für die Partitionierer 2 zusätzlich die
Anzahl der Partitionen), eine Folge von "Argumentzeilenparametern" zurückübertragen
wird, durch die veranlasst wird, dass das Programm wunschgemäß ausgeführt wird.
-
Wenn
die vorstehende Information (oder äquivalente Information) bereitgestellt
wird, kann der explizite Überpartitionierungsalgorithmus
ausgeführt werden.
Die 5a und 5b zeigen
Detaildiagramme zum Darstellen der Daten fluss-, Prozessor-, Kommunikations-
und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen expliziten Überpartitionierungssystems.
-
Gemäß 5a werden
die Dateien, die die Eingangsdaten 21 enthalten, für die Aufgabe
in der bevorzugten Ausführungsform
auf die folgende Weise iterativ verarbeitet:
- (1)
Identifizieren der Anzahl q von Eingangspartitionen für die Eingangsdatendateien 21.
- (2) Erzeugen von n·p·q Kommunikationskanälen 3 durch:
- (1) Erzeugen der ersten n·p
Kanäle 3 durch
einen ersten Partitionsprozessor 23, Erzeugen der nächsten n·p Kanäle durch
einen nächsten
Partitionsprozessor 23, usw.
- (2) Verbinden der ersten n Kanäle 3 mit einem ersten
Gatherer-Prozessor 24, Verbinden der nächsten n Kanäle mit dem
nächsten
Gatherer-Prozessor 24, usw., bis n·p Kommunikationskanäle zugewiesen
worden sind, wobei zu diesem Zeitpunkt der Zyklus mit dem ersten
Gatherer-Prozessor 24 wiederholt wird.
- (3) Ausführen
von q Prozessen des Partitionierers 2, wobei:
- (1) Jeder Prozess einem der Partitionsprozessoren 23 zugeordnet
ist.
- (2) Jeder Prozess derart konfiguriert ist, dass er n·p Ausgangspartitionen
erzeugt.
- (3) Jeder Prozess mit allen Kommunikationskanälen 3 verbunden
ist, die in ihrem Prozessor erzeugt werden.
- (4) Ausführen
von n·p
Prozessen des Gatherers 4, wobei:
- (1) Jedem der Gatherer-Prozessoren 24 n Prozesse zugeordnet
sind. Der i-te Prozess jedes Prozessors mit dem i-ten ankommenden
Kommunikationskanal 3, dem (n + i)-ten Kanal 3,
dem (2n + i)-ten Kanal 3, usw. verbunden ist, bis keine
weiteren unverbundenen Kommunikationskanäle 3 übrig sind.
- (2) Die auf dem k-ten Gatherer-Prozessor 24 laufenden
Prozesse schreiben eine k-te Zwischendatei 5 in eine Speichervorrichtung
eines Satzes von "Zwischendatei"speichervorrichtungen 25 (für eine höhere Leistungsfähigkeit
schreibt jeder auf dem k-ten
Prozessor 24 laufende Prozess eine k-te Zwischendatei 5 in
eine separate k-te Speichervorrichtung).
- (5) Warten, bis alle Prozesse des Partitionierers 2 und
des Gatherers 4 beendet sind, und anschließendes Löschen der
Kommunikationskanäle 3.
- (6) Optionales Erstellen von Prüfpunkten im System, bevor der
nächste
Satz Eingangsdatendateien 21 abgearbeitet wird (zu diesem
Zeitpunkt ist die Überpartitionierung
der bereitgestellten Eingangsdateien 21 abgeschlossen;
Prüfpunkte müssen nicht
tatsächlich
bei jedem Ereignis erstellt werden, bei dem sie erstellt werden
können).
- (7) Wiederholen der Schritte (1)-(6) für jeden nächsten Satz von Eingangsdatendateien 21.
-
Gemäß 5b werden
in der bevorzugten Ausführungsform
n Ausführungsphasen 10 bezüglich Daten
in den Zwischendateien 5 auf die folgende Weise ausgeführt:
- (1) Ausführen
von p Kopien der Programmkomponente 6 auf jedem der Arbeitsprozessoren 26 während jeder
der n Ausführungsphasen 10.
- (2) Während
jeder i-ten Ausführungsphase 10 liest
der Prozess der auf dem j-ten Arbeitsprozessor 26 laufenden
Programmkomponente 6 die i-te Zwischendatei 5 von
einer Zwischenspeichervorrichtung 26 und schreibt Daten
in die i-te Ausgangspartitionsdatei 7 in einer Ausgangsspeichervorrichtung
(für eine
höhere
Leistungsfähigkeit liest
jeder auf dem j-ten Arbeitsprozessor 26 laufende Prozess
die i-te Zwischendatei 5 von der j-ten Zwischenspeichervorrichtung 25 und schreibt
Daten in die i-te Ausgangspartitionsdatei 7 in einer separaten
j-ten Ausgangsspeichervorrichtung 27).
- (3) Optionales Löschen
der Zwischendateien 5 in jeder Ausführungsphase 10, in
der sie verbraucht werden.
- (4) Warten auf den Abschluss aller p Prozesse der in jeder der
n Ausführungsphasen
laufenden Programmkomponente 6, wobei zu diesem Zeitpunkt Prüfpunkte
im System erstellt werden können.
-
Daher
werden am Ende jeder der n Ausführungsphasen 10 p
Prozesse der Programmkomponente 6 1/n der gesamten Eingangsdaten 21 verarbeitet
haben, woraufhin die Prozesse sich im Ruhezustand befinden, so dass
an dieser Stelle ein Prüfpunkt
erstellt werden kann. Wenn beispielsweise q = 2 und p = 5 betragen,
würde herkömmlich jede
Programmkomponente 6 1/5 aller Eingangsdaten 21 in einer
Zykluszeit verarbeiten; unter der Voraussetzung einer gleichzeitigen
Ausführung
aller Programmkomponenten 6 werden alle Daten in der gleichen
Zykluszeit verarbeitet. Es kann jedoch kein Prüfpunkt erstellt werden, ehe
ein Zyklus beendet ist. Unter Verwendung der vorliegenden Erfindung
beträgt
bei Auswahl eines Überpartitionierungsfaktors von
3 die Gesamtzahl von verarbeitbaren Partitionen 3·5 = 15.
In jedem Ausführungszyklus
werden jedoch nur 5 Partitionen mit einer Größe von jeweils etwa 1/3 der
Größe einer
herkömmlichen
Partition verarbeitet. Unter der Voraussetzung linearer Verarbeitungszeiten
beträgt
die Zykluszeit für
jede Programmkomponente 6 etwa 1/3 der herkömmlichen
Zykluszeit. Nach jedem derartigen reduzierten Zyklus kann ein Prüfpunkt erstellt
werden, und dann kann eine nächste
Ausführungsphase 10 gestartet
werden. Das Erstellen von Prüfpunkten
und die Ausführungsphasen 10 werden
dann wiederholt, bis alle Überpartitionen verarbeitet
wurden.
-
Dynamische Überpartitionierung
-
Wie
vorstehend erwähnt
wurde, werden die Eingangsdaten 21 in einigen Fällen anfangs
auf eine für
die Programmkomponente 6 geeignete Weise partitioniert,
so dass in diesem Fall die in 2 dargestellte
Optimierung möglich
wird (d.h., die Partitionierer 2, die Kommunikationskanäle 3,
die Gatherer 4 und die Zwischendateien 5 sind
eliminiert). Das erforderliche explizite Überpartitionierungsverfahren beinhaltet
jedoch notwendigerweise die Verwendung von Partitionierern, usw.,
so dass die Vorteile der vorpartitionierten Optimierung verloren
gehen.
-
Die
zweite Ausführungsform
der vorliegenden Erfindung basiert nicht auf Partitionierern, usw. zum
Erzeugen überpartitionierter
Zwischendateien 5. Stattdessen wird in der zweiten Ausfürhunsgform eine
Eingangsdatei 1 effektiv neu partitioniert. Dieses Verfahren
wird als "dynamische Überpartitionierung" bezeichnet. 6 zeigt
ein Detaildiagramm des Überpartitionierungssystems
von 3b zum Darstellen der bevorzugten Ausführungsform
eines erfindungsgemäßen dynamischen Überpartitionierungssystems.
Dieses Verfahren kann verwendet werden, wenn durch Teilen der Eingangsdateien 1 in
als Datensegmente 27 bezeichnete sequentielle Partitionen für die Programmkomponente 6 geeignete
Partitionen erhalten werden können
(das Verfahren zum Erzeugen derartiger Segmente wird nachstehend
erläutert).
-
Die
dynamische Überpartitionierungsverarbeitung 28 führt dazu,
dass die Programmkomponenten 6 auf die Datensegmente 27 der
Eingangspartitionen 1 zugreifen können, wobei ein Segment jeder Eingangspartition 1 durch
die Programmkomponenten 6 in jeder von mehreren Ausführungsphasen 10 auf eine ähnliche
Weise wie bei der expliziten Überpartitionierung
verarbeitet wird. In der dynamischen Überpartitionierungsverarbeitung 28 erfolgt
dies ohne dass Zwischendateien erzeugt werden. Das Wesentliche der
dynamischen Überpartitionierung besteht
darin, jeden Prozess der Programmkomponente 6 zu "überlisten", ein Datensegment 27 der Eingangsdatendatei 1 zu
lesen, indem veranlasst wird, dass der entsprechende Prozess "annimmt", dass er einen vollständigen Datensatz 1 liest.
-
7 zeigt
ein Detaildiagramm zum Darstellen der Datenfluss-, Prozessor-, Kommunikations- und
Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen dynamischen Überpartitionierungssystems.
Die dynamische Überpartitionierung
wird in der bevorzugten Ausführungsform
folgendermaßen
implementiert:
- (1) Erzeugen eines geeigneten "Zeigers" 29 und einer Überwachungseinrichtung 30 für jede Eingangspartition 1.
(Die dynamische Überpartitionierungsverarbeitung 28 von 6 weist
den Zeiger 29 und die Überwachungseinrichtung 30 auf. Der
Zeiger 29 markiert eine Position (z.B., ein Byte-Offset)
innerhalb der Eingangspartition 1. Dadurch kann die Programmkomponente 6 Daten von
der Eingangsdatei 1 an der durch den Zeiger 29 aktuell
angezeigten Position lesen. Die Überwachungseinrichtung 30 prüft die durch
den Zeiger 29 angezeigte Dateneintragung, und kann den
Zeiger 29 zu einem geeigneten Zeitpunkt anweisen, eine "Datenende"markierung (EOF)
anzuzeigen, anstatt zur nächsten
Dateneintragung in der Eingangspartition 1 zu springen.)
- (2) Ausführen
von p Prozessen der Programmkomponente 6 in jeder Ausführungsphase 10.
- (3) Zugreifen auf Daten in einem Datensegment 27 nur über den
Zeiger 29 (anstatt zuzulassen, dass die Programm komponente 6 direkt
auf die Eingangspartition 1 zugreift).
- (4) Anweisen des Zeigers 29, eine Datendemarkierung
(EOF) anzuzeigen, wenn die Überwachungseinrichtung 30 das
Ende eines Datensegments 27 erfasst, wie nachstehend näher beschrieben
wird. (Weil der Zeiger 29 sich nicht wirklich am Ende der
Eingangspartition 1 befindet, wird dieses Ereignis als "künstliches Datenende" bezeichnet.)
- (5) Beenden der Programmkomponenten 6 (die jeweils
alle Daten in einem entsprechenden Datensegment 27 verarbeitet
haben).
- (6) Anschließendes
Schreiben der Inhalte des Zeigers 29 und der Überwachungseinrichtung 30 in
einen geeigneten Speicher, vorzugsweise unter Verwendung eines Two-Phase-Commit-Protocol, das
einen Teil eines Prüfpunkterstellungssystems aufweist.
- (7) Optionales Erstellen von Prüfpunkten im System, bevor die
Verarbeitung zum nächsten
Datensegment 27 fortschreitet.
- (8) Lesen der Inhalte des Zeigers 29 und der Überwachungseinrichtung 30 in
einen Arbeitsspeicher zu Beginn der nächsten Ausführungsphase 10.
- (9) Beginnen mit einer weiteren Ausführung der Programmkomponenten 6 unter
Verwendung eines entsprechenden Zeigers 29 zum Zugreifen auf
Daten. (Jeder Zeiger 29 wird nun auf einen Mittelabschnitt
einer Eingangspartition 1 verweisen, d.h. auf den Beginn
eines nächsten
Datensegments 29 dieser Eingangspartition 1. Dadurch wird
die Verarbeitung exakt an der Stelle starten, an der sie in der
vorangehenden Ausführungsphase 10 verlassen
wurde. Die Ausgangsdaten jeder Ausführungsphase 10 werden
an Ausgangsdaten der vorherigen Ausführungsphase ange hängt, so
dass es scheint, als ob die Anwendung vom Beginn bis zum Ende ohne
Unterbrechung durch die Eingangsdatendateien 21 fortgesetzt
wird.)
- (10) Beenden aller Ausführungen,
wenn alle Zeiger 29 das "tatsächliche" Ende ihrer Eingangspartition 1 erreichen
(d.h., es werden keine weiteren Ausführungsphasen ausgeführt, weil
alle Daten verarbeitet worden sind).
-
Die
Bestimmung, wann eine Überwachungseinrichtung 30 einen
Zeiger 29 anweist, ein künstliches Datenende anzuzeigen,
ist vom durch die Programmkomponente 6 verwendeten Partitionierungsschema
abhängig.
Es können
mehrere Fälle
auftreten.
-
Erstens
können
die Eingangsdaten für
die Programmkomponenten 6 auf eine beliebige Weise partitioniert
sein. Dies kann beispielsweise der Fall sein, wenn die Verarbeitung
einer Eintragung von der Verarbeitung der nächsten vollständig unabhängig ist.
In diesem Fall können
Segmentgrenzen auf eine beliebige geeignete Eintragungsgrenze fallen.
-
Zweitens
kann für
die Programmkomponenten 6 erforderlich sein, dass alle
Eintragungen, die den gleichen Wert eines Schlüssels aufweisen (z.B. eine
Angestelltenzahl), dem gleichen Segment 27 zugeordnet sind.
In diesem Fall sollten die Eingangsdaten 1 gemäß diesem
Schlüssel
sortiert sein. In diesem Fall sind Segmentgrenzen vorzugsweise derart eingeschränkt, dass
sie auf Grenzen zwischen Verarbeitungen aufeinanderfolgender Eintragungen
mit identischen Schlüsselwerten
liegen.
-
Drittens
können
die Programmkomponenten 6 von mehreren Eingangsdateien
lesen, wobei erforderlich ist, dass alle Eintragungen mit einem
vorgegebenen Schlüsselwert
in der gleichen Ausführungsphase
verarbeitet werden. In diesem Fall sollten die Daten in allen derartigen
Eingangsdateien bezüglich des
Eingangsschlüssels
sortiert sein, und die den Pro grammkomponenten 6 vorangehenden
verschiedenen Überwachungseinrichtungen 30 müssen künstliche
Datenendesignale koordinieren, so dass alle Zeiger 29 ihre
Daten bezüglich
der gleichen Schlüsselwertgrenze
segmentieren.
-
Schließlich ist
ein Mechanismus erforderlich, der bestimmt, wann die Überwachungseinrichtungen 30 beginnen,
eine geeignete Stelle zu suchen, an der ein künstliches Datenende eingefügt werden
kann. Im Fall der dynamischen Überpartitionierung
muss der Überpartitionierungsgrad
nicht im Voraus festgelegt werden. Die Programmkomponenten 6 werden ausgeführt, bis
ein Ereignis eintritt (z.B. tritt im Eingangsdatenstrom ein bestimmter
Datenwert auf, oder es verstreicht eine vorgegebene Zeitdauer, oder es
wird eine vorgegebene Anzahl von Bytes oder Eintragungen verarbeitet,
oder es wird ein vorgegebener Prozentsatz der Eingangsdatendateigröße verarbeitet,
usw.).
-
Diese
Anforderungen können
durch die in 8 dargestellte Architektur erfüllt werden,
die ein Diagramm zum Darstellen der Datenfluss-, Funktions- und
Kommunikationsbeziehungen eines Systems zum Implementieren von Zeigern 29 und Überwachungseinrichtungen 30 in
einem erfindungsgemäßen dynamischen Überpartitionierungssystem zeigt.
- (1) Alle Überwachungseinrichtungen 30 verwenden
gemeinsam einen globalen "Triggerkanal" 31 für eine wechselseitige
Kommunikation.
- (2) Alle Überwachungseinrichtungen 30,
die bezüglich
eines bestimmten Schlüsselwertes "koordinieren" müssen, sind über einen
Koordinierungskanal 32 verbunden (es können mehrere Koordinierungskanäle 32 vorhanden
sein).
- (3) Eine beliebige Überwachungseinrichtung 30 kann
zu einem beliebigen Zeitpunkt eine "Phasenunterbrechungs"meldung über den Triggerkanal 31 übertragen;
die Meldung wird durch eine andere Überwachungseinrichtung 30 über den Triggerkanal 31 empfangen.
Ein derartiges Ereignis wird typischerweise nach Ablauf einer bestimmten Zeitdauer
auftreten, nachdem eine bestimmte Datenmenge die Überwachungseinrichtung
durchlaufen hat, oder nachdem ein Schlüsselwert in einer Eintragung
erfasst wird.
- (4) Nachdem eine Phasenunterbrechungsmeldung empfangen worden
ist, erfasst jede Überwachungseinrichtung 30 den
Schlüssel
von der letzten Eintragung, die tatsächlich von ihrem aktuellen
Datensegment 27 gelesen wurde, und überträgt diesen Schlüssel über ihren
Koordinierungskanal 32 zu einer spezifizierten "Hauptüberwachungseinrichtung".
- (5) Jede Hauptüberwachungseinrichtung
wartet, bis ein Schlüssel
von jeder Überwachungseinrichtung 30 über ihren
Koordinierungskanal 32 (einschließlich ihres eigenen) empfangen
worden ist, und erfasst dann den größten Schlüsselwert in diesem Satz. Dieser
Schlüssel
wird als "Unterbrechungspunktschlüssel" bezeichnet.
- (6) Jede Hauptüberwachungseinrichtung überträgt den Unterbrechungspunktschlüssel über ihren
Koordinierungskanal 32 zu allen Überwachungseinrichtungen.
- (7) Jede Überwachungseinrichtung 30 aktiviert dann
ihren entsprechenden Zeiger 29, um die Datenzufuhr zu einer
entsprechenden Programmkomponente 6 fortzusetzen, bis ein
Schlüssel
erreicht wird, der den Wert des Unterbrechungspunktschlüssels überschreitet.
An diesem Punkt wird durch diese Überwachungseinrichtung 30 ein künstliches
Datenendesignal erzeugt, wodurch die aktuelle Ausführungsphase 10 beendet
wird.
- (8) In einem besonderen Fall, in dem die Überwachungseinrichtungen 30 nicht
koordiniert werden müssen
(wenn beispielsweise die Programmkomponenten 6 von einer
einzelnen Eingangsdatendatei 21 lesen), enthält jeder
Ko ordinationskanal 32 eine einzelne Überwachungseinrichtung 30 (d.h.
es ist keine gemeinsame Verwendung von Information zwischen den Überwachungseinrichtungen
erforderlich). Der vorstehende Algorithmus bleibt ansonsten unverändert. In
einer alternativen Ausführungsform
werden überhaupt
keine Koordinationskanäle 32 eingerichtet.
- (9) In einem besonderen Fall, in dem die Phasenunterbrechung
ohne Berücksichtigung
von Schlüsseln
erzeugt werden kann (z.B. basierend auf der verstrichenen Zeit oder
der Anzahl von Eintragungen, usw.) erzeugen die Überwachungseinrichtungen 30 unmittelbar
nach dem Empfang einer Phasenunterbrechungsmeldung über den
Triggerkanal 31 einfach ein künstliches Datenendesignal.
-
Die
Kombination aus dem Zeiger 29 und der Überwachungseinrichtung 30 kann
zwischen den Programmkomponenten 6 und den Eingangspartitionen 1 auf
eine beliebige von mindestens drei Weisen eingefügt werden:
- (1)
Die Programmkomponente 5 kann unter Verwendung einer Unterprogramm-Bibliothek
geschrieben oder überschrieben
werden, die Zeiger 29 und Überwachungseinrichtungen 30 erzeugt. Hierfür ist ein
Zugriff auf den Quellencode der Programmkomponente 6 erforderlich,
was zwar zeitaufwendig sein kann, jedoch die höchste Leistungsfähigkeit
bietet.
- (2) Die Programmkomponente 6 kann auf bekannte Weise
mit einer Laufzeitbibliothek verknüpft werden, die Aufrufe untergeordneter
Eingabe-/Ausgabemechanismen unterbricht. Beispielsweise kann ein
Aufruf "Öffnen" unterbrochen und
auf einen Aufruf "Zeiger öffnen" geschaltet werden;
ein Aufruf "Lesen" könnte unterbrochen
und auf einen Aufruf "Lesen
vom Zeiger" geschaltet
werden. Hierfür
ist ein Zugriff auf den Objektcode der Pro grammkomponente 6 erforderlich,
aber diese Vorgehensweise ist wahrscheinlich hochgradig effizient.
- (3) Eine "Zwischenverarbeitung" kann zwischen jeder
Programmkomponente 6 und ihrer Eingangspartition 1 eingefügt werden.
Die Zwischenverarbeitung liest die Eingangspartitionsdatei 1 über den
Cusor-/Überwachungseinrichtungsmechanismus
und leitet dann Daten über
einen Kommunikationskanal oder eine Zwischendatei auf bekannte Weise
zur Programmkomponente 6 weiter. Diese Option erfordert
lediglich einen Zugriff auf die auführbare (binäre) Form der Programmkomponente 6,
kann jedoch aufgrund des Aufwandes zum Kopieren von Daten von der
Eingangspartitionsdatei 1 auf einen Kommunikationskanal
oder in eine Zwischendatei etwas ineffizient sein.
-
Indem
jeder Prozess der Programmkomponente 6 "überlistet" wird, jeweils nur
ein Datensegment der Eingangsdatendatei 1 zu lesen und
dann ein "natürliches" Ende der Programmkomponenten 6 erzwungen
wird, indem am Ende jedes Datensegments 27 ein künstliches
Datenendesignal erzeugt wird, kommt die Anwendung häufiger in
einen Ruhezustand, so dass in einer Anwendung, die eigentlich keine
häufige
Prüfpunkterstellung
unterstützt,
eine bessere Prüfpunkterstellung
ermöglicht
wird.
-
Durch
die vorliegende Erfindung werden zwei Verfahren zum Modifizieren
einer Aufgabe in einer komplexen parallelen Anwendung bereitgestellt, so
dass diese häufiger
einen Ruhezustand erreicht (in dem Prüfpunkte erstellt werden können). Durch die
vorliegende Erfindung wird ein Verfahren bereitgestellt, das insbesondere
für Anwendungen
geeignet ist, die auf Parallelverarbeitungssystemen laufen, und
außerdem
für Anwendungen,
die auf verteilten Verarbeitungssystemen laufen.
-
Die
Erfindung kann in Hard- und/oder Software implementiert werden.
Die Erfindung wird jedoch vorzugsweise durch ein Computerprogramm implementiert,
das auf programmierbaren Computern ausgeführt wird, die jeweils einen
Prozessor, ein Datenspeichersystem (z.B. flüchtige und nichtflüchtige Speicher
und/oder Speicherelemente), mindestens eine Eingabeeinrichtung und
mindestens eine Ausgabeeinrichtung aufweisen. Ein Programmcode wird
auf Eingangsdaten angewendet, um die hierin beschriebenen Funktionen
auszuführen
und Ausgangsinformation zu erzeugen. Die Ausgangsinformation wird
auf bekannte Weise einer oder mehreren Ausgabeeinrichtungen zugeführt.
-
Jedes
Programm wird vorzugsweise in einer höheren prozeduralen oder objektorientierten
Programmiersprache implementiert, um mit einem Computersystem zu
kommunizieren. Die Programme können
jedoch auch gegebenenfalls in Assembler- oder Maschinensprache implementiert
werden. Die Sprache kann jedenfalls eine kompilierte oder interpretierte
Sprache sein.
-
Jedes
Computerprogramm ist vorzugsweise auf einem Speichermedium oder
auf einer Speichervorrichtung gespeichert (z.B. in einem ROM-Speicher
oder auf einer magnetischen Diskette), die durch einen programmierbaren
Universalrechner oder einen Spezialrechner lesbar ist, um den Computer
zu konfigurieren und zu betreiben, wenn das Speichermedium oder
die Speichervorrichtung durch den Computer gelesen wird, um die
hierin beschriebenen Prozeduren auszuführen. Das erfindungsgemäße System
könnte
auch als computerlesbares Speichermedium implementiert werden, das
mit einem Computerprogramm konfiguriert ist, wobei das Speichermedium
derart konfiguriert ist, dass ein Computer veranlasst wird, auf
eine spezifische und vordefiniert Weise zu arbeiten, um die hierin
beschriebenen Funktionen auszuführen.
-
Vorstehend
sind mehrere Ausführungsformen
der vorliegenden Erfindung beschrieben worden. Die vorliegende Erfindung
ist nicht auf die dargestellten spezifischen Ausführungsformen
beschränkt,
sondern innerhalb des durch die beigefügten Patentansprüche definierten
Schutzumfangs der vorliegenden Erfindung sind verschiedenartige
Modifikationen möglich.