DE602004011757T2 - Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten - Google Patents

Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten Download PDF

Info

Publication number
DE602004011757T2
DE602004011757T2 DE200460011757 DE602004011757T DE602004011757T2 DE 602004011757 T2 DE602004011757 T2 DE 602004011757T2 DE 200460011757 DE200460011757 DE 200460011757 DE 602004011757 T DE602004011757 T DE 602004011757T DE 602004011757 T2 DE602004011757 T2 DE 602004011757T2
Authority
DE
Germany
Prior art keywords
distribution
objects
processing units
blade
blades
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE200460011757
Other languages
English (en)
Other versions
DE602004011757D1 (de
Inventor
Volker Sauermann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Publication of DE602004011757D1 publication Critical patent/DE602004011757D1/de
Application granted granted Critical
Publication of DE602004011757T2 publication Critical patent/DE602004011757T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Datenverarbeitung, und insbesondere ohne Beschränkung auf Angleichen der Zuordnung von Objekten zu Verarbeitungseinheiten in einer Multi-EDV-Umgebung.
  • Hintergrund und Stand der Technik
  • Verschiedene Multi-EDV-Architekturen sind nach dem Stand der Technik bekannt, wobei eine Vielzahl von Verarbeitungseinheiten gekoppelt sind, um einen Cluster zu bilden. Solche Architekturen werden in der parallelen Verarbeitung verwendet und ebenso in dem sich entwickelnden Feld der Blade-EDV.
  • Blade-EDV beruht auf Blade-Servern, welche modulare, Einzelboard-Computer sind. Einen Überblick zur Blade-EDV findet sich 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 Content-Lastausgleichungs-Blade ist kommerziell verfügbar von Sun Microsystems ("Sun Fire TM B10n"). Dieser Blade stellt Verkehrs- und Content-Management-Funktionalitäten zur Verfügung. Content-Lastausgleich wird erzielt basierend auf ULRs, CGI-Scripten und Cookies. Serverlast-Angleich wird erzielt basierend auf Serverlasten, Antwortseiten und gewichteten Ring-Algorithmen. Blade-Server sind kommerziell verfügbar, z. B. von Intel (http://www.intel.com/design/servers/blades/).
  • Die US-Patentanmeldung Nr. 20030105903 zeigt einen Web-Edge-Server, welche eine Anzahl von Blade-Servern umfasst. Ein Switch und ein Informationsverteilungsmodul sind zum Zweck der Angleichung gegeben. Das Informationsverarbeitungsmodul empfängt eine Informationsnachricht, führt eine Verarbeitung auf die Nachricht aus, um ein Ziel zu bestimmen und leitet die Nachricht an das bestimmte Ziel über ein internes Kommunikationsnetzwerk weiter.
  • Aggarwal, G.; Motwani, R.; Zhu, A.: "The load rebalancing Problem" beschäftigt sich mit dem Problem der erneuten Angleichung von Prozessorlasten. Unter einer gegebenen Möglichkeit einer suboptimalen Zuordnung von Jobs zur Prozessoren ist es der Zweck der erneuten Lastangleichung, Jobs zu verschiedenen Prozessoren erneut zuzuordnen, um die Produktionsspanne zu minimieren, indem so wenig wie möglich Jobs bewegt werden.
  • Fiat A, Woeginger G J "Online algorithms: The state of the art" (1998) offenbaren verschiedene Standard-Algorithmen für höher-dimensionale Pack-Probleme.
  • Leinberger W. et al. "Multi-capacity bin packaging algorithms with applications to job scheduling under multiple constraints" zeigt verschiedene Algorithmen zum Job-Scheduling.
  • Kit-Sang T. et al.: "Optimal File Placement in VOD System Using Genetic Algorithm (2001-10), IEEE Transactions an Industrial Electronics", zeigt ein Verfahren der Zuordnung von Multimedia-Dateien zu Disk-Aufenthaltsorten unter Verwendung eines modifizierten PIN-Packing Algorithmus".
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung stellt ein Datenverarbeitungssystem zur Verfügung, ein Verfahren und ein Computerprogrammprodukt, wie beansprucht. Die vorliegende Erfindung stellt ein Datenverarbeitungssystem zur Zuordnung eines Satzes von Objekten zu Datenverarbeitungseinheiten eines Clusters von Verarbeitungseinheiten zur Verfügung. Jede Verarbeitungseinheit des Clusters weist eine Kapazität zur Aufnahme von Objekten auf. Das Datenverarbeitungssystem hat Mittel zur Auswahl eines ersten und eines zweiten Operationsmodus und Mittel zur Bestimmung einer Verteilung des Satzes von Objekten über einen Satz der Verarbeitungseinheiten. Des Weiteren weist das Datenverarbeitungssystem Mittel zur Bestimmung einer minimalen Anzahl der Verarbeitungseinheiten auf, welche eine ausreichende Kapazität zur Aufnahme des Satzes der Objekte hat. In einem ersten Operationsmodus enthält der Satz von Verarbeitungseinheiten, zu welchem der Satz von Objekten zugeordnet werden soll, all die Verarbeitungseinheiten des Clusters. In einem zweiten Operationsmodus enthält der Satz von Verarbeitungseinheiten die minimale Anzahl an Verarbeitungseinheiten.
  • Die vorliegende Erfindung ist insbesondere vorteilhaft, da sie die Möglichkeit bietet, entweder eine Verteilung von Objekten über Verarbeitungseinheiten unter Verwendung all der Verarbeitungseinheiten des Clusters zu optimieren oder um lediglich die minimale Anzahl von benötigten Verarbeitungseinheiten zu optimieren. Typischerweise wird der erste Operationsmodus ausgewählt, wenn in hohem Maß ausreichende Hardware-Kapazität zur Verfügung steht. In diesem Fall ist der Hauptzweck der erneuten Verteilung von Objekten zur Verarbeitungseinheit eine gleichmäßige Verteilung zu erzielen, um eventuell die verfügbaren Hardware-Ressourcen zu verwenden und um Auslagerungsoperationen zu verhindern, welche die Leistung des Multiprozessorsystems reduzieren würde und die Antwortzeiten verlängern würde.
  • Wenn Hardware-Ressourcen nicht ausreichend sind oder wenn einige der Verarbeitungseinheiten freigegeben werden müssen, um spezielle Berechnungsaufgaben durchzuführen, wird der zweite Operationsmodus ausgewählt, um die Objekte dicht auf eine minimale Anzahl von Verarbeitungseinheiten zu packen, welche die Objekte handhaben können.
  • Nach einer bevorzugten Ausführungsform der Erfindung können erste und zweite Operationsmodi ausgewählt werden, um eine initiale Verteilung der Objekte zu den Verarbeitungseinheiten zu bestimmen oder um eine erneute Verteilung zur Optimierung der aktuellen Verteilung zu bestimmen. In dem ersten Verteilungsmodus wird lediglich eine einzelne Eigenschaft der Objekte dazu verwendet, um die Verteilung oder erneute Verteilung durchzuführen. Zu diesem Zweck wird ein ein-dimensionales Verteilungsverfahren verwendet. Im zweiten Verteilungsmodus werden zumindest erste und zweite Eigenschaften der Objekte zur Bestimmung der Verteilung oder erneuten Verteilung verwendet. Zu diesem Zweck wird ein Verteilungsverfahren verwendet, welches zumindest zwei Dimensionen berücksichtigt.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung ist die einzelne Eigenschaft der Objekte, welche in dem ersten Verteilungsmodus verwendet wird, die Größe oder die Last der Objekte. Zum Beispiel ist die Größeneigenschaft der Speicherplatz, welchen ein gegebenes Objekt auf einer Verarbeitungseinheit benötigt. Die Lasteigenschaft kann als die mittlere Anzahl von Zugriffsoperationen auf das Objekt pro Zeiteinheit definiert werden, oder als weiteres geeignetes statistisches Maß, welches die Verarbeitungslast der Verarbeitungseinheit ausdrückt, zu welcher das Objekt zugeordnet ist. Zum Beispiel wird/werden die Eigenschaft/en, welche für den ersten oder zweiten Lastverteilungsmodus ausgewählt sind, in den Benutzereinstellungen gespeichert.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung werden sowohl die Größen- als auch Lasteigenschaften der Objekte dazu verwendet, um im zweiten Verteilungsmodus eine Verteilung oder erneute Verteilung der Objekte über die Verarbeitungseinheiten zu bestimmen. Die steht im Gegensatz zum ersten Verteilungsmodus, wo lediglich eine einzelne Eigenschaft verwendet wird. Das Ziel des ersten Verteilungsmodus ist die Verteilung in Bezug auf die einzelne Eigenschaft, welche berücksichtigt wird, zu glätten. Allerdings kann dies in einer groben Verteilung bezüglich einer weiteren Eigenschaft führen. Zum Beispiel wird die Durchführung einer Verteilung unter Verwendung der Größeneigenschaften in einer relativ glatten Größenverteilung resultieren, jedoch können die Lasten ziemlich ungleichmäßig verteilt sein. Durch Verwenden von mehr als einer Eigenschaft der Objekte als Basis für die Verteilung oder das erneute Verteilungsverfahren wird die Verteilung bezüglich aller berücksichtigten Eigenschaften optimiert. Zum Beispiel wird die Verwendung der Größe und Last zur Durchführung der Verteilung typischerweise zu einer gröberen Verteilung der gesamten Größen über den Verarbeitungseinheiten führen, verglichen mit dem ein-dimensionalen Verteilungsmodus, welcher das Größenkriterium alleine verwendet, hingegen jedoch zu einer glatteren Verteilung der Lasten.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird die minimale Anzahl von Verarbeitungseinheiten bestimmt unter Verwendung der selben Objekteigenschaft oder -eigenschaften wie für die Verteilung oder erneute Verteilung, wenn der zweite Operationsmodus ausgewählt wurde.
  • Ein ein-dimensionales Verfahren wird zur Bestimmung der minimalen Anzahl der Verarbeitungseinheiten verwendet, wenn der erste Verteilungsmodus und der zweite Operationsmodus gewählt wurden, wohingegen zumindest ein zweidimensionales Verfahren zur Bestimmung der minimalen Anzahl der Verarbeitungseinheiten angewendet wird, wenn der zweite Verteilungsmodus und der zweite Operationsmodus ausgewählt wurden.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird die erneute Verteilung der Objekte über die Verarbeitungseinheiten automatisch initiiert. Zum Beispiel kann ein Benutzer eine Uhr setzen, welcher automatisch die erneute Verteilung zu vorgegebenen Zeiten initiiert, wie z. B. periodisch, z. B. einmal pro Tag. Das Setzen der Uhr wird bequem über die Benutzer-Schnittstelle durchgeführt. Alternativ wird die Verteilung oder erneute Verteilung manuell gestartet über eine entsprechende Eingabeoperation eines Benutzers.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird die aktuelle Verteilung und eine erneute Verteilung, welche zur Optimierung der aktuellen Verteilung bestimmt wurde, für eine Benutzerdurchsicht visualisiert. Wenn der Benutzer die vorgeschlagene erneute Verteilung genehmigt, kann er/sie eine entsprechende Annahme eingeben. Als Antwort auf die Benutzereingabe seiner/ihrer Annahme wird das erneute Verteilungsverfahren initiiert.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung ist das Datenverarbeitungssystem eine der Verarbeitungseinheiten, zu welcher die Objekte zugeordnet wurden. Dies bedeutet, dass in einer Blade-EDV-Umgebung einer der Blade-Server die Rolle einer Verwaltungseinheit übernimmt, um die Verwaltungsaufgabe des Zuordnens von Objekten zu den Verarbeitungseinheiten durchzuführen. Bevorzugter weise ist die Verwaltungseinheit als der Verwaltungsprozess einer Suchmaschine implementiert. Alternativ ist die Verwaltungseinheit eine separate Kontrolleinheit, welche nicht als Blade-Server verwendet wird.
  • Die vorliegende Erfindung ist in besonderem Maße vorteilhaft für Suchmaschinen, wie z. B. Internet-Suchmaschinen, welche einen großen verteilten Suchindex benötigen. Eine weitere bevorzugte Anwendung ist die Reduzierung der Antwortzeit einer relationalen Datenbank, wie z. B. eines Online-Transaktionsverarbeitungssystems. Die Datenbanktabellen, welche in dem relationalen Datenbanksystem gespeichert sind, welche für gewisse zeitkritische Anwendungen benötigt werden, werden in dem Blade-EDV-System gemäß der Erfindung nachgebildet, um Antwortzeiten für solche zeitkritischen Aufgaben zu verringern.
  • Kurze Beschreibung der Zeichnungen
  • Im Folgenden sind bevorzugte Ausführungsformen der Erfindung in größerem Detail lediglich beispielhaft erklärt, indem auf die folgenden Zeichnungen Bezug genommen wird:
  • 1 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform des Blade-EDV-Systems gemäß der Erfindung,
  • 2 zeigt schematisch ein Fenster zur Eingabe der Einstellungen in ein Blade-EDV-System der 1,
  • 3 veranschaulicht ein Fenster zur manuellen Initiierung der erneuten Verteilung,
  • 4 veranschaulicht eine bevorzugte Ausführungsform eines Verfahrens gemäß der Erfindung,
  • 5 ist ein Flussdiagramm zum Zuordnen von Objekten zu Blades und zur Bestimmung der minimalen Anzahl von Blades,
  • 6 ist ein Beispiel für Tabellen, welche zu Blades zugeordnet werden müssen,
  • 7 zeigt das Ergebnis einer Sortieroperation,
  • 8 zeigt einen ersten Schritt des Zuordnens einer Tabelle zu einem ersten der Blades,
  • 9 zeigt einen zweiten Schritt zur Zuordnung einer Tabelle zu dem ersten Blade,
  • 10 zeigt eine erste Zuordnung eines Blades zu einem zweiten Blade,
  • 11 zeigt eine zweite Zuordnung einer Tabelle zu dem zweiten Blade,
  • 13 zeigt eine Zuordnung von drei weiteren Tabellen zu dem zweiten Blade,
  • 13 zeigt die resultierende Zuordnung von Tabellen zu Blades als ein Ergebnis des Zuordnungsverfahrens,
  • 14 ist illustrativ für ein ein-dimensionales Verfahren zur Verfeinerung des Ergebnisses, welches durch Durchführung des Verfahrens gemäß der 5 erhalten wurde, wobei das Verfahren der 5 erneut mit einem geringeren Grenzwert durchgeführt wird,
  • 15 veranschaulicht den niedrigeren Grenzwert,
  • 16 veranschaulicht das Ergebnis der erneuerten Durchführung des Verfahrens der 5 mit dem niedrigeren Grenzwert,
  • 17 veranschaulicht eine weitere Ausführungsform eines eindimensionalen Verfahrens zur Verfeinerung der Verteilung, wobei der Grenzwert iterativ variiert wird,
  • 18 veranschaulicht den Startpunkt der ersten Iteration zur Durchführung des Verfahrens gemäß der 17,
  • 19 zeigt das Ergebnis der ersten Iteration,
  • 20 zeigt die resultierende Zuordnung von Objekten zu der minimalen Anzahl von Blades nach Abschluss des Verfahrens gemäß der 17,
  • 21 veranschaulicht eine weitere bevorzugte Ausführungsform eines ein-dimensionalen Verfahrens zur Verfeinerung der Verteilung,
  • 22 veranschaulicht das diskrete Kontinuum, in welchem der Grenzwert variiert wird und das Ergebnis des Verteilungsverfahrens, welches mittels des eindimensionalen Verfahrens der 21 erhalten wurde,
  • 23 zeigt ein Flussdiagramm einer weiteren bevorzugten Ausführungsform eines ein-dimensionalen erneuten Verteilungsverfahrens,
  • 24 veranschaulicht die Unterscheidung zwischen einem Spender- und Empfänger-Blade in der initialen Verteilung, auf welche das erneute Verteilungsverfahren der 23 durchgeführt wird,
  • 25 veranschaulicht eine vorläufige Zuordnung der Tabelle 16 zum Blade 8,
  • 26 veranschaulicht die vorläufige erneute Zuordnung der Tabelle 10 von Blade 7 zu Blade 8,
  • 27 veranschaulicht die vorläufige erneute Zuordnung von Blade 17 von Blade 5 zu Blade 7,
  • 28 veranschaulicht eine Situation, wobei es keine ausreichende verfügbare Speicherkapazität eines empfangenden Blades gibt,
  • 29 veranschaulicht eine vorläufige erneute Zuordnung der Tabelle 18 von Blade 7 zu Blade 5,
  • 18 veranschaulicht eine vorläufige erneute Zuordnung von Tabelle 8 von Blade 8 zu Blade 7,
  • 31 veranschaulicht eine vorläufige erneute Zuordnung von Tabelle 19 von Blade 4 zu Blade 8,
  • 32 veranschaulicht eine vorläufige erneute Zuordnung von Tabelle 7 von Blade 3 zu Blade 4,
  • 33 veranschaulicht eine vorläufige erneute Zuordnung von Tabelle 12 zu den empfangenden Blades 3 und 5,
  • 34 veranschaulicht mehrere vorläufige erneute Zuordnungen von Tabelle 6 zu den Blades 1, 5, 7 und 8,
  • 35 zeigt die endgültige erneute Verteilung von Tabellen zu Blades, welche mittels des Verfahrens der 23 erhalten wird,
  • 37 veranschaulicht ein Flussdiagramm einer etwas detaillierteren Ausführungsform des ein-dimensionalen erneuten Verteilungsverfahrens,
  • 38 zeigt ein Flussdiagramm eines zwei-dimensionalen Verteilungsverfahrens zur Bestimmung der minimalen Anzahl der Blades und zur Verteilung der Datenobjekte zu der minimalen Anzahl von Blades,
  • 39 zeigt die normalisierte Größenverteilung der Tabellen der 6,
  • 40 zeigt die Lasten der Tabellen und bezeichnet die mittlere Anzahl von Lesezugriffen pro Sekunden,
  • 41 zeigt die normalisierten Lasten,
  • 42 zeigt die normalisierten Größen und Lasten pro Tabelle,
  • 43 zeigt eine geordnete Sequenz der Tabellen,
  • 44 zeigt die geordnete Sequenz der Tabellen, welche die normalisierten Größen und Lasten von jeder Tabelle veranschaulicht,
  • 45 bis 49 zeigen die Zuordnung von Tabellen zum Blade 1 des Clusters oder der Blades,
  • 50 und 51 zeigen die Zuordnungen von Tabellen zum Blade 2,
  • 52 zeigt die resultierende Zuordnung von Tabellen zu Blades, welche auf Basis des Verfahrens der 38 erhalten wird,
  • 53 veranschaulicht ein zwei-dimensionales erneutes Verteilungsverfahren zur Verfeinerung der Verteilung, welche durch Durchführung des Verfahrens der 38 erhalten wird,
  • 54 veranschaulicht eine weitere bevorzugte Ausführungsform eines zwei-dimensionalen erneuten Verteilungsverfahrens, wobei die Lasten und die Größengrenzwerte iterativ variiert werden,
  • 55 veranschaulicht eine weitere bevorzugte Ausführungsform des zwei-dimensionalen erneuten Verteilungsverfahrens, wobei die Größen und Lastgrenzwerte gemäß vorbestimmter Erhöhungen oder Verminderungen variiert werden.
  • Detaillierte Beschreibung
  • 1 zeigt einen Cluster 100 von Blades B1, B2, B3, ..., BN. Jeder der Blades weist einen Prozessor 102 und einen Speicher 104 auf. In dem hier berücksichtigten Beispiel weisen alle Speicher 104 dieselbe Speicherkapazität und alle Prozessoren 102 dieselbe Lastkapazität auf.
  • Zum Beispiel kann die Lastkapazität einer Verarbeitungseinheit einen Hinweis auf die maximale Anzahl von Zugriffsoperationen sein, welche die Verarbeitungseinheit zur Verfügung stellen kann. Zugriffsoperationen können sowohl Lesezugriffe (Auswahl) und Schreibzugriffe (Aktualisieren, Einfügen, Löschen) zu Objekten, welche auf der Verarbeitungseinheit gespeichert sind, umfassen. Zusätzlich zu Hardware-Beschränkungen kann die Lastkapazität einer Verarbeitungseinheit des Weiteren durch die parallele Verarbeitung der verteilten Datenverarbeitungsaufgabe beschränkt sein, welche einer gegebenen Verarbeitungseinheit zugeordnet ist, bezogen auf die maximale Anzahl von Zugriffsoperationen, welche der parallele Prozess (z. B. einer Suchmaschine) handhaben kann. Zum Beispiel kann die Lastkapazität als die maximale Anzahl von Zugriffsoperationen pro Zeiteinheit ausgedrückt werden, welche der parallele Prozess, welcher auf einer der Verarbeitungseinheiten abläuft, handhaben kann.
  • Die Blades sind durch ein Netzwerk 106 gekoppelt, wie z. B. einem Bussystem. Die Gesamtzahl N von Blades des Clusters 100 muss so gewählt werden, dass eine gegebene Anzahl von M Objekten variierender Größen und Lastanforderungen gehandhabt werden kann.
  • Zum Beispiel implementiert der Cluster 100 eine so genannte Suchmaschine. In diesem Fall laufen identische Suchprozesse auf jedem der Blades ab. Die Zuordnung von Datenobjekten, wie z. B. Indextabellen, zu Blades kann in einer Disponenteneinheit des Clusters 100 gespeichert sein. Auf diese Art und Weise werden Datenobjekte zu Blades und Datenverarbeitungsaufgaben zugeordnet, welche auf den Blades ablaufen.
  • In der hier berücksichtigten bevorzugten Ausführungsform ist eine Verwaltungseinheit 108 an das Netzwerk 106 angekoppelt. Die Verwaltungseinheit 108 stellt eine Blade-Verwaltungsmaschine und die Disponenten-Funktionalität zur Zuordnung von Datenobjekten zu den Blades zur Verfügung. In der hier berücksichtigten Ausführungsform ist die Verwaltungseinheit 108 selbst kein Blade. Jedoch kann in anderen Implementierungen die Verwaltungseinheit 108 durch einen der Blades implementiert sein.
  • Die Verwaltungseinheit 108 weist einen Prozessor 110 zur Ausführung eines Programmmoduls 112 auf, welcher eine Blade-Verwaltungsmaschine zur Verfügung stellt, inklusive Blade-Diagnostika und Blade-Fehlermanagment als auch Bereitstellungsverwaltung, wie z. B. Disponieren von Datenobjekten zu den Blades zur Implementierung einer Verteilung der Datenobjekte über die Blades.
  • Des Weiteren weist der Prozessor 110 ein Programmmodul 114 auf, welches eine Benutzer-Schnittstelle zur Verfügung stellt.
  • Die Programmmodule 116 und 118 implementieren ein-dimensionale Verteilungsverfahren zur Bestimmung einer Verteilung der Objekte über die Blades. Das Programmmodul 116 berücksichtigt die Größen der Objekte, welche verteilt werden sollen, um die Verteilung auszugleichen. In ähnlicher Weise berücksichtigt das Programmmodul 118 die Lasten der Datenobjekte, um das Verteilungsverfahren durchzuführen. Bevorzugter weise werden die Programmmodule 116 und 118 durch ein einzelnes Programmmodul ersetzt, welches ein allgemeines Verfahren implementiert, welches sowohl für die Größen als auch die ein-dimensionale Verteilung oder für eine weitere eindimensionale Verteilung verwendet werden kann, welche einen einzelnen weiteren Parameter berücksichtigt.
  • Das Programmmodul 120 implementiert ein zwei-dimensionales Verteilungsverfahren, welches sowohl Größe als auch Last der Objekte, welche verteilt werden sollen, berücksichtigt.
  • Das gemeinsame Ziel der Verteilungsverfahren, welche in den Programmmodulen 116, 118 und 120 implementiert sind, ist das Zurverfügung stellen einer ausgeglichenen Verteilung, welche zumindest eine gleichmäßige Verteilung der Objekte über die Verarbeitungseinheiten annähert. Das Programmmodul 120 kann sowohl Größe als auch Last als ein Ausgleichskriterium oder ein einzelnes Kriterium berücksichtigen, wie z. B. Last oder Größe, in Abhängigkeit von der Wahl des Benutzers oder vorbestimmten Einstellungen.
  • Das Programmmodul 122 implementiert ein Verfahren zur Bestimmung einer minimalen Anzahl der Blades, welche benötigt werden, um einen gegebenen Satz von Objekten unterzubringen. Abhängig von einer Benutzeroption kann das Minimierungsverfahren ein-dimensional oder zwei-dimensional sein. In dem eindimensionalen Fall berücksichtigt das Minimierungsverfahren lediglich die Größe oder Last, um die minimale Anzahl von Blades zu bestimmen. In dem zweidimensionalen Fall werden sowohl Größe als auch Last berücksichtigt, um die minimale Anzahl von Verarbeitungseinheiten zu bestimmen. Es sei angemerkt, dass das Programmmodul 122 nicht notwendigerweise die absolute minimale Anzahl von Verarbeitungseinheiten zur Verfügung stellt, sondern eine Annäherung an diese minimale Anzahl von Verarbeitungseinheiten. Des Weiteren sei angemerkt, dass – abhängig von der Implementierung – ein separates Programmmodul 122 nicht benötigt sein könnte, sondern dass die Programmmodule 116, 118 und 120 die minimale Anzahl als Ergebnis des Verteilungsverfahrens zur Verfügung stellen. Zusätzlich kann der Prozessor Programmmodule ausführen (nicht in der Zeichnung gezeigt), um eine initiale Verteilung zu verfeinern. Geeignete Verfahren werden in größerem Detail unten mit Bezugnahme auf die 5 bis 55 beschrieben.
  • Die Verwaltungseinheit 108 weist einen Hauptspeicher 124 und einen Speicher 126, wie z. B. ein Laufwerk, auf.
  • Der Speicher 126 dient der Speicherung einer Tabelle 128. Jeder Tabelleneintrag ordnet eine oder mehrere Datenobjekte einem der Blades zu. Des Weiteren sind die Größen und Lastverteilungsparameter von jedem der Datenobjekte in der Tabelle 128 gespeichert.
  • Des Weiteren dient der Speicher 126 der Speicherung einer Tabelle 130, welche die Benutzereinstellungen bezüglich des Operationsmodus der Verwaltungseinheit 108 enthält.
  • Die Uhr 132 der Verwaltungseinheit 108 stellt eine Zeitreferenz zur Verfügung. Ein Bildschirm 134 ist an die Verwaltungseinheit 108 angekoppelt, um eine grafische Benutzeroberfläche in Verbindung mit dem Programmmodul 114 zur Verfügung zu stellen.
  • Im Betrieb wird eine Liste von Datenobjekten, welche die Größe und die Last angibt, welche von jedem der Datenobjekte benötigt wird, in die Tabelle 128 geladen. Anfänglich sind die Datenobjekte nicht zu den Suchmaschinenprozessen zugeordnet, welche auf den Blades ablaufen. Um jedoch die initiale Zuordnung von Datenobjekten zu Blades durchzuführen, wird eines der Programmmodule 116, 118, 120 gestartet, in Abhängigkeit von den Einstellungen, welche in der Tabelle 130 gespeichert sind. Wenn die "Minimierungs"-Einstellung eingegeben wurde, wird das Modul 122 gestartet, bevor die Verteilung der Datenobjekte über die Blades bestimmt wird. Ansonsten werden die Datenobjekte über alle verfügbaren Blades B1 zu BN verteilt.
  • Zusätzlich zu der initialen Zuordnung von Datenobjekten zu den Blades kann die Verwaltungseinheit 108 auch dazu verwendet werden, um eine erneute Verteilung der Datenobjekte während des Betriebs des Clusters 100 durchzuführen. Solch eine erneute Verteilung ist vorteilhaft, da die Größen der Datenobjekte sich gewöhnlicher weise im Lauf der Zeit ändern und/oder da Benutzer einer spezifischen Anwendung hinzugefügt werden, so dass die Gleichheit der Verteilung verbessert werden kann, indem die Objekte von Zeit zu Zeit erneut verteilt werden.
  • Ein erneutes Verteilungsverfahren kann manuell durch einen Administrator initiiert werden, oder es kann zu vorprogrammierten Zeitpunkten durchgeführt werden. Wenn die "Automatik-"Einstellung ausgewählt und in Tabelle 130 gespeichert wurde, wird die Zeitreferenz, welche durch die Uhr 132 zur Verfügung gestellt wird, mit der "Zeit"-Einstellung, welche in Tabelle 130 gespeichert ist, verglichen. Wenn die aktuelle Systemzeit, welche durch die Uhr 132 zur Verfügung gestellt wird, mit der "Zeit"-Einstellung übereinstimmt, wir das erneute Verteilungsverfahren automatisch initiiert. Dies wird bevorzugter weise täglich oder in kürzeren oder längeren Zeitintervallen durchgeführt, abhängig von dem dynamischen Wandel der Datenobjekte.
  • Die Benutzer-Schnittstelle 114 kann eine Visualisierung der aktuellen Verteilung der Datenobjekte über die Blades, als auch eine Visualisierung einer vorgeschlagenen erneuten Verteilung der Datenobjekte über die Blades zur Verfügung stellen. Dies ermöglicht es einem Administrator, eine erneute Verteilung von Datenobjekten über die Blades durchzusehen, welche durch eines der Programmmodule 116, 118 oder 120 berechnet wurde, bevor diese nun auf die Blades angewendet wird.
  • Die 2 zeigt ein Fenster 136, welches durch das Programmmodul 114 erzeugt wird und auf dem Bildschirm 134 dargestellt wird, für eine Eingabe eines Administrators von Einstellungen, welche den Betriebsmodus der Verwaltungseinheit 108 bestimmt. Das Fenster 136 weist Schaltknöpfe 138 bis 142 und Ankreuzfelder 144 und 146 auf. Der Schaltknopf 138 dient der Auswahl des Programmmoduls 116, welches das Angleichungsverfahren der eindimensionalen Größe zur Verteilung der Datenobjekte über die Blades implementiert. Der Schaltknopf 140 dient zur Auswahl des Programmmoduls 118, welches die Lastparameter der Objekte für das Verteilungsverfahren berücksichtigt. Der Schaltknopf 142 dient der Auswahl des Programmmoduls 120, welches sowohl Größe als auch Last berücksichtigt. Nur einer der Schaftknöpfe 138 bis 142 kann gleichzeitig gedrückt werden, da entsprechende Auswahlen sich gegenseitig ausschließen.
  • Das Ankreuzfeld 144 dient der Auswahl der Minimierungsoption, das heißt der Ausführung des Programmmoduls 122 zur Bestimmung einer minimalen Anzahl von Blades, welche benötigt werden, bevor die Programmmodule 116 bis 120 zur Verteilung der Datenobjekte über die minimale Anzahl an Blades, wie durch das Programmmodul 122 bestimmt, ausgeführt werden können.
  • Das Ankreuzfeld 146 dient der Auswahl der "Automatik"-Option, das heißt der automatischen Initiierung des erneuten Verteilungsverfahrens. Das Eingabefeld 148 dient zur Eingabe zu einem Zeitpunkt, wenn das automatische erneute Verteilungsverfahren initiiert werden soll.
  • Die 3 zeigt ein Fenster 150, welches durch das Programmmodul 114 in dem manuellen Modus erzeugt wird. Das Fenster 150 zeigt ein Diagramm 152, welches die aktuelle Verteilung von Datenobjekten über die Blades unter Verwendung von Balken 154 visualisiert.
  • Das Fenster 150 enthält virtuelle Knöpfe 156, 158 und 160. Wenn der Administrator auf den Knopf 158 klickt, wird ein erneutes Verteilungsverfahren, gemäß den Einstellungen, welche in der Tabelle 130 gespeichert sind, initiiert (vgl. 1). Das Ergebnis des erneuten Verteilungsverfahrens ist ebenfalls im Diagramm 152 mittels der Balken 162 visualisiert. Wenn der Administrator die vorgeschlagene erneute Verteilung genehmigt, drückt er/sie den Knopf 156, um die erneute Verteilung auf die Blades anzuwenden.
  • Wenn der Administrator der Meinung ist, dass die vorgeschlagene erneute Verteilung, wie im Diagramm 152 angezeigt, nicht gut genug ist, kann er/sie den Knopf 160 drücken, welcher ein Fenster 136, wie in 2 gezeigt, öffnet. Nachdem die Einstellungen geändert wurden, kann der Administrator zurück in das Fenster 150 gehen, und einen weiteren Vorschlag für eine erneute Verteilung anfordern, indem der Knopf 158 gedrückt wird.
  • Die 4 zeigt ein entsprechendes Flussdiagramm. In Schritt 162 wird eine Anfrage zur Initialisierung eines erneuten Verteilungsverfahrens empfangen. Dies kann aufgrund einer manuellen Eingabe der Anfrage durch den Administrator sein oder aufgrund einer automatischen Anfrage, welche durch das Programm 112 erfolgt, wenn die Systemzeit, welche durch die Uhr 132 zur Verfügung gestellt wird, der "Zeit"-Einstellung entspricht, welche in der Tabelle 130 gespeichert ist (vgl. 1).
  • In Schritt 164 wird überprüft, ob die "Minimierungs-"Einstellung in Tabelle 130 gespeichert ist. Ist dies nicht der Fall, wird eines der Programmmodule 116, 118 oder 120 gemäß den Einstellungen ausgeführt, um eine neue Verteilung der gegebenen Anzahl von Objekten über all die verfügbaren Blades des Clusters 100 zu berechnen (Schritt 166).
  • Wenn der Minimalisierungs-Parameter in den Einstellungen gespeichert ist, wird nach Schritt 164 mit Schritt 168 fortgefahren, um die minimale Anzahl von Blades zu berechnen, welche benötigt wird, um den gegebenen Satz von Datenobjekten aufzunehmen. Diese Berechnung wird mittels des Programmmoduls 122 durchgeführt. In Schritt 170 wird die neue Verteilung der Datenobjekte über die Blades für die minimale Anzahl von Blades, wie in Schritt 168 bestimmt, berechnet. Die übrigbleibenden Blades, welche nicht benötigt werden, um den Satz von Datenobjekten aufzunehmen, können einem weiteren Satz von Datenobjekten oder weiteren speziellen Datenverarbeitungsaufgaben zugeordnet werden. In Schritt 172 wird die erneute Verteilung der Datenobjekte auf die Blades, wie in Schritt 170 oder in Schritt 166 bestimmt, angewendet.
  • Im Folgenden seien eine Anzahl von bevorzugten Ausführungsformen der eindimensionalen und der zwei-dimensionalen Minimierung und Verteilungsverfahren in größerem Detail beispielhaft beschrieben.
  • 5 zeigt ein ein-dimensionales Verfahren zur Bestimmung der minimalen Anzahl N von Blades, welche benötigt werden, um einen gegebenen Satz von Datenobjekten aufzunehmen. Dieses Verfahren kann durch das Programmmodul 122 implementiert sein. In Schritt 201 wird eine Sortieroperation durchgeführt, um die M-Objekte der Größe nach zu sortieren. Die entsprechende Objektsequenz wird in Schritt 202 bereitgestellt. In Schritt 204 wird der Index i für die Blades zu eins initialisiert.
  • In Schritt 206 beginnt das Verarbeiten der Objektsequenz gemäß der Reihenfolge beginnend mit dem größten Objekt der Sequenz. Das erste Objekt der Sequenz, welches definitionsgemäß das größte Objekt der Sequenz ist, wird in Schritt 206 dem Blade B1 zugeordnet. In Schritt 208 wird das erste Objekt, welches dem Blade B1 zugeordnet wurde, aus der Sequenz gelöscht.
  • In Schritt 210 wird die Größe der Objekte, welche bereits dem Blade B1 zugeordnet wurden, aufaddiert und eine Lücke G zwischen der gesamten Objektgröße und einem Grenzwert wird berechnet. Wenn das Zuordnungsverfahren der 5 zum ersten Mal durchgeführt wird, ist der Grenzwert die Speicherkapazität einer der Blades.
  • In Schritt 212 wird bestimmt, ob ein Objekt in der Sequenz übrigbleibt, welches in die Lücke G passt. Wenn dies der Fall ist, so wird das größte dieser Objekte dem Blade B1 in Schritt 214 zugeordnet und aus der Sequenz gelöscht, bevor das Verfahren in Schritt 210 fortgeführt wird.
  • Wenn es kein solches Objekt gibt, welches in die Lücke G passt, wird Schritt 218 durchgeführt. In Schritt 218 wird bestimmt, ob alle Objekte bereits Blades zugeordnet wurden. In anderen Worten wird in Schritt 218 überprüft, ob die Sequenz leer ist. Ist dies nicht der Fall, wird der Index i in Schritt 220 inkrementiert und das Verfahren wird nach Schritt 206 fortgesetzt, um übrigbleibende Objekte der Sequenz dem nächsten Blade B2 zuzuordnen.
  • Wenn gegenteiliges der Fall ist, entspricht der Index i der minimalen Anzahl N von Blades, welche benötigt werden, um die M-Objekte abzuarbeiten. Diese Anzahl wird in Schritt 222 ausgegeben. Die minimale Anzahl N von Blades kann als Basis für eine Investitionsentscheidung zum Kauf einer entsprechenden Anzahl von Blades dienen, wenn die aktuelle Anzahl von verfügbaren Blades nicht ausreichend ist. Des Weiteren wird in Schritt 224 die Zuordnung von Objekten zu Blades ausgegeben, um die Qualität des Objektgrößenausgleiches zu visualisieren.
  • 6 zeigt ein Beispiel eines Satzes von Datenobjekten, welche verteilt werden sollen. In dem hier berücksichtigten Beispiel sind die Objekte eine Anzahl von zwanzig verschiedenen Tabellen, welche verschiedene Größen zwischen 50 MB und 3566 MB, wie in der 6 angegeben, aufweisen. Zum Beispiel hat Tabelle 1 eine Größe von 2250 MB, Tabelle 2 hat 250 MB, Tabelle 3 hat 750 MB usw. Die Tabellengrößen können aktuelle Tabellengrößen oder durchschnittliche Tabellengrößen sein, welche bestimmt wurden, indem ein echtes Datenverarbeitungssystem überwacht wurde. Alternativ können die Tabellengrößen Abschätzungen sein zum Zweck der Planung des Clusters 100.
  • 7 zeigt das Ergebnis der Sortieroperation, welche auf die Tabellen 1 bis 20 der 6 angewendet wurde (vgl. Schritt 202 der 5).
  • 8 veranschaulicht die Zuordnung des ersten Datenobjekts der Sequenz, das heißt der größten Tabelle 20 zum Blade B1. In dem hier berücksichtigten Beispiel weist jeder Blade eine Speicherkapazität von 4 GB = 4096 MB Hauptspeicher auf. Tabelle 20 hat eine Größe von 2566 MB, was eine Lücke G von 530 MB verfügbarer Speicherkapazität lässt (vgl. Schritt 210 der 5).
  • Als nächstes wird bestimmt, ob es ein weiteres Objekt der Sequenz gibt, welches in diese Lücke G passt. Tabelle 12, welche eine Größe von 512 MB aufweist, ist die größte Tabelle, welche in die Lücke G passt. Diese Tabelle 12 wird aus diesem Grund dem Blade 1 zugeordnet. Die gesamte Größe der Objekte, welche dem Blade 1 zugeordnet sind, das heißt Tabelle 20 und Tabelle 12, ist 4068 MB, was eine Lücke G von 10 MB lässt. Diese Lücke G von 10 MB ist zu klein, um selbst das kleinste übrigbleibende Objekt der Sequenz von Tabellen aufzunehmen.
  • Da Tabellen in der Sequenz übrigbleiben, welche noch nicht einem Blade zugeordnet wurden, wird der Index i inkrementiert und das Zuordnungsverfahren wandert zum nächsten Blade B2 (vgl. Schritte 218 und 220 der 5). In Bezug auf Blade B2 wird das obig beschriebene Verfahren erneut durchgeführt auf Basis der nicht zugeordneten Tabellen, welche in der Sequenz übrigbleiben.
  • Auf diese Art und Weise wird die größte übrigbleibende Tabelle der Sequenz, das heißt die Tabelle 15, dem Blade B2 zugeordnet, was eine Lücke G von 596 MB hinterlässt. Die Lücke G wird mit den Tabellen 6, 2, 13 und 14, wie in 10 und 11 veranschaulicht, gefüllt. Die resultierende Zuordnung von Tabellen zum Blade B2 ist in der 12 gezeigt.
  • Die gesamte Größe der Tabellen, welche dem Blade B2 zugeordnet wurden, das heißt die Tabellen 15, 6, 2, 13 und 14, hinterlassen eine Lücke G von 76 MB, welche nicht ausreichend ist, um die kleinste noch nicht zugeordnete Tabelle, das heißt die Tabelle 11 der Sequenz aufzunehmen. Aus diesem Grund wird der Index i inkrementiert und das Zuordnungsverfahren wird für den nächsten Blade B3 fortgeführt. Dieses Verfahren setzt sich fort, bis alle Tabellen der Sequenz einem Blade Bi zugeordnet wurden. Das Ergebnis der Zuordnung von Tabellen zu Blades ist in der 13 veranschaulicht.
  • Zusätzlich zu der Zuordnung von Tabellen zu Blades wird auf diese Art und Weise die minimale Anzahl N von Blades, welche benötigt sind, um die gegebene Anzahl von Tabellen zu handhaben (vgl. 6) erhalten. In dem hier berücksichtigten Beispiel hinterlässt die resultierende Zuordnung von Tabellen zu den N = 8 Blades eine Lücke G von 2196 MB auf Blade 8. Um den Objektgrößenausgleich weiter zu verbessern, wird das Verfahren der 14 durchgeführt.
  • In Schritt 1100 wird die größte Lücke G bestimmt. In dem in 13 gezeigten Beispiel ist dies die Lücke G des Blades B8. Die weiteren Blades B1 bis B7 haben kleinere Lücken zwischen der gesamten Größe von Tabellen, welche dem entsprechenden Blade zugeordnet wurden und der Speicherkapazität von 4 GB.
  • In Schritt 1102 wird die Lücke G, welche in Schritt 1100 bestimmt wurde, durch die Anzahl N von Blades geteilt. In dem Beispiel der 13 bedeutet dies, dass G = 2196 MB durch N = 8 geteilt wird, um den Wert von Delta 1 = 275 MB zu erhalten. In Schritt 1104 wird ein Grenzwert berechnet, in dem Delta 1 von der Speicherkapazität subtrahiert wird, das heißt Grenzwert = 4096 MB – 275 MB = 3821 MB.
  • Mit dem in Schritt 1104 berechneten Grenzwert wird das Verfahren der 5 in Schritt 1106 erneut durchgeführt. Die resultierende Zuordnung von Objekten zu den Blades ist aufgrund der Verringerung des Grenzwertes gleichmäßiger verteilt. Dies ist in den 15 und 16 für das Beispiel der 13 veranschaulicht.
  • 15 zeigt den Grenzwert T, welcher in Schritt 1104 berechnet wurde. Mit dem verringerten Grenzwert T wird das Zuordnungsverfahren der 5 von Anfang an neu gestartet, wobei die Schritte 201 und 202 nicht erneut durchgeführt werden müssen, wenn die sortierte Objektsequenz gespeichert wurde, als das Verfahren der 5 zum ersten Mal durchgeführt worden war.
  • Die resultierende Zuordnung von Datenbanktabellen zu Blades nach der erneuten Ausführung des Verfahrens der 5 mit dem niedrigeren Grenzwert T ist in der 16 gezeigt. Wie durch Vergleich der 13 und 16 offensichtlich, ist die Last gleichmäßiger zwischen den Blades nach dem erneuten Verteilungsverfahren ausgeglichen.
  • 17 zeigt einen alternativen Ansatz zur Verfeinerung des Objektgrößenausgleichs. In Schritt 1400 wird Delta 2 berechnet, indem die Differenz zwischen der Summe der Speicherkapazität der Blades und der Summe der Objektgrößen der Objekte, welche den Blades zugeordnet werden sollen, berechnet wird und die Differenz durch die Anzahl von Blades dividiert wird. In Schritt 1402 wird der Grenzwert durch Subtraktion von Delta 2 von der Speicherkapazität berechnet. Dieser Grenzwert ist das theoretische Limit für die minimalen Speicherkapazitäten, welche auf den individuellen Blades benötigt werden, um die Objekte aufzunehmen, wenn es möglich wäre, die Objekte mit feinster Granularität zu verteilen.
  • In Schritt 1404 wird das Verfahren der 5 mit dem Grenzwert, welcher in Schritt 1402 bestimmt wurde, erneut durchgeführt, wobei die Zahl N festgehalten wird, das heißt für den letzten Blade BN, welcher verarbeitet wird, wird in den meisten Fällen die Speicherkapazität nicht ausreichend sein. In der resultierenden Zuordnung von Objekten zu Blades wird überprüft, ob es für den letzten Blade, welcher verarbeitet wurde, tatsächlich eine überschüssige Speicheranforderung gibt, welche die Speicherkapazität überschreitet.
  • Ist dies nicht der Fall, wird die Zuordnung von Objekten zu Blades in Schritt 1408 ausgegeben. Wenn gegenteiliges der Fall ist, wird die überschüssige Speichermenge durch die Anzahl von Blades N geteilt, was Delta 3 ergibt. In Schritt 1412 wird der Grenzwert um Delta 3 inkrementiert und das Verfahren springt zu Schritt 1404.
  • Schritte 1404, 1406, 1410 und 1412 werden wiederholt ausgeführt, bis es nicht länger eine überschüssige Speichermenge gibt.
  • 18 basiert auf dem Beispiel der 13 und zeigt den Grenzwert T, wie in Übereinstimmung mit Schritt 1402 der 17 berechnet. In dem hier berücksichtigten Beispiel beträgt die Differenz zwischen der Summe der Speicherkapazitäten der Blades und der Summe der Tabellengrößen 3 GB. Diese 3 GB sind gleichmäßig über die sechs Blades verteilt, was den Grenzwert T ergibt.
  • Wenn es als Ergebnis einer Iteration keine überschüssige Speichermenge, aber eine Lücke zwischen der gesamten Größe von Objekten gibt, welche zu dem letzten Blade N zugeordnet wurden, wird das Verfahren fortgesetzt, um die Lücke zu vermindern. Dies kann gemacht werden, indem die Lücke durch die Anzahl von Blades N dividiert wird und das Ergebnis über die Blades verteilt wird, indem der Grenzwert entsprechend erhöht wird. Die Lücke wird wie folgt berechnet: Grenzwert T-Summe der Größen der Datenobjekte, welche dem Blade N zugeordnet sind.
  • In diesem Beispiel wird das Verfahren angehalten, wenn (i) es keine wesentliche Änderung von einer Iteration zu der nächsten gibt, (ii) die Iterationen zwischen verschiedenen Werten hin- und herschaltet, (iii) die Standardabweichung der Verteilung der Objekte sich nicht verbessert oder (iv) eine maximale Anzahl von Iterationen erreicht wurde.
  • 19 zeigt das Ergebnis des Zuordnungsverfahrens der 5, welches mit dem in Schritt 1402 bestimmten Grenzwert T durchgeführt wurde. Als Ergebnis des Zuordnungsverfahrens gibt es eine überschüssige Menge von Speicher E für den Blade B8. In dem hier berücksichtigten Beispiel beträgt die überschüssige Speichermenge E 858 MB. Gemäß dem Schritt 1410 wird die überschüssige Menge E durch die Anzahl von Blades N = 8 geteilt. Gemäß Schritt 1412 wird die resultierende Speichermenge Delta 3 = 107 MB dem Grenzwert aufaddiert. Als nächstes wird das Zuordnungsverfahren der 5 erneut mit dem vergrößerten Grenzwert durchgeführt, was das Ergebnis, wie in 20 gezeigt, ergibt.
  • 21 zeigt eine weitere Alternative zur Verfeinerung des Objektgrößenausgleichs. Zuerst wird der Schritt 1400 des Verfahrens der 17 ausgeführt, um Delta 2 zu berechnen. Delta 2 ist äquivalent zu der Lücke zwischen dem theoretischen Limit, das heißt dem Grenzwert, welcher in Schritt 1402 des Verfahrens der 17 berechnet wurde und der Speicherkapazität des Blades.
  • Diese Lücke wird durch eine schrittweise Variierung des Grenzwerts abgetastet, um eine Zuordnung von Objekten zu Blades zu identifizieren, welche ausgeglichen ist. Die Anzahl von Schritten, das heißt die Anzahl von Inkrementen des Grenzwerts kann vorbestimmt oder benutzerbestimmbar sein.
  • In Schritt 1800 wird Delta 2 durch die Anzahl von Inkrementen geteilt, was Delta 4 ergibt. In Schritt 1802 wird der Grenzwert berechnet, indem die Summe der Objektgrößen durch die Anzahl von Blades N dividiert wird. Mit diesem Grenzwert wird das Zuordnungsverfahren der 5 erneut in Schritt 1804 durchgeführt.
  • In Schritt 1806 wird ein statistisches Maß als ein Qualitätsmaß für die Zuordnung von Objekten zu Blades, welches als Ergebnis des Schritts 1804 erhalten wurde, berechnet. Zum Beispiel wird die Standardabweichung der gesamten Größen von Objekten, welche zu jedem der Blades zugeordnet ist, berechnet.
  • In anderen Worten wird für jeden Blade die gesamte Anzahl von Größen von Objekten, welche dem Blade zugeordnet wurden, berechnet. Dies stellt eine Gesamtgröße pro Blade zur Verfügung. Als nächstes wird die Standardabweichung für die Gesamtgröße berechnet.
  • In Schritt 1808 wird der Grenzwert durch Delta 4 inkrementiert und das Verfahren springt zu Schritt 1804. Das Verfahren wird fortgesetzt bis der Grenzwert die Speicherkapazität, das heißt das obere Limit erreicht hat.
  • In Schritt 1810 wird eine der Zuordnungen, welche als Ergebnis des Schritts 1804 erhalten wurde, auf Basis der gesamten statistischen Messungen ausgewählt. Zum Beispiel wird die Zuordnung mit der niedrigsten Standardabweichung ausgewählt.
  • 22 veranschaulicht dieses Verfahren in Bezug auf das Beispiel, welches in 13 gezeigt ist. Der Grenzwert T von 3712 MB wird durch die Berechnung in Schritt 1802 erhalten. Von dort an wird der Grenzwert schrittweise in Schritten von Delta 4 erhöht, welches Delta 2 = 384 MB geteilt durch die Anzahl von Inkrementen ist. Zum Beispiel ist die Anzahl von Inkrementen 100. Für jedes Zuordnungsverfahren wird die Standardabweichung der Tabellengrößen, welche Blades zugeordnet sind, zur Auswahl einer der Zuordnungen berechnet. Vorzugsweise werden die Standardabweichungen nur für jene Zuordnungen berechnet, welche auf die minimale Anzahl von Blades passen.
  • 23 zeigt ein Verfahren zur Verbesserung der Gleichmäßigkeit einer initialen Verteilung von Objekten über die Verarbeitungseinheiten. In Schritt 50 wird eine geordnete Sequenz von Objekten zur Verfügung gestellt. In dem hier berücksichtigten Beispiel benötigt das erste Element der geordneten Sequenz den größten Speicherplatz. Die geordnete Sequenz ist in abnehmender Reihenfolge der Objektgrößen sortiert.
  • In Schritt 52 wird eine initiale Verteilung von Objekten den Verarbeitungseinheiten zur Verfügung gestellt. In dem folgenden Schritt wird eine Schleife 54 für alle Objekte der Sequenz gemäß der Reihenfolge der Sequenz durchgeführt. In Schritt 56 der Schleife 54 wird eine Bestimmung von Spender- und Empfänger-Verarbeitungseinheiten auf Basis der aktuellen Verteilung von Objekten zu Verarbeitungseinheiten durchgeführt. In der ersten Iteration, wenn das erste Objekt der geordneten Sequenz berücksichtigt wird, ist die aktuelle Verteilung die initiale Verteilung, welche in Schritt 52 bereitgestellt wird.
  • Eine Spender-Verarbeitungseinheit ist eine Verarbeitungseinheit, welche zu dem ersten Satz von Verarbeitungseinheiten zugehörig ist, das heißt welche eine gesamte Größe von zugeordneten Objekten oberhalb eines Grenzwert-Levels aufweist. Jene Verarbeitungseinheiten, welche nicht Spender-Verarbeitungseinheiten sind, sind definitionsgemäß Empfänger-Verarbeitungseinheiten, das heißt Verarbeitungseinheiten, welche zu dem zweiten Satz zugehörig sind, welcher gesamte Objektgrößen unterhalb des Grenzwertes aufweist. Der Grenzwert, welcher zur Unterscheidung zwischen Spender- und Empfänger-Verarbeitungseinheiten dient, ist das theoretische Speicherkapazitätsminimum pro Verarbeitungseinheit, welches durch Berechnung der Gesamtgröße aller Objekte, welche Verarbeitungseinheiten zugeordnet werden sollen, geteilt durch die Anzahl von Verarbeitungseinheiten erhalten wird.
  • In Schritt 58 der Schleife 54 wird ein Objekt einer Spender-Verarbeitungseinheit vorläufig einer Empfänger-Verarbeitungseinheit zugeordnet, welche ausreichend verfügbare Speicherkapazität für das berücksichtigte Objekt aufweist. In Schritt 60 wird das statistische Maß für die resultierende vorläufige Verteilung von Objekten zu Verarbeitungseinheiten berechnet. Das statistische Maß ist so definiert, dass es einen Grad der Gleichmäßigkeit der Verteilungen angibt.
  • In Schritt 62 wird bestimmt, ob die vorläufige Verteilung einen höheren Grad der Gleichmäßigkeit im Vergleich zur aktuellen Verteilung aufweist, das heißt der initialen Verteilung für die erste Iteration der Schleife 54. Ist dies der Fall, wird die vorläufige erneute Verteilung bestätigt und das Objekt wird erneut der empfangenden Verarbeitungseinheit in Schritt 64 zugeordnet, was eine neue aktuelle Verteilung ergibt. Die neue aktuelle Verteilung bildet die Basis für die nachfolgende Iteration der Schleife 54 in Bezug auf das nächste Objekt der geordneten Sequenz.
  • Wenn sich die Gleichmäßigkeit der vorläufigen Verteilung im Vergleich zu der aktuellen Verteilung nicht verbessert, wird die aktuelle Verteilung beibehalten zum selben Zwecke der nachfolgenden Iteration.
  • Nachdem alle Objekte der geordneten Sequenz in der Schleife 54 verarbeitet wurden, oder wenn es keine Spender- oder keine Empfänger-Verarbeitungseinheiten gibt, wird die Schleife 54 beendet.
  • Als Ergebnis wird die endgültige Verteilung von Objekten zur Verarbeitungseinheiten, welche eine verbesserte Gleichmäßigkeit im Vergleich zu der initialen Verteilung haben, in Schritt 66 ausgegeben. Vorzugsweise ist das in 23 gezeigte Verfahren in den Programmmodulen 116 und 118 implementiert (vgl. 1).
  • Die 24 bis 36 zeigen ein Beispiel der Anwendung des Verfahrens der 23 auf die Verteilung, wie in 13 gezeigt. Die Verteilung wird als die initiale Verteilung in das Verfahren der 23 eingegeben (vgl. Schritt 52 der 23). Des Weiteren wird die geordnete Sequenz der Tabellen, wie in 7 gezeigt, in Schritt 50 des Verfahrens der 23 eingegeben. Auf dieser Basis wird das Verfahren der 23 durchgeführt, um die Gleichmäßigkeit der initialen Verteilung der 13 zu verbessern. Die entsprechenden Iterationen des erneuten Verteilungsverfahrens sind in den 24 bis 36 veranschaulicht:
    Zuerst wird ein Grenzwert berechnet, welcher dazu dient, Spender- und Empfänger-Blades zu unterscheiden. In der bevorzugten hier berücksichtigten Ausführungsform ist der Grenzwert das theoretische Speicherkapazitäts-Minimum pro Blade, welches für eine perfekte gleichmäßige Verteilung der gesamten Objektgrößen pro Blade benötigt werden würde. Die weitere Verarbeitung zielt darauf ab, diese ideale Situation anzunähern, trotz der Tatsache, dass die Objektgrößen, das heißt die Tabellengrößen endlich sind und variieren.
  • In der hier berücksichtigten bevorzugten Ausführungsform beträgt die Summe aller Tabellengrößen der Tabellen 1 bis 20 29696 MB. Aus diesem Grund beträgt der Grenzwert 29696 MB geteilt durch 8, das heißt die Anzahl von Blades, was einen Grenzwert T = 3712 MB ergibt. Blades, welche Gesamt-Tabellengrößen oberhalb des Grenzwerts T haben, sind definitionsgemäß Spender-Blades, wohingegen Blades, welche Gesamtgrößen unterhalb des Grenzwerts T aufweisen, definitionsgemäß Empfänger-Blades sind. Überträgt man die initiale Verteilung von Tabellen auf die Blades, welche durch das Verfahren der 5 gegeben sind, sind als Startpunkt die Blades 1 bis 5 Spender-Blades, wohingegen Blade 8 ein Empfänger-Blade ist.
  • Nachdem die Spender- und Empfänger-Blades identifiziert wurden, beginnt die Verarbeitung der Tabellen in der Reihenfolge der geordneten Sequenz, beginnend mit der größten Tabelle in der geordneten Sequenz. In anderen Worten beginnt die Verarbeitung mit der am weitesten links stehenden Tabelle in der Sequenz, das heißt der Tabelle 20, von wo aus sich dieses zu der kleinsten Tabelle der Sequenz fortsetzt, das heißt die Tabelle 14 (vgl. die geordnete Sequenz wie in 5 gezeigt).
  • Der Empfänger-Blade 118 weist eine Speicherkapazität von 4096 MB auf. Die Tabellen 8 und 11 sind dem Blade 8 zugeordnet, welche eine Gesamtgröße von 1900 MB haben. Aus diesem Grund gibt es eine Lücke G der übrigbleibenden Speicherkapazität des Empfänger-Blades 8, welche dazu verwendet werden kann, um eine Tabelle von einem der Spender-Blades erneut zuzuordnen. Durch Verarbeitung der Tabellen gemäß der Reihenfolge der Sequenz wird bestimmt, dass die Tabellen 20, 15, 1, 5 und 4 nicht in die Lücke G des Empfänger-Blades 8 passen und aus diesem Grund nicht erneut zugeordnet werden können. Jedoch weist die Tabelle 16 des Spender-Blades 6 eine Größe von 2150 MB auf, welche in die Lücke G = 4096 MB – 1900 MB = 2196 MB passt. Aus diesem Grund wird, wie in 25 veranschaulicht, die Tabelle 16 vorläufig vom Spender-Blade 16 zum Empfänger-Blade 8 verschoben. Um die Qualität der resultierenden vorläufigen Verteilung zu bewerten, wird ein statistisches Maß verwendet.
  • In der hier berücksichtigten bevorzugten Ausführungsform ist das statistische Maß die Standardabweichung der gesamten Tabellengrößen pro Blade. Die Standardabweichung S der initialen Verteilung, wie in den 11 und 12 gezeigt, beträgt 741,06 MB. Die Standardabweichung der vorläufigen Verteilung von Tabellen zu Blades, welche erhalten wird, wenn die Tabelle 16 zum Empfänger-Blade 8 verschoben wird, beträgt S = 856,42 MB. Somit vergrößert das Verschieben der Tabelle 16 zum Empfänger-Blade 8 die Größe der Standardvarianz S. Dies gibt an, dass die Gleichmäßigkeit der Verteilung von Tabellen zu Blades sich mit der vorläufigen Verteilung verschlechtert. Aus diesem Grund wird die vorläufige Verteilung fallengelassen und keine erneute Zuordnung wird durchgeführt.
  • Von hier setzt sich das Verfahren fort, mit dem die Verarbeitung der nächsten Tabelle der Sequenz, das heißt der Tabelle 10 des Spender-Blades 7. Tabelle 10 passt in die Lücke G und ist aus diesem Grund vorläufig vom Spender-Blade 7 zum Empfänger-Blade 8, wie in 26 veranschaulicht, verschoben. Die Standardabweichung der vorläufigen Verteilung von Tabellen zu Blades ergibt sich daher zu S = 673,41 MB, was unterhalb der Standardabweichung der vorläufigen Verteilung ist.
  • Aus diesem Grund wird die vorläufige Verteilung der 26 angenommen und die Tabelle 10 wird tatsächlich vom Spender-Blade 7 zum Empfänger-Blade 8 verschoben. Dieses Verschieben macht den Blade 8 zu einem Spender-Blade, da die Gesamtgröße der Tabellen, welche dem Blade 8 zugeordnet sind, den Grenzwert T übertrifft. In ähnlicher Weise macht die Verschiebung der Tabelle 10 den Blade 7 zu einem Empfänger-Blade, da die Gesamtgröße der Tabellen, welche dem Blade 7 zugeordnet bleiben, unterhalb dem Grenzwert T abfällt.
  • Die Verarbeitung der Tabellen setzt sich gemäß der geordneten Sequenz fort. Die nächste Tabelle der geordneten Sequenz ist Tabelle 17, welche dem Spender-Blade 5 zugeordnet wurde. Da Tabelle 17 in die Lücke G des Empfänger-Blades 7 passt, wird sie vorläufig dorthin verschoben. Die Standardabweichung der resultierenden vorläufigen Verteilung ist S = 605,02 MB, was geringer ist, als die Standardabweichung der aktuellen Verteilung, welche vom vorigen Verschieben der Tabelle 10 zum Blade 8 erhalten wurde. Aus diesem Grund wird die vorläufige Verteilung akzeptiert und Tabelle 17 wird wie in 27 gezeigt, zum Empfänger-Blade 7 verschoben.
  • Die nächste Tabelle der Sequenz ist die Tabelle 9, welche Blade 6 zugeordnet wurde. In der aktuellen Verteilung von Tabellen zu Blades, welche aufgrund der vorigen Iteration erhalten wurde, ist der Blade 5 ein Empfänger-Blade, wohingegen alle anderen Blades Spender-Blades sind. Die Tabelle 9 passt in die Lücke G des Empfänger-Blades 5, wie in 28 veranschaulicht. Aus diesem Grund wird die Tabelle 9 vorläufig zu Blade 5 verschoben, was in einer Vergrößerung der Standardabweichung von 605,02 MB zu 673,61 MB resultiert. Aus diesem Grund wird die Verteilung in dieser Iteration nicht verändert und die Verarbeitung setzt sich mit der nächst kleineren Tabelle der Sequenz, das heißt der Tabelle 18 fort.
  • Die Tabelle 18 passt tatsächlich in die Lücke G und ist aus diesem Grund vorläufig vom Spender-Blade 7 zum Empfänger-Blade 5 verschoben. Die resultierende Standardabweichung beträgt S = 539,09 MB, was unterhalb der aktuellen Standardabweichung von 605,02 MB liegt, welche aufgrund der vorigen Iteration erhalten wurde. Aus diesem Grund wird die vorläufige Verteilung der 29 akzeptiert und die Tabelle 18 wird dem Blade 5 erneut zugeordnet.
  • Die nächste Tabelle in der Sequenz ist die Tabelle 8, welche dem Blade 8 zugeordnet wurde. In der aktuellen Verteilung, welche aus der vorigen Iteration erhalten wurde, sind die Blades 5 und 7 Empfänger-Blades, wohingegen alle anderen Blades Spender-Blades sind. Tabelle 8 befindet sich auf dem Spender-Blade 8 und passt nicht in die Lücke G5 des Empfänger-Blades 5. Hingegen passt die Tabelle 8 in die Lücke G7 des Empfänger-Blades 7 und wird aus diesem Grund zum Empfänger-Blade 7 verschoben. In der resultierenden vorläufigen Verteilung beträgt die neue Standardabweichung 479,49 MB, was unterhalb der aktuellen Standardabweichung von S = 539,09 MB liegt. Die vorläufige Verteilung der 30 wird aus diesem Grund akzeptiert und die Tabelle wird tatsächlich vom Spender-Blade zum Empfänger-Blade 7 verschoben.
  • Die nächste Tabelle in der Sequenz ist die Tabelle 19. In der aktuellen Verteilung, welche aus den vorigen Iterationen erhalten wurde, sind die Blades 5, 7 und 8 Empfänger-Blades, wohingegen alle anderen Blades Spender-Blades sind. Tabelle 19 befindet sich auf einem Spender-Blade. Die Lücken G5 und G7 der Empfänger-Blades 5 und 7 sind zu klein, um die Tabelle 19 aufzunehmen. Aus diesem Grund wird die Tabelle 19 zum Empfänger-Blade 8 verschoben, welche eine ausreichend große Lücke G8 aufweist, um die Tabelle 19 aufzunehmen. Die Standardabweichung für die resultierende vorläufige Verteilung ist 390,36 MB, was unterhalb aktuellen Standardabweichung liegt, welche aus der vorigen Iteration erhalten wurde. Die vorläufige Verteilung der 31 wird aus diesem Grund akzeptiert und die Tabelle 19 wird tatsächlich vom Spender-Blade 4 zum Empfänger-Blade 8 verschoben (32).
  • Die nächste Tabelle in der geordneten Sequenz ist die Tabelle 7 auf Blade 3. Die Blades 4, 5, 7 und 8 sind Empfänger-Blades in der vorläufigen Verteilung. Die Tabelle 7 wird vorläufig vom Spender-Blade 3 zum Empfänger-Blade 4 verschoben, da Tabelle 7 zu groß ist, um auf einen der anderen Empfänger-Blades zu passen. Die resultierende Standardabweichung der neuen vorläufigen Verteilung beträgt 263,26 MB, was unterhalb der aktuellen Standardabweichung liegt, welche aus der vorigen Iteration erhalten wurde. Aus diesem Grund wird die Tabelle 7 erneut vom Spender-Blade dem Empfänger-Blade 4 erneut zugeordnet.
  • Die resultierende aktuelle Verteilung ist in der 33 gezeigt. In dieser Verteilung sind die Blades 3, 5, 7 und 8 Empfänger-Blades. Die nächste Tabelle in der Sequenz ist die Tabelle 3, welche dem Empfänger-Blade 7 zugeordnet ist. Die Tabelle 3 wird aus diesem Grund übersprungen. Dasselbe gilt für die Tabelle 11, da diese dem Empfänger-Blade 8 zugeordnet ist und daher definitionsgemäß nicht zu einem Spender-Blade verschoben werden kann. Die nächste Tabelle der geordneten Sequenz, welche einem Spender-Blade zugeordnet wird, ist die Tabelle 12 auf Blade 1. Tabelle 12 passt in die Lücken G3 und G5 der Empfänger-Blades 3 bzw. 5 und wird aus diesem Grund vorläufig sowohl zu dem Empfänger-Blade 3 als auch dem Empfänger-Blade 5 verschoben. Dies resultiert in zwei konkurrierenden vorläufigen Verteilungen. Wenn die Tabelle 12 vorläufig zu Tabelle 3 verschoben wird, beträgt die neue Standardabweichung der entsprechenden vorläufigen Verteilung 149,53 MB. Im Gegensatz dazu, wenn die Tabelle 12 zum Empfänger-Blade 5 verschoben wird, beträgt die resultierende neue Standardabweichung der entsprechenden vorläufigen Verteilung 264,39 MB. Aus diesem Grund ist die vorläufige Verteilung, welche erhalten wird, wenn die Tabelle 2 zum Blade 3 verschoben wird, gleichmäßiger als die alternative vorläufige Verteilung, welche erhalten wird durch das vorläufige Verschieben der Tabelle 12 zum Blade 5. Aus diesem Grund wird die vorläufige Verteilung, welche durch das Verschieben der Tabelle 12 zum Empfänger-Blade 3 erhalten wird, akzeptiert. Die resultierende neue Verteilung ist in 34 gezeigt.
  • In den neuen Verteilungen sind die Blades 1, 5, 7 und 8 Empfänger-Blades. Die nächste Tabelle in der geordneten Sequenz ist die Tabelle 8, welche dem Spender-Blade 2 zugeordnet ist. Die Tabelle ist klein genug um in die Lücken G1, G5, G7 und G8 der entsprechenden Empfänger-Blades 1, 5, 7 und 8 zu passen. Dies resultiert in vierkonkurrierenden vorläufigen Verteilungen (35):
    Vorläufige Verteilung Neue Standardabweichg.
    Tabelle 6 zu Blade 1 87,66 Mg
    Tabelle 6 zu Blade 5 89,21 MB
    Tabelle 6 zu Blade 7 129,89 MB
    Tabelle 6 zu Blade 8 96,59 MB
  • Aus diesem Grund ergibt die vorläufige Verteilung, welche durch das Verschieben der Tabelle 8 zum Empfänger-Blade 1 erhalten wird, die kleinste neue Standardabweichung und wird aus diesem Grund akzeptiert.
  • Die 35 veranschaulicht die resultierende Verteilung. In dieser Verteilung sind die Blades 5, 7 und 8 Empfänger-Blades. Die nächste Tabelle der geordneten Sequenz ist die Tabelle 8 auf dem Spender-Blade 2. Die konkurrierenden vorläufigen Verteilungen, welche aus der aktuellen Verteilung der 36 erhalten werden, ergeben wie berechnet folgendes:
    Vorläufige Verteilung Neue Standardabweichg.
    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 Reduktion der Standardabweichung wird aus diesem Grund durch Verschieben der Tabelle 2 zum Empfänger-Blade 5 erhalten. Die entsprechende vorläufige Verteilung wird aus diesem Grund akzeptiert; die resultierende aktuelle Verteilung ist in der 36 gezeigt.
  • In der Verteilung der 36 sind die Blades 2, 7 und 8 Empfänger-Blades. Die resultierenden Tabellen der geordneten Sequenz, das heißt die Tabellen 13 und 14 sind dem Empfänger-Blade 2 zugeordnet und können daher per Definition nicht erneut zugeordnet werden. Aus diesem Grund ist die in 36 gezeigte Verteilung die endgültige Verteilung, welche aus der initialen Verteilung der 13 erhalten wird. Es sei angemerkt, dass die Gleichmäßigkeit der endgültigen Verteilung drastisch verbessert wird, wie dies auch durch den Abfall der Standardabweichung von 741,06 MB zu 71,50 MB angezeigt wird.
  • 37 zeigt eine etwas detailliertere Ausführungsform des entsprechenden erneuten Verteilungsverfahrens.
  • In Schritt 300 ist eine initiale Verteilung von Tabellen zu Blades zur Verfügung gestellt. Zum Beispiel kann dies mittels des Verfahrens der 5 erfolgen. Alternativ kann jede andere Verteilung als Startpunkt verwendet werden, z. B. eine echte Verteilung eines existierenden Blade-EDV-Systems. Es sei angemerkt, dass es für die vorliegende Erfindung nicht wesentlich ist, dass die initiale Verteilung die minimale Anzahl von Blades aufweist (da diese durch das Verfahren der 5 bereitgestellt werden kann).
  • In Schritt 302 wird der Satz von Spender-Blades in der initialen Verteilung bestimmt. Bevorzugter weise erfolgt dies mittels eines Grenzwert-Niveaus. Zum Beispiel wird das Grenzwert-Niveau durch Berechnung des gesamten aller Tabellengrößen und Teilen des gesamten aller Tabellengrößen durch die Gesamtanzahl von Blades erhalten. Jene Blades, welche eine Gesamtgröße haben, welche den Grenzwert überschreiten, sind definitionsgemäß Spender Blades. Die Anzahl von Spender-Blades in der initialen Verteilung ist mit D angegeben.
  • In gleicher Weise wird der Satz von Empfänger-Blades in der initialen Verteilung bestimmt. Definitionsgemäß ist ein Blade, welcher kein Spender-Blade ist, ein Empfänger-Blade. Die Anzahl von Empfänger-Blades ist durch R angegeben.
  • In Schritt 306 wird die größte Tabelle in der initialen Verteilung identifiziert. Des Weiteren wird die Standardabweichung S der gesamten Tabellengrößen in der initialen Verteilung in Schritt 306 berechnet.
  • In Schritt 308 wird die Zahl N der gegenwärtigen Tabelle zu K initialisiert.
  • In Schritt 310 wird eine Bestimmung durchgeführt, ob D ≥ 1 und R ≥ 1 ist. Ist dies nicht der Fall, liegt entweder kein Empfänger oder kein Spender-Blade vor, so dass keine der Tabellen erneut zugeordnet werden kann. In diesem Fall wird die initiale Verteilung nicht weiter verbessert.
  • Wenn in Schritt 310 bestimmt wird, dass es tatsächlich zumindest einen Spender-Blade und zumindest einen Empfänger-Blade gibt, springt das Verfahren zu Schritt 312. In Schritt 312 wird eine Bestimmung durchgeführt, ob sich die Tabelle N auf einem Spender-Blade befindet. Ist dies nicht der Fall, springt das Verfahren zu Schritt 348. In Schritt 348 wird nach der nächst kleineren Tabelle K nach der Tabelle N gesucht. In Schritt 350 wird entschieden, ob eine solche Tabelle K gefunden wurde. Ist dies nicht der Fall, springt das Verfahren zu Schritt 352. Ist gegenteiliges der Fall, springt das Verfahren zurück Schritt 308.
  • Wenn in Schritt 312 bestimmt wurde, dass die Tabelle N sich tatsächlich auf einem Spender-Blade befindet, springt das Verfahren zu Schritt 314, wo einer der Empfänger-Blades des Satzes von Empfänger-Blades zufällig als der gegenwärtige Empfänger r gewählt wird, um ein entsprechendes vorläufiges erneutes Zuordnen der Tabelle N zu untersuchen.
  • In Schritt 316 wird eine Bestimmung durchgeführt, ob die Tabelle N auf den Empfänger r passt. Ist dies der Fall, wird die Standardabweichung s(r) der vorläufigen Verteilung berechnet, welche erhalten wird durch Verschieben der Tabelle N von ihrem gegenwärtigen Blade C zum Blade r. In Schritt 320 wird bestimmt, ob die Standardabweichung s(r) unterhalb der Standardabweichung S der aktuellen Verteilung liegt.
  • Ist dies der Fall, wird der Blade r ein Kandidaten-Blade als ein Ziel zur erneuten Zuordnung der Tabelle N. Der Blade r und die entsprechende Standardabweichung s(r) werden in einem Array A in Schritt 322 gespeichert. Es sei angemerkt, dass anstatt eines Arrays A weitere brauchbare Datenstrukturen zur Speicherung von Tupeln r, s(r) verwendet werden können, wie z. B. eine lineare Zeigerliste, eine Datei oder eine andere Dateistruktur. Von hier springt das Verfahren zu Schritt 324, wo eine Bestimmung durchgeführt wird, ob weitere Empfänger-Blades in der gegenwärtigen Verteilung existieren, welche verarbeitet werden müssen. Wenn dies der Fall ist, springt das Verfahren zu Schritt 326, wo r als die Zahl des nächsten Empfänger-Blades des Satzes von Empfänger-Blades gesetzt wird, welcher bisher nicht verarbeitet wurde. Von Schritt 326 springt das Verfahren zu Schritt 316.
  • Wenn es sich in Schritt 316 herausstellt, dass die Tabelle N nicht auf den Empfänger r passt oder wenn es sich in Schritt 320 herausstellt, dass s(r) nicht unterhalb von S liegt, springt das Verfahren direkt von Schritt 316 zu Schritt 320 zu Schritt 324.
  • Nachdem alle Empfänger des Satzes von Empfänger-Blades verarbeitet wurden, springt das Verfahren zu Schritt 328. Im Falle dessen, dass es kein Paar r, s(r) in dem Array A gibt, springt das Verfahren direkt von Schritt 328 zu Schritt 348, um, wenn überhaupt eine nachfolgende Iteration zu initiieren. Wenn es zumindest einen Eintrag im Array A gibt, springt das Verfahren von Schritt 328 zu Schritt 330. In Schritt 330 wird der Eintrag des Array A identifiziert mit dem kleinsten s(r). In einem nachfolgenden Schritt 332 wird der Ziel-Empfänger-Blade T zum Verschieben der Tabelle N zu r gesetzt. In Schritt 334 wird die Tabelle N vom Spender-Blade C zum Empfänger-Blade T verschoben und S wird zu s(T) gesetzt.
  • In Schritt 336 erfolgt eine Bestimmung, ob der Blade C ein Empfänger-Blade aufgrund des Verschiebens wurde. Ist dies der Fall, werden die Zahlen D und R entsprechend in Schritt 338 angepasst. Blade C wird aus dem Satz der Spender-Blades entfernt und dem Satz der Empfänger-Blades in Schritt 340 hinzugefügt, von wo aus das Verfahren zu Schritt 342 springt. Im Fall dessen, dass der Blade C kein Empfänger-Blade wurde, springt das Verfahren direkt von Schritt 336 zu Schritt 342.
  • In Schritt 342 wird bestimmt, ob der Blade T ein Spender-Blade wurde. Ist dies der Fall, werden die Zahlen D und R entsprechend in Schritt 344 angepasst und der Blade C wird von dem Satz der Empfänger-Blades entfernt und dem Satz der Spender-Blades in Schritt 346 hinzugefügt. Von dort springt das Verfahren zu Schritt 348. Im Falle dessen, dass in Schritt 342 bestimmt wird, dass der Blade T kein Spender-Blade wurde, springt das Verfahren direkt von Schritt 342 zu Schritt 348. Die Schleife, welche aus den Schritten 308 bis Schritt 350 besteht, wird so lange durchgeführt, bis alle Tabellen in abnehmender Reihenfolge verarbeitet wurden. Die endgültige Verteilung, welche daraus resultierend erhalten wird, wird in Schritt 352 ausgegeben.
  • 38 zeigt ein zwei-dimensionales Verfahren zur Zuordnung der Objekte zu Blades, um dabei den minimalen Wert für N zu bestimmen. Dieses Verfahren kann durch das Programmmodul 122 implementiert werden (vgl. 1). Dieses Verfahren ist analog zu dem ein-dimensionalen Verfahren der 5; ähnliche Schritte der Verfahren der 38 und 5 sind durch die gleichen Schrittnummern gekennzeichnet.
  • In Schritt 200 wird ein Sortier-Index für jedes der N-Objekte berechnet. Ein Sortier-Index eines Objektes gibt die Menge an Blade-Ressourcen an, welche das Objekt benötigt. Der Sortier-Index dient dem Sortieren der Objekte in abnehmender Reihenfolge der Blade-Ressourcen-Anforderungen.
  • Zum Beispiel wird der Sortier-Index auf Basis der Summe der normalisierten Objektlasten und normalisierten Objektgrößen plus dem absoluten Wert der Differenz der normalisierten Last und Größe oder einer Linearkombination derselben berechnet.
  • In Schritt 201 wird eine Sortieroperation durchgeführt, um die M-Objekte nach dem Sortier-Index zu sortieren. Die entsprechende Objektsequenz ist in Schritt 202 gegeben. In Schritt 204 wird der Index i der Blades zu 1 initialisiert.
  • In Schritt 206 beginnt die Verarbeitung der Objektsequenz mit dem ersten Objekt der Sequenz, das heißt mit dem Objekt, welches den größten Sortier-Indexwert aufweist. Das erste Objekt der Sequenz wird einem ersten der Blades zugeordnet, das heißt Blade B1, in Schritt 206. In Schritt 208 wird das erste Objekt, welches dem Blade B1 zugeordnet wurde, aus der Sequenz gelöscht.
  • In Schritt 210 werden die Größen der Objekte, welche bereits dem B1 zugeordnet wurden, aufsummiert, um eine gesamte Objektgröße von Blades B1 bereitzustellen. Als nächstes wird die Größe der Lücke GS zwischen der gesamten Objektgröße des Blades B1 und einem Größengrenzwert TS berechnet. Wenn das Zuordnungsverfahrwen der 38 zum ersten Mal ausgeführt wird, beträgt der Größengrenzwert T die Speicherkapazität eines der Blades.
  • In Schritt 211 werden die Lasten der Objekte, welche bereits dem Blade B1 zugeordnet wurden, aufsummiert, um eine gesamte Last des Blades B1 bereitzustellen. Als nächstes wird eine Lücke GL zwischen den gesamten Objektlasten des Blades B1 und einem Lastgrenzwert TL berechnet. Wenn das Zuordnungsverfahren der 38 zum ersten Mal ausgeführt wird, beträgt der Lastgrenzwert TL die Lastkapazität eines der Blades.
  • In Schritt 212 wird bestimmt, ob es ein nächstes Objekt in der geordneten Sequenz gibt, welches in beide Lücken GS und GL passt, gibt. In anderen Worten, wird ein nachfolgendes Objekt gesucht, welches dem ersten Objekt in der Objektsequenz folgt, welches eine Objektgröße aufweist, welche klein genug ist, um in die Lücke GS zu passen und welches gleichzeitig eine Objektlast hat, welche klein genug ist, um in GL zu passen.
  • Das nächste nachfolgende Objekt in der Sequenz, welche diese Bedingung erfüllt, wird dem Blade B1 in Schritt 214 zugeordnet und aus der Sequenz in Schritt 216 gelöscht, bevor das Verfahren in Schritt 210 fortfährt.
  • Wenn es kein solches Objekt gibt, welches die Bedingung des Schrittes 212 erfüllt, wird Schritt 218 ausgeführt. In Schritt 218 wird bestimmt, ob alle Objekte bereits Blades zugeordnet wurden. In anderen Worten wird in Schritt 218 überprüft, ob die Sequenz leer ist. Ist dies nicht der Fall, wird der Index i in Schritt 220 erhöht und das Verfahren springt zu Schritt 206 um übrigbleibende Objekte der Sequenz dem nächsten Blade B2 zuzuordnen.
  • Wenn gegenteiliges der Fall ist, ist der Index i die minimale Anzahl N von Blades, welche benötigt sind, um die M-Objekte abzufertigen, das heißt i = N. Diese Zahl wird in Schritt 220 ausgegeben. Die minimale Zahl N von Blades, welche benötigt wird, um die M-Objekte abzufertigen, kann als Basis für eine Investment-Entscheidung zum Kauf einer entsprechenden Anzahl von Blades dienen. Die Zuordnung von Objekten zu Blades wird in Schritt 224 ausgegeben, um die Qualität des Objektgrößenausgleichs zu visualisieren.
  • 39 zeigt die normalisierten Tabellengrößen der Tabellen der 6. Die normalisierte Größe einer Tabelle wird durch Teilung der Tabellengröße durch die maximale Speicherkapazität einer der Blades erhalten.
  • 40 zeigt die Lasten der Tabellen. Nach einer bevorzugten hier berücksichtigten Ausführungsform wird die mittlere Anzahl von Zugriffsoperationen (Auswahlen) pro Sekunde, welche durchgeführt werden oder welche in Bezug auf eine Tabelle erwartet werden, durchgeführt zu werden, als Lastindikator verwendet. In dem hier berücksichtigten Beispiel variiert die Last, welche durch die Zahl von Lesezugriffen pro Sekunde auf eine Tabelle ausgedrückt ist, zwischen 5 Lesezugriffen pro Sekunde (Tabelle 6) und 950 Lesezugriffen pro Sekunde (Tabelle 8). Die Tabellenlast, welche in 40 gegeben ist, kann die aktuellen Tabellenlasten oder durchschnittliche Tabellenlasten sein, welche durch Überwachung eines echten Datenverarbeitungssystems erhalten wurden. Alternativ können die Tabellenlasten Vermutungs- oder Simulationsergebnisse zum Zwecke des Planens eines Clusters 100 sein.
  • 41 zeigt die normalisierten Tabellenlasten. Die normalisierte Tabellenlast einer gegebenen Tabelle wird erhalten durch Teilen der Zahl von Lesezugriffen pro Sekunde auf die Tabelle durch die Lastkapazität eines der Blades.
  • In der bevorzugten hier berücksichtigten Ausführungsform beträgt die Speicherkapazität eines Blades 4096 MB. Somit gibt eine normalisierte Tabellengröße von 1 an, dass die Tabelle die absolut maximale Größe aufweist, welche durch eine gegebene Blade-Hardware gehandhabt werden kann.
  • Die Lastkapazität eines Blades ist die maximal mögliche Zugriffslast, welche durch eine Core-Engine, welche auf einem hier im Beispiel berücksichtigten Blades abgefertigt werden kann. Dieser maximale Wert kann durch Benchmarks, durch Experiment oder Simulation bestimmt werden. Die Lastkapazität hängt von verschiedenen Parametern, wie z. B. Hardware- und Software-Charakteristika und Netzwerk-Bandbreite ab, wenn ein Netzwerk dazu verwendet wird, um Tabellenzugriffe durchzuführen. In der hier berücksichtigten bevorzugten Ausführungsform beträgt die Lastkapazität eines der Blades 1000 Lesezugriffe pro Sekunde. Zu Erklärungszwecken seien hier lediglich Lesezugriffe berücksichtigt. Jedoch können weitere typische Datenverarbeitungsaufgaben, wie z. B. Zugriffe, welche Veränderungen der Daten mit sich bringen, ebenfalls berücksichtigt werden, um Lastkapazitäten und Tabellenlasten zu bestimmen.
  • 42 zeigt ein Diagramm, welches die verschiedenen normalisierten Tabellengrößen und Tabellenlasten veranschaulicht. Wie aus 32 entnehmbar ist, gibt es Tabellen, welche nur eine Minimum-Anzahl von Blade-Ressourcen benötigen, insbesondere Tabelle 13, welche eine kleine Tabellengröße und eine niedrige Tabellenlast aufweist. Auf der anderen Seite gibt es Tabellen, welche eine riesige Menge von Blade-Ressourcen benötigen, da diese sowohl riesige Tabellengrößen als auch hohe Tabellenlasten haben. Die Verteilung von Tabellen zu Blades zielt darauf ab, die Verwendung der entsprechenden Blade-Ressourcen bezüglich sowohl Größe als auch Last auszugleichen. Die zwei Bedingungen, das heißt Größe und Last werden in einem gemeinsamen Such-Index kombiniert, welcher ein objektives Maß für die Menge an Blade-Ressourcen bereitstellt, welche eine gegebene Tabelle benötigt.
  • Die folgende Definition des Sortier-Index wird exemplarisch verwendet, ohne Beschränkung der Allgemeinheit: Sortier-Index = W1 + (Größe + Last) + W2·absoluter Wert (Größe-Last),wobei Größe die Tabellengröße ist,
    Last die Tabellenlast ist,
    W1 ein Gewichtungsfaktor für (Größe + Last) ist und
    W2 ein Gewichtungsfaktor für den absoluten Wert der Differenz zwischen Größe und Last ist.
  • Zum Zwecke des folgenden Beispiels seien die Gewichtungsfaktoren W1 und W2 zu 1 gesetzt ohne Beschränkung der Allgemeinheit.
  • In diesem Fall errechnet sich der obige Ausdruck wie folgt:
    Wenn Größe > Last: Sortier-Index = 2·Größe.
    Wenn Größe = Last: Sortier-Index = 2·Größe = 2·Last.
    Wenn Größe < Last: Sortier-Index = 2 Last.
  • 43 zeigt eine geordnete Sequenz in abnehmender Reihenfolge der Sortier-Indizes der Tabellen. Die Tabelle, welche den größten Sortier-Indexwert aufweist und welche daher die größte Anzahl von Blade-Ressourcen benötigt, ist Tabelle 8, wohingegen die Tabelle, welche den kleinsten Sortier-Indexwert aufweist und welche die kleinste Menge von Blade-Ressourcen benötigt, die Tabelle 13 ist, wie aus 43 entnehmbar ist.
  • 44 zeigt die geordnete Sequenz der 43, welches die normalisierten Tabellengrößen und Tabellenlasten der individuellen Tabellen veranschaulicht.
  • 45 veranschaulicht die erste Iteration zur Zuordnung von Tabellen zu Blades, basierend auf der geordneten Sequenz, wie in 43 und 44 gezeigt. Es sei angenommen, dass jeder Blade eine Speicherkapazität aufweist, welche einem normalisierten Größengrenzwert TS = 1 und einer Lastkapazität entspricht, welche einem normalisierten Lastgrenzwert TL entspricht.
  • Das Zuordnungsverfahren beginnt mit der ersten Tabelle der geordneten Sequenz, das heißt Tabelle 8. Tabelle 8 ist dem Blade 1 wie in 45 veranschaulicht, zugeordnet. Dies resultiert in einer normalisierten Lücke GS einer unbenutzten Speicherkapazität GS = 0,6948 und einer Lücke GL einer unbenutzten Lastkapazität GL = 0,05.
  • Als nächstes werden aufeinanderfolgende Tabellen in der geordneten Sequenz durchsucht, welche Tabellengrößen und Tabellenlasten aufweisen, welche in die entsprechenden Lücken GS und GL passen. Dies sind die Tabellen 6 und 13. Da Tabelle 6 der Tabelle 13 in der geordneten Sequenz vorangeht, wird sie dem Blade 1 wie in der 46 veranschaulicht, zugeordnet.
  • Als nächstes wird die gesamte Tabellengröße und die gesamte Tabellenlast des Blades 1 aktualisiert, wie in 47 veranschaulicht. Dies resultiert in einer aktualisierten normalisierten Lücke GS = 0,6362 und einer aktualisierten normalisierten Lücke GL = 0,045, wie in 48 veranschaulicht. Nun werden Tabellen der geordneten Sequenz gesucht, welche der Tabelle 8 nachfolgend sind und welche in beide Lücke GS und GL passen.
  • Die einzige, Tabelle, welche beide Bedingungen erfüllt, ist die Tabelle 13, welche aus diesem Grund dem Blade 1 zugeordnet wird, wie in 48 veranschaulicht. Das Ergebnis ist in 49 gezeigt. Die aktualisierte normalisierte Lücke GS beträgt 0,6167 und die aktualisierte normalisierte Lücke GL beträgt 0,03. Keine Tabelle in der geordneten Sequenz genügt beiden Einschränkungen.
  • Da nichtzugeordnete Tabellen in der Sequenz übrigbleiben, wird, wie in 50 veranschaulicht, ein zusätzlicher Blade 2 benötigt. Definitionsgemäß wird die erste Tabelle der übrigbleibenden geordneten Sequenz, das heißt die Tabelle 20 dem Blade 2 zugeordnet. Dies resultiert in normalisierten Lücken, die GS = 0,1294 und GL = 0,5600. Die einzige Tabelle, welche beiden Einschränkungen genügt, ist die Tabelle 12, welche aus diesem Grund auf dem Blade 2, wie in 50 veranschaulicht, verschoben wird.
  • 51 veranschaulicht das Ergebnis dieser Zuordnung. Die aktualisierte normalisierte Lücke beträgt 0,0024 und die aktualisierte normalisierte Lücke GL beträgt 0,4500. Keine der Tabellen der übrigbleibenden geordneten Sequenz genügt diesen Einschränkungen, so dass ein weiterer Blade 3 benötigt wird, usw. Dieses Verfahren wird durchgeführt, bis die geordnete Sequenz leer ist, das heißt bis alle Tabellen einem Blade zugeordnet wurden. Die resultierende Zuordnung von Blades und die resultierende minimale Anzahl von Blades ist in der 52 veranschaulicht. In dem hier berücksichtigten Beispiel beträgt die minimale Anzahl N von Blades, welche zur Handhabung aller Tabellen notwendig ist, N = 10.
  • Um weiter die Qualität des Ausgleichs zu verbessern, kann das Verfahren gemäß 53 auf Basis des Ergebnisses durchgeführt werden, welches durch das Verfahren gemäß der 38 gegeben ist. In Schritt 800 werden die größten übrigbleibenden Lücken, GS und GL, wie in 52 veranschaulicht, bestimmt. In dem in 52 berücksichtigten Beispiel befindet sich die größte übrigbleibende Lücke GS auf Blade 1 und die größte übrigbleibende Lücke GL auf Blade 10.
  • In Schritt 802 wird die größte übrigbleibende Lücke GS durch N dividiert, was Delta 1 ergibt, und die größte übrigbleibende Lücke GL wird durch N dividiert, was Delta 2 ergibt.
  • In Schritt 804 wird der Größengrenzwert TS durch Delta 1 vermindert und der Lastgrenzwert TL wird durch Delta 2 vermindert. In Schritt 806 wird das Verfahren gemäß der 38 erneut durchgeführt mit den verminderten Grenzwerten, welche in Schritt 804 bestimmt wurden. Im Fall dessen, dass die Sortier-Indizes und die ursprüngliche Objektsequenz, welche gemäß dem Verfahren der 38 durch Durchführung der Schritte 200 bis 202 erhalten wurden, gespeichert wurden, können diese Schritte übersprungen werden, um die Durchführung des Verfahrens gemäß der 38 in Schritt 204 zu beginnen. Als Ergebnis ergibt sich ein verbesserter Ausgleich.
  • 54 zeigt einen alternativen Ansatz, um den Ausgleich zu verfeinern. In Schritt 900 wird Delta 3 berechnet, indem die Differenz der Summe der Speicherkapazität der Blades und die Summe der Objektgrößen aller Objekte, welche zu den Blades zugeordnet werden sollen, berechnet wird, und indem die Differenz durch die minimale Anzahl von Blades N geteilt wird. In Schritt 902 wird Delta 4 berechnet durch Berechnung der Differenz der Summe der Lastkapazitäten der Blades und der Summe der Objektlasten aller Blades, welche den Blades zugeordnet werden sollen und durch Teilen der Differenz durch die minimale Anzahl von Blades N. In dem hier berücksichtigten Beispiel werden keine normalisierten Werte in Schritt 900 und 902 verwendet.
  • In Schritt 904 wird der Größengrenzwert TS durch den normalisierten Wert von Delta 3 vermindert. Der normalisierte Wert von Delta 3 wird erhalten durch Teilen von Delta 3 durch die Speicherkapazität einer der Blades.
  • Gleichermaßen wird in Schritt 906 der Lastgrenzwert TL aktualisiert, durch das normalisierte Delta 4. Die Normalisierung von Delta 4 wird durchgeführt, indem Delta 4 durch die Lastkapazität einer der Blades dividiert wird.
  • Der reduzierte Größengrenzwert TS und der reduzierte Lastgrenzwert TL entsprechen dem theoretischen Limit aller Blade-Ressourcen, welche benötigt werden, um die gegebenen Objekte abzuarbeiten. Da die Objektgranularität endlich ist, werden die theoretischen Grenzwertschranken in den meisten Fällen überschritten:
    Um den Ausgleich zu verfeinern, wird das Verfahren gemäß der 38 erneut durchgeführt (Schritt 908) auf Basis des Größengrenzwerts TS, welcher in Schritt 904 erhalten wurde und dem reduzierten Lastgrenzwert TL, welcher aus Schritt 906 erhalten wurde mit der Modifikation, dass die Anzahl von Blades für das erneute Durchführen des Verfahrens der 38 durch die zuvor bestimmte minimale Anzahl von Blades N beschränkt ist. In anderen Worten bricht das Zuordnungsverfahren gemäß der 38 ab, wenn die minimale Anzahl N von Blades aufgebraucht wurde; dies mag zur Konsequenz haben, dass es eine überschüssige Menge von Speicher und/oder Lastanforderungen für den letzten Blade der minimalen Anzahl N von Blades gibt, welche für das Zuordnungsverfahren berücksichtigt wurde, welche die entsprechenden Grenzwerte TS und/oder TL überschreiten. Wiederum können die Schritte 200 bis 202 des Verfahrens der 38 übersprungen werden, im Falle dessen, dass die Sortier-Indizes und die sortierte Sequenz gespeichert wurde, als das Verfahren gemäß der 38 zum ersten durchgeführt wurde. In Schritt 910 wird bestimmt, ob es eine solche überschüssige Menge von Speicheranforderung und/oder Lastanforderung für den letzten Blade N, das heißt den Blade 10 gibt. Ist dies nicht der Fall, wird die resultierende Zuordnung von Objekten für Blades in Schritt 912 ausgegeben.
  • Wenn Gegenteiliges der Fall ist, wird Schritt 914 durchgeführt, um die Werte von Delta 5 und/oder Delta 6 zu berechnen. Delta 6 wird erhalten durch Dividierung der überschüssigen Speichermenge, wenn überhaupt vorhanden, durch die Anzahl von Blades N. Gleicherweise wird Delta 6 erhalten durch Teilen der überschüssigen Lastanforderung, wenn überhaupt vorhanden, durch die Anzahl von Blades N.
  • Auf dieser Basis werden die Größen und/oder Lastgrenzwerte in Schritt 916 inkrementiert. Von dort springt das Verfahren zurück zu Schritt 908.
  • Die Schritte 908 bis 916 werden wiederholt durchgeführt, bis es nicht länger eine überschüssige Menge von Speicher und/oder Lastanforderungen gibt, welche nicht durch die gegebene Anzahl N von Blades bereitgestellt werden kann.
  • 55 zeigt eine weitere Alternative zur Verfeinerung des Ausgleichs. Die Schritte 900 und 902 des Verfahrens der 54 werden durchgeführt, um Delta 3 und Delta 4 zu erhalten. Die Lücken Delta 3 und Delta 4 werden nun abgetastet durch eine schrittweise Variierung der entsprechenden Größen und Lastgrenzwerte, um eine etwas ausgeglichenere Zuordnung von Objekten zu Blades zu ermitteln. Zu diesem Zwecke werden Delta 3 und Delta 4 in äquidistante Intervalle unterteilt, welche Schrittgrößen Delta 7 bzw. Delta 8 haben, wie in Schritt 1000 gezeigt. Die Anzahl von Inkrementen zur Durchführung der entsprechenden Abtastungen kann vorgegeben oder durch einen Benutzer auswählbar sein.
  • Es sei angemerkt, dass die Anzahl von Inkrementierungen zur Abtastung von GS und zur Abtastung GL nicht übereinstimmen müssen. Vorzugsweise werden die Abtastungen unabhängig voneinander durchgeführt, so dass die gesamte Anzahl von Zuordnungen, welche berücksichtigt wird, der Anzahl von Inkrementen für die GS-Abtastung multipliziert mit der Anzahl von Inkrementen für die GL-Abtastung entspricht.
  • In Schritt 1002 werden die Größen und Lastgrenzwerte zu den entsprechenden theoretischen Minima festgesetzt, welche benötigt werden, um ausreichende Blade-Ressourcen zur Handhabung der gegebenen Anzahl von Objekten bereitzustellen. Auf dieser Basis wird das Verfahren gemäß der 38 in Schritt 1004 erneut durchgeführt. In Schritt 1006 wird ein statistisches Maß berechnet als ein Qualitätsmaß für den Ausgleich der Zuordnung von Objekten zu Blades, welche, wenn überhaupt, als Ergebnis des Schrittes 1006 erhalten wurde. Zum Beispiel wird eine Standardabweichung der gesamten Sortier-Indexwerte der Objekte, welche zu einem der Blades zugeordnet wurden, berechnet. In anderen Worten wird für jeden Blade die Summe der Sortier-Indexwerte der Objekte, welche dem Blade zugeordnet wurde, berechnet. Dies ergibt einen Gesamt-Sortier-Indexwert pro Blade. Als nächstes wird die Standardabweichung für den Gesamt-Sortier-Indexwert berechnet.
  • In Schritt 1008 wird zumindest einer der Grenzwerte TS oder TL inkrementiert durch den normalisierten Wert von Delta 7 bzw. den normalisierten Wert von Delta 8. Als nächstes wird Schritt 1004 auf Basis der inkrementierten Größen und Lastgrenzwerte erneut durchgeführt. Die Schritte 1004 bis 1008 werden wiederholt durchgeführt, bis die entsprechenden Abtastungen durch GS und GL vollständig sind und die entsprechenden Zuordnungen von Objekten zu Blades erhalten wurde. In Schritt 1010 wird eine der Zuordnungen basierend auf den statistischen Maßen ausgewählt. Zum Beispiel wird die Zuordnung, welche die niedrigste Standardabweichung aufweist, ausgewählt.
  • Es sei angemerkt, dass das Verfahren durch die minimale Anzahl von Blades N beschränkt ist. Für Zuordnungen, welche nicht für diese gegebene minimale Anzahl von Blades N geeignet sind, muss kein statistisches Maß berechnet werden, da diese Zuordnungen nicht berücksichtigt sind.
  • Es sei angemerkt, dass die Programmmodule 116 und 118 der Ausführungsform der 1 durch eine einzelne Software-Routine implementiert sein können, welche z. B. das Verfahren, wie in den 5, 14, 17 und/oder 21 gezeigt, implementiert, da dieses Verfahren sowohl für den Zweck des Größenausgleichs als auch des Lastausgleichs verwendet werden kann. Im Lastausgleichsfall müssen die Datenobjekte gemäß der Last statt gemäß der Größe sortiert werden, wohingegen ansonsten diese Verfahren auf dieselbe Art und Weise verwendet werden können.
  • 100
    Cluster
    102
    Prozessor
    104
    Speicher
    106
    Netzwerk
    108
    Verwaltungseinheit
    110
    Prozessor
    112
    Programmmodul
    114
    Programmmodul
    116
    Programmmodul
    118
    Programmmodul
    120
    Programmmodul
    122
    Programmmodul
    124
    Programmmodul
    126
    Hauptspeicher
    128
    Speicher
    130
    Tabelle
    132
    Zeitgeber
    134
    Bildschirm
    136
    Fenster
    138
    Schaltknopf
    140
    Schaltknopf
    142
    Schaltknopf
    144
    Ankreuzfeld
    146
    Ankreuzfeld
    148
    Eingabefeld
    150
    Fenster
    152
    Diagramm
    154
    Balken
    156
    Knopf
    158
    Knopf
    160
    Knopf

Claims (9)

  1. Datenverarbeitungssystem zur Bestimmung einer Verteilung eines Satzes von Objekten zu Verarbeitungseinheiten eines Clusters (100) von Verarbeitungseinheiten, wobei die Objekte eine erste und eine zweite Eigenschaft aufweisen, wobei alle Verarbeitungseinheiten einen Speicher (104) und einen Prozessor (102) aufweisen, wobei alle Speicher dieselbe Speicherkapazität zur Aufnahme der Objekte aufweisen und wobei alle Prozessoren dieselben Lastkapazitäten aufweisen, wobei das Datenverarbeitungssystem umfasst: – Mittel (114, 130) zur Auswahl eines ersten oder eines zweiten Betriebsmodus, – Mittel (116, 118, 120, 122) zur Bestimmung einer Verteilung des Satzes von Objekten über einen Satz der Verarbeitungseinheiten, – Mittel (116, 118, 120, 122) zur Bestimmung einer minimalen Anzahl der Verarbeitungseinheiten, welche ausreichende Kapazitäten zur Aufnahme des Satzes von Objekten aufweisen, wobei die Mittel zur Bestimmung einer minimalen Anzahl betreibbar sind zur a) Durchführung eines Sortiervorgangs, um die Objekte basierend auf den besagten ersten und/oder zweiten Eigenschaften gemäß abnehmender Reihenfolge zu sortieren, um eine Objektsequenz (201; 200, 201) zur Verfügung zu stellen, b) Initialisierung eines Index i für die Verarbeitungseinheiten (204), Verarbeitung der ersten Objektsequenz beginnend mit dem ersten Objekt der Objektsequenz durch c) Zuordnung des ersten Objekts zu der Verarbeitungseinheit i (206), d) Löschen des ersten Objekts aus der Objektsequenz (208), e) Addieren der ersten und/oder zweiten Eigenschaften der Objekte, welche bereits zur Verarbeitungseinheit i zugeordnet wurden, um erste und/oder zweite Gesamteigenschaften zur Verfügung zu stellen, f) Berechnung erster und/oder zweiter Lücken zwischen den ersten und/oder zweiten Gesamteigenschaften und der entsprechenden (210; 210, 211) Speicherkapazität und/oder Lastkapazität, g) Bestimmung, ob ein Objekt der Objektsequenz übrigbleibt, welches in die erste und/oder zweite Lücke (212) passt, und wenn dies der Fall ist, Zuordnung (214) dieses Objekts zu der Verarbeitungseinheit i, welche die größten ersten und/oder zweiten Eigenschaften aufweist, Löschen (216) dieses Objekts aus der Objektsequenz und Zurückgehen zu Schritt f), und im Falle dessen, dass es kein solches Objekt gibt, welches in die erste und/oder zweite Lücke passt, Bestimmung (218), ob die Objektsequenz leer ist, wobei der Index i um 1 erhöht wird (220), wenn die Objektsequenz nicht leer ist und zurückgehen zu Schritt c), und wobei der Index i der minimalen Anzahl entspricht, wenn die Objektsequenz leer ist (222), wobei der erste Betriebsmodus des Satzes von Verarbeitungseinheiten alle Verarbeitungseinheiten des Clusters enthält und wobei in dem zweiten Betriebsmodus der Satz von Verarbeitungseinheiten die minimale Anzahl der Verarbeitungseinheiten enthält, – des Weiteren umfassend Mittel (114, 130) zur Auswahl eines ersten und zweiten Verteilungsmodus, wobei in dem ersten Verteilungsmodus eine einzelne Eigenschaft der Objekte dazu verwendet wird, um die Verteilung zu bestimmen und wobei in dem zweiten Verteilungsmodus erste und zweite Eigenschaften der Objekte dazu verwendet werden, um die Verteilung zu bestimmen, – wobei die einzelne Eigenschaft die Größe eines Objekts oder die Last eines Objekts ist, – wobei die erste Eigenschaft die Größe eines Objekts ist und die zweite Eigenschaft die Last eines Objekts ist, – wobei im ersten Verteilungsmodus die einzelne Eigenschaft dazu verwendet wird, um die minimale Anzahl der Verarbeitungseinheiten zu bestimmen und wobei in dem zweiten Verteilungsmodus die ersten und zweiten Eigenschaften dazu verwendet werden, um die minimale Anzahl von Verarbeitungseinheiten zu bestimmen, wenn der zweite Betriebsmodus ausgewählt ist.
  2. Datenverarbeitungssystem nach Anspruch 1, des Weiteren umfassend Mittel (130, 132) zur automatischen Initiierung einer erneuten Verteilung des Satzes von Objekten, um erneut Objekte des Satzes von Objekten Verarbeitungseinheiten des Clusters in Übereinstimmung mit einer Verteilung zuzuordnen, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt werden.
  3. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, des Weiteren umfassend Mittel (114; 150, 156, 158, 160) zur manuellen Initiierung einer erneuten Verteilung des Satzes von Objekten, um Objekte des Satzes von Objekten erneut zu Verarbeitungseinheiten des Clusters in Übereinstimmung mit einer Verteilung zuzuordnen, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt wird.
  4. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, des Weiteren umfassend Mittel (150, 152) zur Visualisierung einer gegenwärtigen Verteilung und einer erneuten Verteilung, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt werden und Mittel (156) zur Eingabe einer Benutzerannahme der erneuten Verteilung.
  5. Verfahren zur Bestimmung einer Verteilung eines Satzes von Objekten zu Verarbeitungseinheiten eines Clusters von Verarbeitungseinheiten, wobei die Objekte eine erste und eine zweite Eigenschaft aufweisen, wobei alle Verarbeitungseinheiten einen Speicher (104) und einen Prozessor (102) aufweisen, wobei alle Speicher dieselbe Speicherkapazität zur Aufnahme von Objekten aufweisen und wobei alle Prozessoren dieselbe Lastkapazität aufweisen, wobei das Verfahren umfasst: – Auswahl eines ersten oder eines zweiten Betriebsmodus, – Bestimmung einer Verteilung des Satzes von Objekten über einen Satz der Verarbeitungseinheiten, – Bestimmung einer minimalen Anzahl von Verarbeitungseinheiten, welche ausreichende Kapazitäten zur Aufnahme des Satzes von Objekten aufweisen durch die Schritte: a) Durchführung eines Sortiervorgangs, um die Objekte basierend auf der ersten und/oder zweiten Eigenschaft in abnehmender Reihenfolge zu sortieren, um eine Objektsequenz (201; 200, 201) zur Verfügung zu stellen, b) Initialisierung eines Index i für die Verarbeitungseinheiten (204), Verarbeitung der ersten Objektsequenz beginnend mit dem ersten Objekt der Objektsequenz durch c) Zuordnung des ersten Objekts zu der Verarbeitungseinheit i (206), d) Löschen des ersten Objekts aus der Objektsequenz (208), e) Zusammenrechnen der ersten und/oder zweiten Eigenschaften der Objekte, welche bereits zur Verarbeitungseinheit i zugeordnet wurden, um erste und/oder zweite Gesamteigenschaften zur Verfügung zu stellen, f) Berechnung erster und/oder zweiter Lücken zwischen den ersten und/oder zweiten Gesamteigenschaften und der entsprechenden (210; 210, 211) Speicherkapazität und/oder Lastkapazität, g) Bestimmung, ob ein Objekt der Objektsequenz übrigbleibt, welches in die erste und/oder zweite Lücke (212) passt, und wenn dies der Fall ist, Zuordnung (214) dieses Objekts zu der Verarbeitungseinheit i, welche die größte erste und/oder zweite Eigenschaft aufweist, Löschen (216) dieses Objekts aus der Objektsequenz und Zurückgehen nach Schritt f), und wenn es kein solches Objekt gibt, welches in die erste und/oder zweite Lücke passt, Bestimmung (218), ob die Objektsequenz leer ist, wobei der Index i um 1 erhöht wird (220), wenn die Objektsequenz nicht leer ist und zurückgehen zu Schritt c), und wobei der Index i der minimalen Anzahl entspricht, wenn die Objektsequenz leer ist (222), wobei im ersten Betriebsmodus der Satz der Verarbeitungseinheiten alle Verarbeitungseinheiten des Clusters enthält und in dem zweiten Betriebsmodus der Satz von Verarbeitungseinheiten die minimale Anzahl der Verarbeitungseinheiten enthält, – des Weiteren umfassend Auswahl eines ersten und zweiten Verteilungsmodus, wobei im ersten Verteilungsmodus eine einzelne Eigenschaft des Objekts dazu verwendet wird, um die Verteilung zu bestimmen und wobei in dem zweiten Verteilungsmodus erste und zweite Eigenschaften der Objekte dazu verwendet werden, um die Verteilung zu bestimmen, – wobei die einzelne Eigenschaft die Größe eines Objekts oder die Last eines Objekts ist, – wobei die erste Eigenschaft die Größe eines Objekts ist und die zweite Eigenschaft die Last eines Objekts ist, – wobei im ersten Verteilungsmodus die einzelne Eigenschaft dazu verwendet wird, um die minimale Anzahl von Verarbeitungseinheiten zu bestimmen und wobei in dem zweiten Verteilungsmodus die ersten und zweiten Eigenschaften dazu verwendet werden, um die minimale Anzahl von Verarbeitungseinheiten zu bestimmen, wenn der zweite Betriebsmodus ausgewählt ist.
  6. Verfahren nach Anspruch 5, des Weiteren umfassend automatisches Initiieren einer erneuten Verteilung des Satzes von Objekten, um Objekte des Satzes von Objekten erneut Verarbeitungseinheiten des Clusters gemäß einer Verteilung zuzuordnen, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt werden.
  7. Verfahren nach Anspruch 5 oder 6, des Weiteren umfassend manuelles Initiieren einer erneuten Verteilung des Satzes von Objekten, um Objekte des Satzes von Objekten erneut zu Verarbeitungseinheiten des Clusters in Übereinstimmung mit einer Verteilung zuzuordnen, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche 5 bis 7, des Weiteren umfassend Visualisieren einer gegenwärtigen Verteilung und einer erneuten Verteilung, welche durch die Mittel zur Bestimmung einer Verteilung zur Verfügung gestellt werden und Mittel (156) zur Eingabe einer Benutzerannahme der erneuten Verteilung.
  9. Computerprogrammprodukt umfassend computerausführbare Instruktionen zur Durchführung eines Verfahrens gemäß einem der vorigen Schritte 5 bis 8.
