-
Gebiet der Erfindung.
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der Datenverarbeitung,
und spezifischer, ohne Einschränkung,
auf den Ausgleich von Datenobjektgrößen im Multi-Computing Umfeld.
-
Hintergrund und Stand der
Technik
-
Verschiedene
Multi-Computing Architekturen sind nach dem Stand der Technik bekannt,
bei denen eine Vielzahl von Verarbeitungseinheiten zu einem Cluster
zusammengeschlossen werden. Solche Architekturen werden bei der
Parallelverarbeitung und auf dem aufstrebenden Gebiet des Blade-Computing
verwendet.
-
Blade-Computing
stützt
sich auf Blade-Server, die modulare Einplatinen-Computer sind. Eine Übersicht über Blade Computing wird gegeben
in "Architectures
and Infrastructure for Blade Computing", September 2002, Sun Microsystems und "THE NEXT WAVE: BLADE
SERVER COMPUTING",
Sun Microsystems (www.sun.com/servers/entry/blade).
-
Ein
Inhalts-Lastausgleich-Blade ist im Handel verfügbar von Sun Microsystems ("Sun Fire TM B10n"). Dieser Blade liefert
Management-Funktionalitäten
für Verkehr
und Inhalt. Inhalts-Belastungsausgleich wird erreicht basierend
auf URLs, CGI Scripts und Cookies; Server-Belastungsausgleich wird
erreicht basierend auf Server-Belastung, Antwortzeiten und gewichteten
ringverteilten Algorithmen.
-
Die
US Patentanmeldung Nr. 20030105903 zeigt einen Web Edge Server,
der aus einer Reihe von Blade-Servern besteht. Ein Schalter und
ein Informationszuordnungsmodul werden zum Zwecke des Ausgleichs
bereitgestellt. Das Informationszuordnungsmodul erhält eine
Informationsmitteilung, führt
die Verarbeitung der Mitteilung durch, um seinen Bestimmungsort
zu bestimmen, und leitet die Mitteilung über ein internes Kommunikationsnetzwerk
an den festgestellten Bestimmungsort weiter.
-
Aggarwal,
G.; Motwani, R.; Zhu, A.: "The
load rebalancing Problem" betrachtet
das Problem des Ausgleichs der Prozessorbelastung. Unter der Annahme
einer möglicherweise
sub-optimalen Zuordnung von Aufgaben zu Prozessoren ist der Zweck
des Belastungsausgleichs die Neuzuordnung von Aufgaben zu verschiedenen
Prozessoren, um die Bearbeitungszeit zu minimieren, wobei so wenig
Aufgaben wie möglich
bewegt werden.
-
US 2002/004 6316 A1 zeigt
eine Methode der Optimierung von nicht-linearen Randbedingungen
in einer Speichersystemkonfiguration. Das Speicherzuordnungsproblem
ist als ein Programmierproblem mit nicht-linearen Randbedingungen
unter Verwendung verschiedener Heuristikmethoden zur Optimierung
formalisiert.
-
Fonlupt,
C. et al.: "Data-parallel
load balancing strategies" betrachtet
die parallele Datenimplementierung von Stapelalgorithmen unter Verwendung
eines parallelen Rechenmodells.
-
Lu,
E. J.-L., Okunbur, D. I.: "An
efficient load balancing technique for parallel FMA in message passing environments" betrachtet die N-Körper-Simulation,
die zum Studieren der Dynamik von galaktischen Systemen, Flüssigkeiten
und Bio-Molkülen verwendet
wird. Um das Ausgleichsproblem für
die Computerbelastung zu erleichtern, wird eine Teilungstechnik
mit der Bezeichnung gewichtete Unter-Bäume vorgeschlagen, um den Ausgleich
für die
Prozessorbelastung im Umfeld der Weiterleitung von Mitteilungen
zu verbessern. Eine Standardabweichung wird benutzt, um den Belastungsausgleich
zwischen den Prozessoren zu messen. Ein niedriger Wert für die Standardabweichung
bedeutet eine gute Qualität
des Belastungsausgleichs.
-
Kit-Sang,
T. et al.: "Optimal
File Placement in VOD System using Genetic Algorithm" betrachtet die Platzierung
von Multimediadateien auf Video-Servern.
-
Es
benutzt eine Kombination von genetischen Algorithmen und modifiziertem
Bin-Packing.
-
Übersicht über die Erfindung
-
Die
vorliegende Erfindung stellt ein computer-implementiertes Verfahren
für die
Zuordnung von Datenobjekten zu Verarbeitungseinheiten, ein Computerprogrammprodukt
und ein Datenverarbeitungssystem wie in den unabhängigen Ansprüchen beansprucht
zur Verfügung.
Bevorzugte Ausführungsformen
sind in den abhängigen
Ansprüchen
angegeben.
-
Im
Besonderen bietet die vorliegende Erfindung bietet eine Methode
für die
Zuordnung von Datenobjekten zu Verarbeitungseinheiten eines Clusters
von Verarbeitungseinheiten, wobei jede Verabeitungseinheit eine
bestimmte Speicherkapazität
besitzt. Zum Beispiel sind die Verarbeitungseinheiten einander ähnlich oder im
Wesentlichen identisch und haben identische Speicherkapazitäten wie
im Fall von Blade-Computing.
-
Für die Durchführung der
Zuordnung von Datenobjekten zu Verarbeitungseinheiten wird eine
vorläufige
Zuordnung der Datenobjekte zu den Verarbeitungseinheiten vorgesehen.
Das kann eine beliebige willkürliche
Zuordnung sein, wie z. B. eine echte aktive Zuordnung von Datenobjekten
zu einem vorhandenen Datenverarbeitungssystem, oder eine vorherberechnete
Zuordnung mit einer minimalen Anzahl von Verarbeitungseinheiten.
Darüber
hinaus wird eine geordnete Sequenz von Datenobjekten geliefert.
Auf dieser Basis wird eine Neuzuordnung der Datenobjekte durchgeführt, um
in einer oder mehreren Iterationen die Gleichmäßigkeit der initialen Verteilung
zu verbessern.
-
Die
Verarbeitung der Datenobjekte wird gemäß der Reihenfolge der Sequenz
durchgeführt.
In jeder Iteration wird ein Satz von Verarbeitungseinheiten bestimmt,
der aus Verarbeitungseinheiten besteht, die eine Gesamtgröße von zugeordneten
Datenobjekten oberhalb eines Grenzwertes aufweisen. Die übrigen Verarbeitungseinheiten
bilden eine zweiten Satz von Verarbeitungseinheiten, d. h. Verarbeitungseinheiten
mit einer Gesamtgröße and zugeordneten
Datenobjekten unterhalb des Grenzwertes.
-
Als
Nächstes
wird bestimmt, ob das betrachtete Datenobjekt der geordneten Sequenz
auf eine Verarbeitungseinheit des zweiten Satzes passt. Mit anderen
Worten, eine Bestimmung wird durchgeführt, ob eine Verarbeitungseinheit
des zweiten Satzes genügend
Speicherkapazität
besitzt, um das betrachtete Datenobjekt aufnehmen zu können. Wenn
eine solche Verarbeitungseinheit des zweiten Satzes identifiziert
werden kann, wird das betrachtete Datenobjekt vorläufig dieser
Verarbeitungseinheit des zweiten Satzes neu zugeordnet, und ein
statistisches Maß wird
berechnet für
die resultierende vorläufige
Zuordnung. Für
den Fall, dass das statistische Maß eine verbesserte Gleichmäßigkeit
der vorläufigen
Zuordnung im Vergleich mit der Verteilung der vorhergehenden Iteration
anzeigt, wird das betrachtete Datenobjekt der Verarbeitungseinheit
des zweiten Satzes neu zugeordnet.
-
Die
Verarbeitung der Datenobjekte der geordneten Sequenz hört auf,
wenn entweder der erste oder der zweite Satz leer ist oder das letzte
Element der Sequenz verarbeitet ist. Auf diese Weise kann die Gleichmäßigkeit
der initialen Verteilung der Datenobjekte zu der Verarbeitungseinheit
erheblich verbessert werden. Das hat den Vorteil, dass die Belastung
der individuellen Verarbeitungseinheiten bezüglich ihrer Speicherkapazität etwa gleich
verteilt werden kann.
-
Nach
einer bevorzugten Ausführungsform
der Erfindung wird die geordnete Sequenz der Datenobjekte dargestellt,
indem die Datenobjekte nach Größe sortiert
werden. Diese geordnete Sequenz kann sowohl für die iterative Neuzuordnung
der Datenobjekte zur Verbesserung der Gleichmäßigkeit als auch für die Durchführung der
initialen Verteilung benutzt werden.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung wird die initiale Verteilung von Datenobjekten zu
Verarbeitungseinheiten mit einem Verfahren durchgeführt, das
mit dem größten Datenobjekt
in der Sequenz beginnt und so lange fortgeführt wird, bis die verbleibende
Speicherkapazität
der betrachteten Verarbeitungseinheit unterhalb der Größe des kleinsten
verbleibenden Datenobjektes der Sequenz liegt. Wenn diese Bedingung
erfüllt
ist, wird das Verfahren erneut für
die nächste
Verarbeitungseinheit durchgeführt,
wobei Datenobjekte, die zuvor zugeordnet worden sind, aus der Sequenz
gelöscht
werden. Auf diese Weise kann eine minimale Anzahl von Verarbeitungseinheiten
für die
Bearbeitung eines gegebenen Satzes von Datenobjekten bestimmt werden.
-
Nach
einer bevorzugten Ausführungsform
der Erfindung wird die verbleibende Speicherkapazität einer Verarbeitungseinheit
durch die Differenz der Speicherkapazität der Einheit und der Gesamtgröße der Datenobjekte,
die der Verarbeitungseinheit zugeordnet worden sind, bestimmt. Auf
der Basis dieser Definition der verbleibenden Speicherkapazität wird die
minimale Anzahl von Verarbeitungseinheiten bestimmt.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung wird das theoretische Speicherkapazitäts-Minimum
pro Verarbeitungseinheit für
eine perfekt gleich verteilte Speicherbelastung als Grenzwert für die Unterscheidung
zwischen Verarbeitungseinheiten benutzt, die in den ersten und in
den zweiten Satz gehören.
Dieser Grenzwert wird erhalten, indem die Summe der Größen der
Datenobjekte berechnet und durch die Gesamtzahl der Verarbeitungseinheiten
dividiert wird.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung basiert das statistische Maß, das für die Bewertung der Qualität der Verteilung
der Datenobjekte auf Verarbeitungseinheiten benutzt wird, auf der Gesamtgröße der den
Verarbeitungseinheiten zugeordneten Datenobjekte. Mit anderen Worten,
die Gesamtgröße der Datenobjekte,
die jeder Verarbeitungseinheit zugeordnet sind, wird berechnet.
Das liefert eine Gesamtgröße pro Verarbeitungseinheit.
Vorzugsweise ist das statistische Maß die Standardabweichung oder
Varianz der gesamten Datenobjektgrößen.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung kann es mehr als eine Verarbeitungseinheit des zweiten
Satzes geben, die eine ausreichende verbleibende Speicherkapazität für die Aufnahme
des betrachteten Datenobjekts besitzt. In diesem Fall wird das betrachtete
Datenobjekt vorläufig
einer der Verarbeitungseinheiten des zweiten Satzes zugeordnet,
die die entsprechendee Anzahl von vorläufigen Zuordnungen bereitstellt.
Jede dieser vorläufigen
Zuordnungen wird mithilfe des statistischen Maßes untersucht. Auf dieser
Basis wird die vorläufige
Verteilung ausgewählt,
die entsprechend Anzeige durch das statistische Maß die höchste Qualität aufweist,
und das Datenobjekt wird entsprechend neu zugewiesen.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung ist jede der Verarbeitungseinheiten ein Blade oder
ein Blade-Server. Einer der Blades kann ein Programm besitzen, das
die Prinzipien der vorliegenden Erfindung implementiert, um Datenobjekt-Größenausgleich
durchzuführen.
Auf diese Weise kann die Anzahl der Tauschvorgänge zwischen den Blades minimiert
werden.
-
Nach
einer weiteren bevorzugten Ausführungsform
der Erfindung werden die Prinzipien der Erfindung in einem Anwendungsprogramm
implementiert, das auf einem Personal-Computer läuft. Dem Anwendungsprogramm
wird eine Liste mit Datenobjekten und den geschätzten Größen der Datenobjekte geliefert,
die durch einen Cluster von Verarbeitungseinheiten gehandhabt werden
müssen.
Auf der Basis der Datenobjektgrößen kann
die Mindestanzahl von Verarbeitungseinheiten bestimmt werden, die
für die
Verarbeitung notwendig ist. Darüber
hinaus kann die initiale Verteilung der Datenobjekte zu den Verarbeitungseinheiten
durch iterative Neuzuordnung von Datenobjekten zu Verarbeitungseinheiten
verbessert werden.
-
Es
ist anzumerken, dass die vorliegende Erfindung nicht auf eine bestimmte
Art von Datenobjekten beschränkt
ist. Zum Beispiel werden Datenobjekte wie z. B. Tabellen, Arrays,
Listen und Bäume,
Verarbeitungseinheiten wie z. B. Blades entsprechend der vorliegenden
Erfindung zugeordnet. Zum Beispiel führt jede der Verarbeitungseinheiten
eine Datenverarbeitungsaufgabe durch, zu der ihre entsprechenden
Datenobjekte zugeordnet sind.
-
Kurze Beschreibung der Zeichnungen
-
Nachfolgend
werden bevorzugte Ausführungsformen
der Erfindung in größerem Detail
beschrieben, indem Bezug auf die Zeichnungen genommen wird, die
Folgendes zeigen:
-
1 zeigt
ein Flussdiagramm einer bevorzugten Ausführungsform einer Methode der
Erfindung,
-
2 ist
ein schematisches Blockdiagram eines modularen Computer-Systems, das einen
Cluster von Blades besitzt,
-
3 veranschaulicht
ein Flussdiagramm für
die Zuordnung von Datenobjekten zu Blades und für die Bestimmung der Mindestanzahl
von Blades,
-
4 ist
ein Beispiel für
Tabellen, die Blades zugeordnet werden müssen,
-
5 zeigt
das Resultat eines Sortiervorgangs,
-
6 zeigt
den ersten Schritt für
die Zuordnung einer Tabelle zu dem ersten der Blades,
-
7 zeigt
einen zweiten Schritt für
die Zuordnung einer Tabelle zu dem ersten Blade,
-
8 zeigt
die erste Zuordnung einer Tabelle zu einem zweiten Blade,
-
9 zeigt
eine zweite Zuordnung einer Tabelle zu einem zweiten Blade,
-
10 zeigt
die Zuordnung von 3 weiteren Tabellen zu dem zweiten Blade,
-
11 zeigt
die resultierende Zuordnung von Tabellen zu Blades als Resultat
des Zuordnungsvorgangs,
-
12 veranschaulicht
den Unterschied zwischen abgebenden und annehmenden Blades in der
initialen Verteilung wie in 11 gezeigt,
-
13 veranschaulicht
die vorläufige
Neuzuordnung der Tabelle 16 zu Blade 8,
-
14 veranschaulicht
die vorläufige
Neuzuordnung der Tabelle 10 von Blade 7 zu Blade 8,
-
15 veranschaulicht
die vorläufige
Neuzuordnung der Tabelle 17 von Blade 5 zu Blade 7,
-
16 veranschaulicht
eine Situation, bei der auf einem empfangenden Blade nicht genügend verbleibende
Speicherkapazität
vorhanden ist,
-
17 veranschaulicht
eine vorläufige
Neuzuordnung der Tabelle 18 von Blade 7 auf Blade 5,
-
18 veranschaulicht
eine vorläufige
Neuzuordnung der Tabelle 8 von Blade 8 auf Blade 7,
-
19 veranschaulicht
eine vorläufige
Neuzuordnung der Tabelle 19 von Blade 4 auf Blade 8,
-
20 veranschaulicht
eine vorläufige
Neuzuordnung der Tabelle 7 von Blade 3 auf Blade 4,
-
21 veranschaulicht
eine vorläufige
Neuzuordnung der Tabelle 12 auf empfangende Blades 3 und 5,
-
22 veranschaulicht
mehrfache vorläufige
Neuzuordnungen der Tabelle 6 zu Blades 1, 5, 7 und 8,
-
23 veranschaulicht
mehrfache vorläufige
Neuzuordnungen der Tabelle 2 zu Blades 5, 7 und 8,
-
24 zeigt
die endgültige
Neuzuordnung der Tabelle zu Blades,
-
25 veranschaulicht ein Flussdiagramm einer
bevorzugten Ausführung
einer Methode der Erfindung,
-
26 veranschaulicht
ein Computersystem, das die Zuordnung von Datenobjekten zu Blades
durchführt.
-
Detaillierte Beschreibung
-
1 zeigt
eine Methode für
die Verbesserung der Gleichmäßigkeit
einer initialen Verteilung von Datenobjekten zu Verarbeitungseinheiten.
In Schritt 50 wird eine geordnete Sequenz von Datenobjekten
bereitgestellt. In dem hier betrachteten Beispiel erfordert das
erste Element der geordneten Sequenz den größten Speicherplatz. Die geordnete
Sequenz ist nach fallender Größe des Datenobjekts
sortiert.
-
In
Schritt 52 wird eine initiale Verteilung von Datenobjekten
zu Verarbeitungseinheiten bereitgestellt.
-
Im
folgenden Schritt wird eine Schleife 54 für alle Datenobjekte
der Sequenz in der Reihenfolge der Sequenz durchgeführt. In
Schritt 56 der Schleife 54 wird eine Bestimmung
von abgebenden und annehmenden Verarbeitungseinheiten auf der Basis
der augenblicklichen Verteilung von Datenobjekten an Verarbeitungseinheiten
gemacht. In der ersten Iteration, wenn das erste Datenobjekt in
der geordneten Sequenz betrachtet wird, ist die augenblickliche
Verteilung die in Schritt 52 gelieferte initiale Verteilung.
-
Eine
abgebende Verarbeitungseinheit ist eine Verarbeitungseinheit die
zu dem ersten Satz von Verarbeitungseinheiten gehört, d. h.
die eine Gesamtgröße von zugeordneten
Datenobjekten hat, die oberhalb eines Grenzwertes liegt. Diejenigen
Verarbeitungseinheiten, die nicht abgebende Verarbeitungseinheiten
sind, sind per Definition empfangende Verarbeitungseinheiten, d.
h. Verarbeitungseinheiten, die zu dem zweiten Satz gehören, die
Gesamtgrößen von
Datenobjekten haben, die unterhalb des Grenzwertes liegen. Der Grenzwert, der
benutzt wird, um zwischen abgebenden und empfangenden Verarbeitungseinheiten
zu unterscheiden, wird erhalten durch Berechnung der Summe der Größe aller
Datenobjekte, die den Verarbeitungseinheiten zugeordnet werden sollen,
geteilt durch die Anzahl der Verarbeitungseinheiten.
-
In
Schritt 58 der Schleife 54 wird ein Datenobjekt
einer abgebenden Verarbeitungseinheit vorläufig einer empfangenden Verarbeitungseinheit
zugeordnet, die eine für
das betrachtete Datenobjekt ausreichende Speicherkapazität besitzt.
In Schritt 60 wird das statistische Maß für die vorläufige Verteilung von Datenobjekts auf
Verarbeitungseinheiten berechnet. Das statistische Maß ist so
definiert, dass es einen Grad der Gleichmäßigkeit der Verteilung angibt.
-
In
Schritt 62 wird bestimmt, ob die vorläufige Verteilung im Vergleich
zur augenblicklichen Verteilung, d. h. die initiale Verteilung für die erste
Iteration von Schleife 54, einen höheren Grad an Gleichmäßigkeit
besitzt. Wenn das der Fall ist, wird die vorläufige Neuzuordnung bestätigt und
das Datenobjekt wird in Schritt 64 neu zu der empfangenden
Verarbeitungseinheit zugeordnet, was die neue augenblickliche Verteilung
darstellt. Die neue augenblickliche Verteilung stellt die Basis
für die
nächste
Iteration von Schleife 54 bezüglich des nächsten Datenobjekts in der
geordneten Sequenz dar.
-
Wenn
die Gleichmäßigkeit
der vorläufigen
Verteilung im Vergleich zur augenblickliche Verteilung nicht verbessert
ist, wird die augenblickliche Verteilung für den Zweck der fortlaufenden
Iteration beibehalten.
-
Wenn
alle Datenobjekte der geordneten Sequenz in Schleife 54 verarbeitet
worden sind, oder für
den Fall, dass es keine abgebende oder empfangende Verarbeitungseinheiten
gibt, hält
Schleife 54 an.
-
Als
ein Ergebnis ist der Output von Schritt 66, dass die endgültige Verteilung
von Datenobjekten zu Verarbeitungseinheiten eine verbesserte Gleichmäßigkeit
im Vergleich zur initialen Verteilung besitzt.
-
2 veranschaulicht
eine Anwendung der Methode von 1 auf Blade-Computing. Cluster 100 hat Blades
B1, B2, B3, ..., BN. Jeder
dieser Blades hat Prozessor 102 und Speicher 104.
In dem hier betrachteten Beispiel haben alle Speicher 104 die
gleiche Speicherkapazität.
Die Blades sind durch ein Netzwerk 106 miteinander verbunden,
wie z. B. ein Bussystem. Die Anzahl N von Blades des Clusters 100 muss
so gewählt werden,
dass eine bestimmte Anzahl von M Datenobjekten verschiedener Größe gehandhabt
werden können.
-
Zum
Beispiel implementiert Cluster 100 eine so genannte Suchmaschine.
In diesem Fall laufen identische Suchprozesse auf jedem der Blades.
Die Zuordnung von Datenobjekten wie Indextabellen zu Blades kann
in einer Verteilungseinheit (nicht in der Zeichnung gezeigt) von
Cluster 100 gespeichert werden. Auf diese Weise werden
Datenobjekte und Datenverarbeitungsaufgaben, die auf den Blades
laufen, zu Blades zugeordnet.
-
3 zeigt
die entsprechende Prozedur für
die Zuordnung der Datenobjekte zu Blades, wodurch der Minimalwert
für N bestimmt
wird.
-
In
Schritt 200 wird ein Sortiervorgang durchgeführt, um
M Datenobjekte nach Größe zu sortieren.
Die entsprechende Datenobjektsequenz wird in Schritt 202 bereitgestellt.
In Schritt 204 wird der Index i für die Blades auf eins initialisiert.
-
In
Schritt 206 beginnt das Verarbeiten der Datenobjektsequenz
in der Reihenfolge, wobei mit dem größten Datenobjekt der Sequenz
begonnen wird. Das erste Datenobjekt der Sequenz, welches per Definition das
größte Datenobjekt
der Sequenz ist, wird in Schritt 206 Blade B1 zugeordnet.
In Schritt 208 wird das erste Datenobjekt, welches zu Blade
B1 zugeordnet wurde, aus der Sequenz gelöscht.
-
In
Schritt 210 wird die Größe der Datenobjekte,
die bereits zu Blade B1 zugeordnet worden
sind, aufsummiert, und ein Abstand G zwischen der gesamten Datenobjektgröße und dem
Grenzwert berechnet. Wenn die Zuordnungsprozedur von 3 das
erste Mal durchgeführt
wird, ist der Grenzwert gleich der Speicherkapazität eines
der Blades.
-
In
Schritt 212 wird bestimmt, ob ein Datenobjekt in der Sequenz
verbleibt, das in diesen Abstand G passt. Wenn das der Fall ist,
wird in Schritt 214 das größte dieser Datenobjekte dem
Blade B1 zugeordnet und aus der Sequenz
gelöscht,
bevor die Steuerung zu Schritt 210 zurückgeht.
-
Wenn
es kein Datenobjekt gibt, das in den Abstand G passt, wird Schritt 218 durchgeführt. In
Schritt 218 wird bestimmt, ob alle Datenobjekte bereits
zu Blades zugeordnet sind. Mit anderen Worten, in Schritt 218 wird überprüft, ob die
Sequenz leer ist. Wenn das nicht der Fall ist, wird in Schritt 220 der
Index i erhöht
und die Steuerung geht zurück
auf Schritt 206, um die verbleibenden Datenobjekte der
Sequenz zu dem nächsten Blade
B2 zuzuordnen.
-
Wenn
das Gegenteil der Fall ist, ist Index i gleich der minimalen Anzahl
N von Blades, die notwendig sind, um die M Datenobjekte zu handhaben.
Diese Anzahl wird in Schritt 222 ausgegeben. Die minimale
Anzahl N von Blades kann die Basis sein für eine Investitionsentscheidung,
die entsprechende Anzahl von Blades zu kaufen. Zusätzlich wird
die Zuordnung von Datenobjekten zu Blades in Schritt 224 ausgegeben,
um die Qualität
des Ausgleichs der Datenobjektgröße darzustellen.
-
4 zeigt
ein Beispiel. In dem hier betrachteten Beispiel sind die Datenobjekte
eine Anzahl von zwanzig verschiedenen Tabellen, die eine Größe zwischen
50 MB und 3566 MB besitzen, wie in 4 gezeigt. Zum
Beispiel hat Tabelle 1 eine Größe von 3250
MB, Tabelle 2 hat 150 MB, Tabelle 3 hat 750 MB, usw. Die Tabellengrößen können entweder
die aktuellen Tabellengrößen oder
die mittleren Tabellengrößen sein,
die dadurch erhalten wurden, dass ein Datenverarbeitungssystem im
Einsatz beobachtet wird. Alternativ sind die Tabellengrößen Schätzungen
zum Zwecke der Planung von Cluster 100.
-
5 zeigt
das Resultat des Sortiervorgangs, der an den Tabellen 1 bis 20 der 4 durchgeführt wurde
(vgl. Schritt 202 von 3).
-
6 veranschaulicht
die Zuordnung des ersten Datenobjekts der Sequenz, d. h. der größten Tabelle 20
zu Blade B1. In dem hier betrachteten Beispiel
hat jeder Blade eine Speicherkapazität von 4 GB = 4096 MB Hauptspeicher.
Tabelle 20 hat eine Größe von 3566
MB, was einen Abstand G von 530 MB von verbleibender Speicherkapazität freilässt (vgl.
Schritt 210 von 3).
-
Als
Nächstes
wird bestimmt, ob es ein nächstes
Datenobjekt in der Sequenz gibt, das in Abstand G passt. Tabelle
12, die eine Größe von 520
MB hat, ist die größte Tabelle,
die in Abstand G passt. Diese Tabelle 12 wird daher Blade 1 zugeordnet.
Die Gesamtgröße der Datenobjekte,
die Blade 1 zugeordnet sind, d. h. Tabelle 20 und Tabelle 12, ist
4068 MB, was einen Abstand G von 10 MB frei lässt (vgl. 7).
Dieser Abstand G von 10 MB ist zu klein, um sogar das kleinste verbleibende
Datenobjekt der Sequenz von Tabellen aufzunehmen.
-
Da
Tabellen in der Sequenz verbleiben, die noch nicht zu einem Blade
zugeordnet worden sind, wird der Index i erhöht und die Zuordnungsprozedur
geht zum nächste
Blade B2 (vgl. Schritte 218 und 220 von 3).
In Bezug auf Blade B2 wird die oben erläuterte Prozedur
erneut auf der Basis der nicht zugeordneten Tabellen durchgeführt, die
in der Sequenz verbleiben.
-
Auf
diese Weise wird die größte verbleibende
Tabelle der Sequenz, d. h. Tabelle 15, zu Blade B2 zugewiesen,
was einen Abstand G von 596 MB frei lässt. Abstand G wird mit den
Tabellen 6, 2, 13 und 14 gefüllt, wie
in den 8 und 9 gezeigt wird. Die resultierende
Zuordnung von Tabellen zu Blade B2 wird
in 10 gezeigt.
-
Die
Gesamtgröße der Tabellen,
die zu Blade B2 zugeordnet worden sind,
d. h. Tabellen 15, 6, 2, 13 und 14, lassen einen Abstand G von 76
MB frei, was nicht ausreichend ist, um die kleinste der nicht zugeordneten
Tabellen, d. h. Tabelle 11, der Sequenz aufzunehmen. Daher wird
der Index i erhöht,
und die Zuordnungsprozedur wird für den nächsten Blade B3 weitergeführt. Dieser
Prozess geht weiter, bis alle Tabellen der Sequenz zu einem der
Blades Bi zugeordnet sind. Das Resultat
der Zuordnung von Tabellen zu Blades wird in 11 veranschaulicht.
-
Zusätzlich zu
der Zuordnung von Tabellen zu Blades erhält man auf diese Weise die
niedrigste Anzahl von Blades, die notwendig sind, um eine vorgegebene
Anzahl von Tabellen zu handhaben (vgl. 3). In dem hier
betrachteten Beispiel lässt
die resultierende Zuordnung von Tabellen zu N = 8 Blades einen Abstand
G von 2196 MB auf Blade 8 frei.
-
Die
resultierende Verteilung, wie in 11 gezeigt,
wird als die initiale Verteilung in die Methode von 1 eingegeben
(vgl. Schritt 52 von 1). Zusätzlich wird
die geordnete Sequenz der Tabellen, wie in 5 gezeigt,
in Schritt 50 der Methode von 1 eingegeben.
Auf dieser Basis wird die Methode von 1 durchgeführt, um
die Gleichmäßigkeit
der initialen Verteilung von 11 zu
verbessern. Die entsprechenden Iterationen der Umverteilungsprozedur
wird in den 12 bis 24 veranschaulicht:
Zuerst wird ein Grenzwert berechnet, der dazu dient, zwischen abgebenden
und empfangenden Blades zu unterscheiden. In der hier betrachteten
bevorzugten Ausführung
ist der Grenzwert die theoretische minimale Speicherkapazität pro Blade,
die notwendig wäre,
um eine perfekt ausgeglichene Verteilung der Gesamtgrößen der
Datenobjekte pro Blade zu erreichen. Die weitere Verarbeitung zielt
darauf, sich dieser idealen Situation anzunähern, trotz der Tatsache, dass
die Größen der
Datenobjekte, d. h. die Größen der
Tabellen, endlich und verschieden sind.
-
In
der hier betrachteten bevorzugten Ausführung ist die Summe aller Tabellengrößen von
Tabellen 1 bis 20 29696 MB. Der Grenzwert ist daher 29696 MB dividiert
durch 8, d. h. der Anzahl der Blades, was einen Grenzwert T = 3712
MB ergibt. Blades, die gesamte Tabellengrößen oberhalb des Grenzwerts
T haben, sind per Definition abgebende Blades, und Blades, die gesamte
Tabellengrößen unterhalb
des Grenzwerts T besitzen, sind per Definition empfangende Blades.
Wenn die initiale Verteilung von Tabellen zu Blades, die durch die
Methode von 3 bereitgestellt wird, als Startpunkt
hergenommen wird, sind Blades 1 bis 7 abgebende Blades und Blade
8 ein empfangender Blade.
-
Nachdem
die abgebenden und empfangenden Blades identifiziert worden sind,
beginnt die Verarbeitung der Tabellen in der Reihenfolge der sortierten
Sequenz, beginnend mit der größten Tabelle
in der geordnete Sequenz. Mit anderen Worten, die Verarbeitung beginnt
mit der am weitesten links liegenden Tabelle in der Sequenz, d.
h. Tabelle 20, von wo es zur kleinsten Tabelle in der Sequenz fortschreitet,
d. h. Tabelle 14 (vgl. die geordnete Sequenz wie in 5 gezeigt).
-
Empfangender
Blade 8 hat die Speicherkapazität
4096 MB. Tabellen 8 und 11, die eine Gesamtgröße von 1900 MB haben, sind
zu Blade 8 zugeordnet. Es gibt daher dort einen Abstand G von verbleibender
Speicherkapazität
des empfangenden Blades 8, die dazu verwendet werden kann, eine
Tabelle von einer der abgebenden Blades neu zuzuordnen.
-
Durch
Verarbeitung der Tabellen in der Reihenfolge der Sequenz wird bestimmt,
dass Tabellen 20, 15, 1, 5 und 4 nicht in den Abstand G des empfangenden
Blades 8 passen, und daher nicht neu zugeordnet werden können. Tabelle
16 auf dem abgebenden Blade 6 hat jedoch eine Größe von 2150 was in den Abstand
G = 4096 MB – 1900
MB = 2196 MB passt. Tabelle 16 wird daher vorläufig von dem abgebenden Blade
16 zum empfangenden Blade 8 bewegt, wie in 13 veranschaulicht.
Um die Qualität
der resultierenden vorläufigen Verteilung
zu bewerten, werden statistische Maße verwendet.
-
In
der hier betrachteten bevorzugten Ausführung ist das statistische
Maß die
Standardabweichung der gesamten Tabellengrößen pro Blade. Die Standardabweichung
S der initialen Verteilung wie in 11 und 12 gezeigt
ist 741,06 MB. Die Standardabweichung der vorläufigen Verteilung von Tabellen
zu Blades, die erhalten wird, wenn Tabelle 16 zum empfangenden Blade
8 bewegt wird, ist S = 856,42 MB. Wenn also Tabelle 16 zum empfangenden
Blade 8 bewegt wird, erhöht
sich die Standardabweichung S. Das zeigt, dass die Gleichmäßigkeit
der Verteilung von Tabellen zu Blades in der vorläufigen Verteilung
verschlechtert wird. Daher wird diese vorläufige Verteilung fallen gelassen
und keine Neuzuordnung durchgeführt.
-
Von
hier geht die Steuerung auf die Verarbeitung der nächsten Tabelle
in der Sequenz, d. h. Tabelle 10 auf dem abgebenden Blade 7. Tabelle
10 passt in den Abstand G und wird daher vorläufig vom abgebenden Blade 7
zum empfangenden Blade 8 bewegt, wie in 14 veranschaulicht.
Die Standardabweichung der vorläufigen
Verteilung von Tabellen zu Blades, die so erhalten wird, ist S =
673,41 MB, was unterhalb der Standardabweichung der initialen Verteilung
liegt.
-
Als
eine Folge daraus wird die vorläufige
Verteilung von 14 akzeptiert und Tabelle 10
wird daher wirklich von dem abgebenden Blade 7 zum empfangenden
Blade 8 bewegt. Diese Bewegung macht Blade 8 zu einem abgebenden
Blade, da die gesamte Größe der Tabellen,
die Blade 8 zugeordnet sind, den Grenzwert T übersteigt. Gleicherweise macht
die Bewegung der Tabelle 10 Blade 7 zu einem empfangenden Blade,
da die gesamte Größe der Tabellen,
die zu Blade 7 zugeordnet bleiben, unter den Grenzwert T fällt.
-
Die
Verarbeitung der Tabellen setzt sich in Übereinstimmung mit der geordneten
Sequenz fort. Die nächste
Tabelle in der geordneten Sequenz ist Tabelle 17, die dem abgebenden
Blade 5 zugeordnet worden ist. Da Tabelle 17 in den Abstand G von
dem empfangenden Blade 7 passt, wird es vorläufig dorthin bewegt. Die Standardabweichung
der resultierenden vorläufigen
Verteilung ist S = 605,02 MB, was unterhalb der Standardabweichung
der augenblicklichen Verteilung liegt, die von der vorhergehenden
Bewegung von Tabelle 10 zu Blade 8 erhalten wurde. Daher wird die
vorläufige
Verteilung akzeptiert, und Tabelle 17 wird zum empfangenden Blade
7 bewegt, wie in 15 gezeigt.
-
Die
nächste
Tabelle in der Sequenz ist Tabelle 9, die Blade 6 zugeordnet worden
ist. In der augenblicklichen Verteilung von Tabellen zu Blades,
die von der vorhergehenden Iteration erhalten wurde, ist Blade 5
ein empfangender Blade, wobei alle anderen Blades abgebende Blades
sind. Tabelle 9 passt in den Abstand G des empfangenden Blades 5,
wie in 16 veranschaulicht. Wenn Tabelle
9 vorläufig
zu Blade 5 bewegt wird, resultiert das in eine Erhöhung der
Standardabweichung von 605,02 MB auf 673,61 MB. Daher wird die Verteilung
in dieser Iteration nicht geändert,
und die Verarbeitung setzt sich fort mit der kleinsten Tabelle in
der Sequenz, d. h. Tabelle 18.
-
Tabelle
18 passt jedoch nicht in Abstand G und wird daher vorläufig von
dem abgebenden Blade 7 zum empfangenden Blade 5 bewegt. Die resultierende
Standardabweichung S ist 539,09 MB, was unterhalb der aktuellen
Standardabweichung von 605,02 MB liegt, die von der vorhergehenden
Iteration erhalten wurde. Daher wird die vorläufige Verteilung von 17 akzeptiert
und Tabelle 18 wird neu zugeordnet zu Blade 5.
-
Die
nächste
Tabelle in der Sequenz ist Tabelle 8, die Blade 8 zugewiesen worden
war. In der augenblicklichen Verteilung, erhalten aus der vorhergehenden
Iteration, sind Blades 5 und 7 empfangende Blades, wobei alle anderen
Blades abgebende Blades sind. Tabelle 8 ist auf dem abgebenden Blade
8 und passt nicht in den Abstand G5 des
empfangenden Blades 5. Tabelle 8 passt jedoch nicht in Abstand G7 des empfangenden Blades 7 und wird daher
vorläufig
zu dem empfangenden Blade 7 bewegt. In der resultierenden vorläufigen Verteilung
ist die neue Standardabweichung 479,49 MB, was unterhalb der aktuellen
Standardabweichung S = 539,09 MB liegt. Die vorläufige Verteilung von 18 wird
daher akzeptiert, und Tabelle 18 wird tatsächlich vom abgebenden Blade
zum empfangenden Blade 7 bewegt.
-
Die
nächste
Tabelle in der Sequenz ist Tabelle 19. In der augenblicklichen Verteilung,
erhalten aus der vorhergehenden Iteration, sind Blades 5, 7 und
8 empfangende Blades, während
alle anderen Blades abgebende Blades sind. Tabelle 19 ist auf einem
abgebenden Blade. Abstände
G5 und G7 der empfangenden
Blades 5 und 7 sind zu klein, um Tabelle 19 aufzunehmen. Tabelle
19 wird daher zum empfangenden Blade 8 bewegt, der einen genügend großen Abstand
G8 besitzt, um Tabelle 19 aufzunehmen. Die
Standardabweichung für
die resultierende vorläufige
Verteilung ist 390,36 MB, was unterhalb der aktuellen Standardabweichung
liegt, die aus der vorhergehenden Iteration erhalten wurde. Die
vorläufige
Verteilung von 19 wird daher akzeptiert, und
Tabelle 19 wird tatsächlich
von dem abgebenden Blade 4 zum empfangenden Blade 8 bewegt.
-
Die
nächste
Tabelle in der geordneten Sequenz ist Tabelle 7 auf Blade 3. Blades
4, 5, 7 und 8 sind empfangende Blades in der augenblicklichen Verteilung.
Tabelle 7 wird vorläufig
vom abgebenden Blade 3 zum empfangenden Blade 4 bewegt, da Tabelle
7 zu groß ist,
um auf einen der anderen empfangenden Blades zu passen. Die resultierende
Standardabweichung der neuen vorläufigen Verteilung ist 263,26
MB, was unterhalb der aktuellen Standardabweichung liegt, die aus
der vorhergehenden Iteration erhalten wurde. Tabelle 7 wird daher
von dem abgebenden Blade zum empfangenden Blade 4 neu zugeordnet.
-
Die
resultierende augenblickliche Verteilung wird in 21 gezeigt.
In dieser Verteilung sind Blades 3, 5, 7 und 8 empfangende Blades.
Die nächste
Tabelle in der Sequenz ist Tabelle 3, die dem empfangenden Blade
7 zugeordnet ist. Tabelle 3 wird daher übergangen. Das Gleiche trifft
zu für
Tabelle 11, da sie dem empfangenden Blade 8 zugeordnet ist, und
daher per Definition nicht zu einem abgebenden Blade bewegt werden kann.
-
Die
nächste
Tabelle in der geordnete Sequenz, die einem abgebenden Blade zugeordnet
ist, ist Tabelle 12 auf Blade 1. Tabelle 12 passt jeweils in die
Abstände
G3 und G5 der empfangenden
Blades 3 und 5, und wird daher vorläufig sowohl zum empfangenden
Blade 3 als auch zum empfangenden Blade 5 zugeordnet. Das resultiert
in zwei konkurrenzierende vorläufige
Verteilungen. Wenn Tabelle 12 vorläufig zu Blade 3 bewegt wird,
ist die resultierende neue Standardabweichung der entsprechenden
vorläufigen
Verteilung 149,53 MB. Wenn im Gegensatz dazu Tabelle 12 zum empfangenden
Blade 5 bewegt wird, ist die resultierende neue Standardabweichung
der entsprechenden vorläufigen
Verteilung 264,39 MB. Daher ist die vorläufige Verteilung, die dadurch
erreicht wird, dass Tabelle 12 zu Blade 3 bewegt wird, gleichmäßiger als
die alternative vorläufige
Verteilung, die durch eine vorläufige
Bewegung von Tabelle 12 zu Blade 5 erhalten wird. Daher wird die
vorläufige Verteilung,
die durch Bewegen von Tabelle 12 zum empfangenden Blade 3 erhalten
wird, akzeptiert. Die resultierende neue Verteilung wird in 22 gezeigt.
-
In
der neuen Verteilung sind Blades 1, 5, 7 und 8 empfangende Blades.
Die nächste
Tabelle in der geordneten Sequenz ist Tabelle 6, die dem abgebenden
Blade 2 zugeordnet ist. Tabelle 6 ist genügend klein, um in die Abstände G
1, G
5, G
7,
und G
8 der jeweils empfangenden Blades 1,
5, 7 und 8 zu passen. Das resultiert in vier konkurrenzierende vorläufige Verteilungen:
Vorläufige Verteilung | Neue
Standardabweichung |
Tabelle
6 zu Blade 1 | 87,66
MB |
Tabelle
6 zu Blade 5 | 89,21
MB |
Tabelle
6 zu Blade 7 | 129,89
MB |
Tabelle
6 zu Blade 8 | 96,59
MB |
-
Daher
ergibt die vorläufige
Verteilung, die durch Bewegen der Tabelle 6 zum empfangenden Blade
1 erhalten wird, die kleinste neue Standardabweichung und wird daher
akzeptiert.
-
23 veranschaulicht
die resultierende augenblickliche Verteilung. In dieser Verteilung
sind Blades 5, 7 und 8 empfangende Blades. Die nächste Tabelle in der geordneten
Sequenz ist Tabelle 2 auf dem abgebenden Blade 2. Die konkurrenzierenden
vorläufigen
Verteilungen, die aus der augenblicklichen Verteilung von
23 erhalten
werden, werden wie folgt bewertet:
Vorläufige Verteilung | NeueStandardabweichung |
Tabelle
2 zu Blade 5 | 71,50
MB |
Tabelle
2 zu Blade 7 | 103,36
MB |
Tabelle
2 zu Blade 8 | 77,26
MB |
-
Die
größte Verringerung
der Standardabweichung wird daher durch Bewegen von Tabelle 2 zum
empfangenden Blade 5 erreicht. Die entsprechende vorläufige Verteilung
wird daher akzeptiert; die resultierende augenblickliche Verteilung
wird in 24 gezeigt.
-
In
der augenblicklichen Verteilung von 24 sind
Blades 2, 7 und 8 empfangende Blades. Die verbleibenden Tabellen
in der geordneten Sequenz, d. h. Tabellen 13 und 14, sind dem empfangenden
Blade 2 zugeordnet und können
daher per Definition nicht neu zugeordnet werden. Daher ist die
augenblickliche Verteilung, wie in 24 gezeigt,
die endgültige
Verteilung, die aus der initialen Verteilung von 11 erhalten wurde.
Es ist anzumerken, dass die Gleichmäßigkeit der endgültigen Verteilung
drastisch verbessert ist, wie es auch aus dem Abfall der Standardabweichung
von 741,06 MB auf 71,50 MB zu erkennen ist.
-
25 zeigt eine detalliertere Ausführung der
entsprechenden Verteilungsmethode.
-
In
Schritt 300 wird eine initiale Verteilung der Tabellen
zu Blades bereitgestellt. Zum Beispiel kann das durch die Methode
von 3 durchgeführt
werden. Alternativ kann jede beliebige andere Verteilung als Startpunkt
benutzt werden, z. B. die echte Verteilung eines existierenden Blade-Computing-Systems.
Es ist anzumerken, dass es für
die vorliegende Erfindung nicht wichtig ist, dass die initiale Verteilung
die minimale Anzahl von Blades hat (wie sie durch die Methode von 3 bereitgestellt
werden kann).
-
In
Schritt 302 wird der Satz der abgebenden Blades in der
initiale Verteilung bestimmt. Das wird vorzugsweise mithilfe eines
Grenzwerts durchgeführt.
Zum Beispiel wird der Grenzwert erhalten, indem die Gesamtgröße aller
Tabellen berechnet und durch die Gesamtzahl der Blades geteilt wird.
Diejenigen Blades, die Tabellen mit einer Gesamtgröße haben,
die den Grenzwert überschreiten,
sind per Definition abgebende Blades. Die Anzahl der abgebende Blades
in der initiale Verteilung wird mit D bezeichnet.
-
Auf
die gleiche Weise wird der Satz der empfangenden Blades in der initialen
Verteilung bestimmt. Per Definition ist ein Blade, der kein abgebender
Blade ist, ein empfangender Blade. Die Anzahl der empfangenden Blades
wird mit R bezeichnet.
-
In
Schritt 306 wird die größte Tabelle
K in der initialen Verteilung identifiziert. Außerdem wird in Schritt 306 die
Standardabweichung S der gesamten Tabellengrößen in der initialen Verteilung
berechnet.
-
In
Schritt 308 wird die Nummer N der augenblicklichen Tabelle
auf K initialisiert.
-
In
Schritt 310 wird eine Bestimmung durchgeführt, ob
D > = 1 und R > = 1 sind. Wenn das
nicht der Fall ist, dann gibt es entweder keinen empfangenden oder
keinen abgebenden Blade, so dass keine der Tabellen neu zugeordnet
werden kann. In diesem Fall kann die initiale Verteilung nicht weiter
verbessert werden.
-
Wenn
in Schritt 310 festgestellt wird, dass es tatsächlich mindestens
einen abgebenden Blade und mindestens einen empfangenden Blade gibt,
geht die Steuerung zu Schritt 312. In Schritt 312 wird
eine Bestimmung gemacht, ob Tabelle N auf einem abgebenden Blade
ist. Wenn das nicht der Fall ist, geht die Steuerung zu Schritt 348.
In Schritt 348 wird die nächst kleinere Tabelle K nach
Tabelle N gesucht. In Schritt 350 wird entschieden, ob
solche kleinere Tabelle K gefunden wurde. Wenn das nicht der Fall
ist, hält
die Steuerung in Schritt 352 an. Wenn das Gegenteil der
Fall ist, geht die Steuerung zurück
auf Schritt 308.
-
Wenn
in Schritt 312 bestimmt wurde, dass sich Tabelle N tatsächlich auf
einem abgebenden Blade befindet, geht der Prozess weiter zu Schritt 314,
in dem einer der empfangendem Blades willkürlich aus dem Satz von empfangenden
Blades als der augenblickliche Empfänger r ausgewählt wird,
um eine entsprechende vorläufige
Neuzuordnung der Tabelle N zu untersuchen.
-
In
Schritt 316 wird eine Bestimmung gemacht, ob Tabelle N
auf Empfänger
r passt. Wenn das der Fall ist, wird die Standardabweichung s(r)
der resultierenden vorläufigen
Verteilung, die durch Bewegen der Tabelle N von dem augenblicklichen
Blade C zu Blade r erhalten wird, berechnet. In Schritt 320 wird
bestimmt, ob die Standardabweichung s(r) unterhalb der Standardabweichung
S der augenblicklichen Verteilung liegt.
-
Wenn
das der Fall ist, wird Blade r ein Anwärter-Blade als Ziel für die Neuzuordnung
der Tabelle N. Blade r und die entsprechende Standardabweichung
s(r) werden in Schritt 322 in Array A gespeichert. Es ist anzumerken,
dass anstelle von Array A eine andere geeignete Datenstruktur für die Speicherung
von Tuplen r, s(r) benutzt werden können, wie z. B. eine lineare
Adressenliste, eine Datei oder eine andere Datenstruktur. Von dort
geht die Steuerung zu Schritt 324, wo die Bestimmung gemacht
wird, ob weitere empfangende Blades in der augenblicklichen Verteilung
existieren, die verarbeitet werden müssen. Wenn das der Fall ist,
geht die Steuerung zu Schritt 326, wo r auf die Zahl des
nächsten
empfangenden Blades in dem Satz von empfangenden Blades gesetzt
wird, der bis jetzt noch nicht verarbeitet worden ist. Vom Schritt 326 geht
die Steuerung zurück
zu Schritt 316.
-
Wenn
es sich in Schritt 316 herausstellt, dass Tabelle N nicht
auf den Empfänger
r passt oder falls es sich in Schritt 320 herausstellt,
dass s(r) nicht unterhalb von S liegt, geht die Steuerung direkt
vom Schritt 316 zu Schritt 320 zu Schritt 324.
-
Nachdem
alle Empfänger
in dem Satz der empfangenden Blades verarbeitet worden sind, geht
die Steuerung zu Schritt 328. Falls es kein Paar r, s(r)
im Array R gibt, geht die Steuerung direkt vom Schritt 328 zu
Schritt 348, um die aufeinanderfolgende Iteration zu initiieren,
falls erforderlich.
-
Wenn
es mindestens eine Eingabe in Array A gibt, geht die Steuerung vom
Schritt 328 zu Schritt 330. In Schritt 330 wird
die Eingabe in Array A identifiziert, die das kleinste s(r) besitzt.
Im nachfolgenden Schritt 332 wird der angezielte empfangende
Blade T für
die Bewegung von Tabelle N auf r eingestellt. In Schritt 334 wird
Tabelle N vom abgebenden Blade C zum empfangenden Blade T bewegt,
und S wird auf s(T) eingestellt.
-
In
Schritt 336 wird eine Bestimmung durchgeführt, ob
Blade C durch die Bewegung zu einem empfangenden Blade geworden
ist. Wenn das der Fall ist, werden in Schritt 338 die Zahlen
D und R entsprechend angepasst. Blade C wird in Schritt 340 aus
dem Satz der abgebende Blades entfernt und zu dem Satz der empfangenden
Blades hinzugefügt,
von wo die Steuerung zu Schritt 342 geht. Falls Blade C
kein empfangender Blade geworden ist, geht die Steuerung direkt
von Schritt 336 zu Schritt 342.
-
In
Schritt 342 wird bestimmt, ob Blade T ein abgebender Blade
geworden ist. Wenn das der Fall ist, werden die Zahlen D und R in
Schritt 344 entsprechend angepasst, und Blade C wird von
dem Satz der empfangenden Blades entfernt und in Schritt 346 zu
dem Satz der abgebenden Blades hinzugefügt. Von hier geht die Steuerung
zu Schritt 348. Falls in Schritt 342 bestimmt
wird, dass Blade T kein abgebender Blade geworden ist, geht die
Steuerung direkt von Schritt 342 zu Schritt 348.
-
Die
aus den Schritten 308 bis 350 bestehende Schleife
wird so lange durchgeführt,
bis alle Tabellen in fallender Reihenfolge verarbeitet worden sind.
Die so erhaltene endgültige
Verteilung wird in Schritt 352 ausgegeben.
-
26 zeigt
Computer 108, der Prozessor 110 besitzt, um Programm 112 zu
betreiben. Programm 112 hat Modul 114 zum Sortieren
der Datenobjekte nach Größe und Modul 116 für die Zuordnung
von Datenobjekten zu Blades.
-
Weiter
hat Computer 108 Speicher 118 zum Speichern einer
Tabelle, die die Datenobjekte und Datenobjektgrößen, die Blades zugeordnet
werden sollen, auflistet, Speicher 120 zum Speichern mit
einem Speicherkapazitätswert
der Blades und Speicher 122 zum Speichern der Anzahl der
Blades. Weiter hat Computer 108 Schnittstelle 124 zur
Anbindung an Workstation 126.
-
Im
Betrieb wird die Tabelle mit den Datenobjektnamen/-nummern und Datenobjektgrößen über Schnittstelle 124 eingegeben
und in Speicher 118 gespeichert. Dies entspricht der Information,
die in 4 gezeigt wird.
-
Weiter
wird ein Speicherkapazitätswert
für die
Speicherkapazität
jedes einzelnen Blades über
Schnittstelle 124 eingegeben und in Speicher 120 gespeichert.
In dem hier betrachteten Beispiel ist der Speicherkapazitätswert 4
GB für
alle Blades.
-
Als
Nächstes
wird Programm 112 aufgerufen. Programm 112 sortiert
die Tabelle von Speicher 118 nach Größe, um eine Sequenz von Datenobjekten
bereitzustellen (vgl. 5). Als Nächstes führt Modul 116 die
Methode von 3 durch, um die minimal notwendige
Anzahl von Blades zu bestimmen. Diese minimale Anzahl wird in Speicher 122 gespeichert,
und wird über
Nutzerschnittstelle 124 ausgegeben. Diese Zahl kann als
Basis für
eine Investmententscheidung des Nutzers dienen für den Kauf der notwendigen
Anzahl von Blades, um ein Datenverarbeitungssystem zu realisieren,
das in der Lage ist, die Datenobjekte wie in der Tabelle aufgelistet
zu handhaben.
-
Als
Nächstes
führt Modul 116 die
Methode von 1 und/oder 25 zur
Verfeinerung des Ausgleichs der Datenobjektgröße durch.
-
Alternativ
ist Computer 108 einer der Blades. In diesem Fall kann
Computer 108 die Zuordnung von Datenobjekten zu Blades
dynamisch ändern,
wenn die Größe der Datenobjekte
sich ändert.
Auf diese Weise können
häufige
Tauschvorgänge
für den
Tausch von Datenobjekten zwischen Blades vermieden werden.
-
- 100
- Cluster
- 102
- Prozessor
- 104
- Speicher
- 106
- Netzwerk
- 108
- Computer
- 110
- Prozessor
- 112
- Programm
- 114
- Modul
- 116
- Modul
- 118
- Speicher
- 120
- Speicher
- 122
- Speicher
- 124
- Schnittstelle
- 126
- Workstation