DE200460011757 2004-07-01 2004-07-01 Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten Active DE602004011757T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP20040015514 EP1612672B1 (de) 2004-07-01 2004-07-01 Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten

Publications (2)

Publication Number Publication Date
DE602004011757D1 DE602004011757D1 (de) 2008-03-27
DE602004011757T2 true DE602004011757T2 (de) 2009-02-05

Family

ID=34925574

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200460011757 Active DE602004011757T2 (de) 2004-07-01 2004-07-01 Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten

Country Status (2)

Country Link
EP (1) EP1612672B1 (de)
DE (1) DE602004011757T2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1626339B1 (de) * 2004-08-13 2016-02-24 Sap Se Datenverarbeitungssystem und -verfahren zur Verteilung von Objekten auf Prozessoreinheiten
JP5089896B2 (ja) * 2006-03-17 2012-12-05 株式会社日立製作所 マイクロプロセッサの負荷分散機能を備えたストレージシステム
EP2350805A1 (de) 2008-10-10 2011-08-03 Hitachi, Ltd. Speichersystem und steuerungsverfahren dafür
KR101997794B1 (ko) * 2012-12-11 2019-07-09 삼성전자주식회사 메모리 제어기 및 그것을 포함한 메모리 시스템

Also Published As

Publication number Publication date
DE602004011757D1 (de) 2008-03-27
EP1612672B1 (de) 2008-02-13
EP1612672A1 (de) 2006-01-04

Similar Documents

Publication Publication Date Title
DE602004011890T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE60301202T2 (de) Verfahren und vorrichtung zur verkehrssteuerung einer web-farm
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE60307532T2 (de) Paralleles Prozess-Ausführungsverfahren und Mehrprozessorenrechner
DE69835121T2 (de) Betriebsmittelsablaufsteuerung
DE4110144A1 (de) Rohstoff-produktgruppen-zuweisungskoordinator
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
DE102014204842A1 (de) Clustering von Daten
DE102016204680A1 (de) Auswählen von Strategien zum Zuordnen von Ressourcen und Lösen von Ressourcenkonflikten
DE69815819T2 (de) Adaptives verteiltes informationsnetzwerk
DE3911465C2 (de) Verfahren zur automatischen Konfiguration technischer Systeme aus Komponenten
DE102005030663A1 (de) System und Verfahren zum Betreiben von Lastausgleichselementen für Mehrfachinstanzanwendungen
EP1626339B1 (de) Datenverarbeitungssystem und -verfahren zur Verteilung von Objekten auf Prozessoreinheiten
DE4110152A1 (de) Verfahren zum planen organisatorischer aktivitaeten
DE102012220514A1 (de) Steuern der nutzung von datenverarbeitungsressourcen ineiner service-datenbank
DE102006036796A1 (de) Zeitplanmanagement
EP1924913B1 (de) Steuerung eines zugriffs auf dienste und/oder ressourcen eines datenverarbeitungssystems
DE112004000870T5 (de) Mehrkampagnen-Zuordnungsvorrichtung, die das Problem sich überschneidender Empfehlungen berücksichtigt
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE60319003T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE602004011757T2 (de) Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten
DE69934823T2 (de) Verfahren zur last-regulierung
DE112019005042T5 (de) Ressourcenzuweisung unter verwendung von wiederherstellungsguthaben

Legal Events

Date Code Title Description
8364 No opposition during term of opposition