-
GEBIET DER ERFINDUNG
-
Die Erfindung betrifft allgemein Computer und Computer-Software und insbesondere logisch partitionierte Datenverarbeitungsumgebungen.
-
HINTERGRUND DER ERFINDUNG
-
Die Datenverarbeitungstechnologie hat sich in bemerkenswerter Geschwindigkeit weiterentwickelt, wobei jede nachfolgende Generation von Datenverarbeitungssystemen eine bessere Leistung, Funktionalität und Speicherkapazität aufwies, oft zu geringeren Kosten. Außerdem ist Energieverwaltung in Rechenzentren in den letzten Jahren immer wichtiger geworden, wie an den Energy Star-Richtlinien und dem Konzept von ‚grünen‘ Computersystemen und Rechenzentren deutlich sichtbar wird. Energiekosten und Umweltaspekte sind wichtige Themen, vor allem für Unternehmen mit großen Rechenzentren. Somit können Computer- und Software-Hersteller, die energieeffiziente Systeme und Lösungen produzieren, sich auf dem Markt einen deutlichen Vorteil verschaffen.
-
Techniken zur Energieverwaltung sind oft mit der Überwachung von Arbeitslasten und Umweltfaktoren und dem Verschieben von Arbeitslasten zwischen Datenverarbeitungsressourcen in einem System oder einem Pool von Systemen verbunden, um auf diese Weise einen Vorteil in Bezug auf den Energieverbrauch zu erzielen. Dieser Vorteil kann durch Herunterfahren (entweder durch Einstellen eines geringeren Energiezustands oder komplettes Abschalten) eines Systems oder einer Komponente in einem System oder durch Vermeiden von Leistungsengpässen in dem Rechenzentrum oder durch Vermeiden von Bereichen oder Zeiten mit hohen Energiekosten erzielt werden. Die verlagerten Arbeitslasten sind typischerweise entweder Zuteilungseinheiten, wenn Arbeitslast zwischen Prozessorkernen verschoben wird, um eine Umsetzung durch Prozessor und Arbeitsspeicher zu erleichtern, oder Anwendungen/Jobs, wenn Arbeitslast zwischen Systemen in einem Rechenzentrum verschoben wird.
-
Viele Rechenzentren verwenden eine logische Partitionierung, die es ermöglicht, dass ein Computer zum gleichzeitigen Ausführen von mehreren Betriebsumgebungen oder Betriebssystemen verwendet wird. In einer typischen Ausführungsform kann ein einzelner logisch partitionierter Computer oder ein logisch partitioniertes Datenverarbeitungssystem eine Mehrzahl von Betriebssystemen in einer entsprechenden Mehrzahl von logischen Partitionen (LPARs) ausführen, die auch als virtuelle Maschinen (VMs) bezeichnet werden. Jedes Betriebssystem befindet sich in seiner eigenen logischen Partition, wobei jeder logischen Partition ein Teil eines physischen Prozessors, ein ganzer physischer Prozessor oder mehrere physische Prozessoren von dem Computer zugeordnet wird. Außerdem wird jeder logischen Partition ein Teil des Arbeitsspeichers des Computers zugeordnet. Ein zugrunde liegender Partitionsmanager, der oft als Hypervisor oder als virtueller Maschinen-Monitor (VMM) bezeichnet wird, verwaltet und steuert die logischen Partitionen. Der Hypervisor ist typischerweise ein Teil der System-Firmware und verwaltet die Zuordnung von Ressourcen zu den Betriebssystemen und logischen Partitionen. Daher kann ein logisch partitionierter Computer eine oder mehrere logische Partitionen ausführen und somit die zugrunde liegenden Hardware-Ressourcen virtualisieren, die von den Anwendungen, Betriebssystemen und sonstigem Programm-Code verwendet werden, der für den Betrieb in diesen logischen Partitionen konfiguriert ist.
-
In einem großen Rechenzentrum ist im Allgemeinen eine ausreichende Verarbeitungskapazität vorhanden, um zu ermöglichen, dass logische Partitionen so platziert werden, dass die gesamte Arbeitslast des Rechenzentrums sich nur auf einer Untergruppe der verfügbaren Hardware-Ressourcen in dem Rechenzentrum befindet, wodurch ermöglicht wird, dass einige der Hardware-Ressourcen zum Verringern des Energiegesamtverbrauchs heruntergefahren werden. In Anbetracht der dynamischen Natur vieler Arbeitslasten kann sich die optimale Zuordnung von logischen Partitionen zu verschiedenen Hardware-Ressourcen in einem Rechenzentrum jedoch im Lauf der Zeit ändern und in einigen Fällen ein Eingreifen des Administrators in Bezug auf nicht optimale logische Partitionszuordnungen erfordern. In einigen Fällen ist eine nicht optimale Zuordnung möglicherweise nicht einmal problemlos zu erkennen, was zu einem übermäßigen Energieverbrauch in dem Rechenzentrum und/oder einer geringeren Leistung führt.
-
Die
US 8 402 259 B2 beschreibt ein Verfahren zum Beschleunigen einer Aufwachzeit eines Systems, welches ein Bereinigen und Bereitstellen einer Mindestspeichermenge zum Zuweisen, eines Ausführen eines Startvorgangs eines auf dem System gespeicherten Betriebssystems sowie das Bereinigen und Bereitstellen einer zusätzlichen Speichermenge zum Zuweisen parallel zum und nach dem Start-Betrieb des Betriebssystems. Das System kann einen oder mehrere Knoten umfassen, wobei jedem der Knoten eine minimale Knotenressourcenkonfiguration zugeordnet ist, die einer minimalen Anzahl von Prozessoren entspricht, die in einem Knoten enthalten sind und aktiviert werden müssen, um den Knoten zu aktivieren. Das System kann ferner eine oder mehrere Partitionen enthalten, wobei jede Partition mindestens einen Knoten umfasst. Jeder Partition kann eine Priorität in Bezug auf andere Partitionen zugewiesen werden, und die Partitionen können basierend auf den zugewiesenen Prioritäten nacheinander aktiviert werden.
-
Die
US 8 745 237 B2 beschreibt ein Verfahren und ein System zum Verwalten mehrerer Warteschlangen eines Netzwerkgeräts, welches einer Hostmaschine in einem virtuellen Maschinensystem zugeordnet ist. Das Netzwerkgerät enthält mehrere dedizierte Warteschlangen und gemeinsam genutzte Warteschlangen, die von mehreren Gästen des virtuellen Maschinensystems für eine Übertragung und/oder einen Empfang von Paketen in einer Datenkommunikation verwendet werden. Ein Hypervisor des virtuellen Maschinensystems verwaltet die Zuordnung der mehreren Warteschlangen zu den mehreren Gästen durch dynamisches Abbilden von Adressen der virtuellen Maschinen auf der Grundlage der Ermittlung einer Belastung der Warteschlangen.
-
Die
US 2010 / 0 070 784 A1 beschreibt ein Verfahren zum Reduzieren eines Energieverbrauchs eines Serverclusters von Hostsystemen mit virtuellen Maschinen, die auf den Hostsystemen ausgeführt werden. Das Verfahren umfasst ein Empfehlen, ein Hostsystem einzuschalten, wenn ein Hostsystem vorhanden ist, dessen Auslastung über einer Zielauslastung liegt, und ein Empfehlen, ein Hostsystem auszuschalten, wenn ein Hostsystem vorhanden ist, dessen Auslastung unter der Zielauslastung liegt. Das Empfehlen zum Einschalten des Hostsystems umfasst ein Berechnen einer Auswirkung des Einschaltens auf ein Standby-Hostsystem im Hinblick auf die Reduzierung der Anzahl stark ausgelasteter Hostsysteme im Servercluster. Die Auswirkung des Einschaltens wird berechnet, indem ein Verschieben von virtuellen Maschinen von stark ausgelasteten Hostsystemen auf das Standby-Hostsystem simuliert wird, dessen Einschalten empfohlen wird. Das Empfehlen zum Ausschalten des Hostsystems umfasst ein Berechnen einer Auswirkung des Ausschaltens eines Hostsystems im Hinblick auf die Verringerung der Anzahl weniger ausgelasteten Hostsysteme im Servercluster. Die Auswirkung des Ausschaltens wird berechnet, indem ein Verschieben aller virtuellen Maschinen vom Hostsystem, dessen Ausschalten empfohlen wird, auf weniger ausgelastete Hostsysteme simuliert wird.
-
Die
US 2014 / 0 007 124 A1 beschreibt automatisierte Techniken, welche sicherstellen, dass die Leistung einer zentralen Verarbeitungseinheit („CPU“) zu keinem Engpass führt, wenn logische Partitionen von einem System auf ein anderes System oder andere Systeme migriert werden. Die CPU-Ressourcen, die erforderlich sind, um die verfügbare Bandbreite während der Migration vollständig auszunutzen, werden berechnet. Die CPU-Ressourcen des Systems werden dann für die Migration angepasst, was ein Verringern von CPU-Ressourcen, die für die ausgeführten Partitionen garantiert sind, und/oder ein Anpassen von relativen Partitionsvariablengewichte umfassen kann, um die Menge an überschüssiger Kapazität zu begrenzen, die einer Partition zugewiesen werden kann.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Der Erfindung liegt die Aufgabe zugrunde, ein verbessertes Verfahren zum Verwalten von Energieverbrauch in einer logisch partitionierten Datenverarbeitungsumgebung mit einer Sammlung von Prozessorknoten, die in einem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet sind, bereitzustellen.
-
Die der Erfindung zugrunde liegende Aufgabe wird jeweils mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
-
Das Verfahren nach Anspruch 1 und das entsprechende System und Computerprogramm wie beansprucht verwenden eine ereignisgesteuerte Reoptimierung zum Neuzuordnen von einer oder mehreren logischen Partitionen in einem Pool von logisch partitionierten Datenverarbeitungssystemen in Reaktion auf ein Erkennen eines Systemereignisses verwenden, das die kollektiven Ressourcenanforderungen von logischen Partitionen wahrscheinlich erhöht oder verringert, die sich in einer logisch partitionierten Datenverarbeitungsumgebung befinden. In einigen Beispielen kann die Reoptimierung beispielsweise zum Konsolidieren von logischen Partitionen auf weniger Prozessorknoten verwendet werden, um das Potenzial für ein Herunterfahren von Hardware-Ressourcen zu verbessern und damit den Energieverbrauch zu verringern.
-
Daher kann der Energieverbrauch konsistent mit einem Aspekt der Erfindung in einer logisch partitionierten Datenverarbeitungsumgebung mit einer Sammlung von Prozessorknoten verwaltet werden, die in einem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet sind. Der Energieverbrauch kann durch Zuordnen einer Mehrzahl von logischen Partitionen zu dem Pool von logisch partitionierten Datenverarbeitungssystemen verwaltet werden, um den Energieverbrauch in der logisch partitionierten Datenverarbeitungsumgebung zu optimieren, nachdem die Mehrzahl von logischen Partitionen zugeordnet wurde, der Pool von logisch partitionierten Datenverarbeitungssystemen autonom auf Systemereignisse überwacht wurde, die Ressourcenanforderungen von logischen Partitionen ändern, die dem Pool von logisch partitionierten Datenverarbeitungssystemen zugeordnet sind, wobei ein erstes Systemereignis erkannt wird, das die Ressourcenanforderungen von logischen Partitionen, die dem Pool von logisch partitionierten Datenverarbeitungssystemen zugeordnet sind, auf Grundlage des Überwachens des Pools von logisch partitionierten Datenverarbeitungssystemen ändert, und in Reaktion auf das Erkennen des ersten Systemereignisses den Energieverbrauch in der logisch partitionierten Datenverarbeitungsumgebung durch ein dynamisches Neuzuordnen von mindestens einer Untergruppe der Mehrzahl von logischen Partitionen zu der Sammlung von Prozessorknoten reoptimiert und einen Energiezustand von mindestens einem der Prozessorknoten in der Sammlung von Prozessorknoten, die in dem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet sind, dynamisch modifiziert.
-
Diese und weitere Vorteile und Funktionen, die die Erfindung kennzeichnen, werden in den Ansprüchen im Anhang hierzu erläutert und bilden einen weiteren Bestandteil. Für ein besseres Verständnis der Erfindung und der Vorteile und Ziele, die durch ihre Verwendung erreicht werden, sollte auf die Zeichnungen und die begleitende Beschreibung Bezug genommen werden, in der beispielhafte Ausführungsformen der Erfindung beschrieben werden.
-
Figurenliste
-
- 1A und 1B sind Blockschaubilder einer beispielhaften Hardware- (1A) und Software- (1B) Umgebung, die zum Umsetzen einer mit der Erfindung konsistenten logisch partitionierten Datenverarbeitungsumgebung geeignet ist.
- 2 ist ein Blockschaubild eines Modells, das zum Ausführen einer ereignisgesteuerten Reoptimierung in einer mit der Erfindung konsistenten Ausführung verwendet wird.
- 3A bis 3B zeigen einen Ablaufplan, der eine beispielhafte Reoptimierungsroutine veranschaulicht, die durch die Orchestrator-Komponente von 1A ausgeführt werden kann, um den Energieverbrauch durch eine logisch partitionierte Datenverarbeitungsumgebung in Reaktion auf ein Systemereignis zur Verringerung von benutzungsberechtigter Kapazität zu reoptimieren.
- 4A bis 4D zeigen einen Ablaufplan, der eine beispielhafte Reoptimierungsroutine veranschaulicht, die durch die Orchestrator-Komponente von 1A ausgeführt werden kann, um den Energieverbrauch durch eine logisch partitionierte Datenverarbeitungsumgebung in Reaktion auf ein Systemereignis zur Erhöhung von benutzungsberechtigter Kapazität zu reoptimieren.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Mit der Erfindung konsistente Ausführungsformen verwenden eine ereignisgesteuerte Reoptimierung zum Neuzuordnen von einer oder mehreren logischen Partitionen in einem Pool von logisch partitionierten Datenverarbeitungssystemen in einer logisch partitionierten Datenverarbeitungsumgebung in Reaktion auf ein Erkennen eines Systemereignisses, das die kollektiven Ressourcenanforderungen von logischen Partitionen wahrscheinlich erhöht oder verringert, die sich in einer logisch partitionierten Datenverarbeitungsumgebung befinden. In einigen Fällen kann die Reoptimierung beispielsweise zum Konsolidieren von logischen Partitionen auf weniger Prozessorknoten verwendet werden, um das Potenzial zum Herunterfahren von Hardware-Ressourcen zu verbessern und damit den Energieverbrauch zu verringern.
-
Eine logisch partitionierte Datenverarbeitungsumgebung kann in diesem Zusammenhang so betrachtet werden, dass sie ein oder mehrere Datenverarbeitungssysteme enthält, die logisches Partitionieren (oder Virtualisierung) unterstützen, wobei mindestens einige der Datenverarbeitungssysteme eine Mehrzahl von Prozessorknoten enthalten, die Hardware-Ressourcen darstellen, die fähig sind, eine oder mehrere logische Partitionen zu hosten. Eine mit der Erfindung konsistente logisch partitionierte Datenverarbeitungsumgebung unterstützt im Allgemeinen das Konzept einer Partitionsmobilität (auf die unter anderen Bezeichnungen als Partitionsmobilität verwiesen werden kann), wobei eine logische Partition, die auf einem logisch partitionierten Datenverarbeitungssystem gehostet wird, während der Laufzeit auf ein anderes logisch partitioniertes Datenverarbeitungssystem verschoben werden kann, in einigen Fällen mit wenig oder keiner Betriebsunterbrechung.
-
Ein Prozessorknoten kann in diesem Zusammenhang so betrachtet werden, dass er eine beliebige Untergruppe der verfügbaren Hardware-Ressourcen in einem Datenverarbeitungssystem enthält und im Allgemeinen, aber nicht notwendigerweise, einen oder mehrere Prozessoren, eine oder mehrere Arbeitsspeichereinheiten und in einigen Fällen zusätzliche Hardware-Ressourcen, wie beispielsweise Eingabe/Ausgabe- (E/A) Ressourcen, Netzwerkressourcen oder andere Typen von Ressourcen enthält, die einer logischen Partition zugeordnet werden können. Prozessorknoten können in einigen Ausführungsformen als Multichip-Module, Schaltungsplatinen oder -karten, Bücher, Einschübe, Rahmen, Steckplätze, Gehäuse oder sogar Kombinationen davon umgesetzt werden. Prozessorknoten können in einigen Ausführungsformen auch eigenständige Computersysteme sein. In Ausführungsformen, in denen eine ereignisgesteuerte Reoptimierung zum Optimieren des Energieverbrauchs verwendet wird, können Prozessorknoten auch auf Grundlage von Gruppierungen von Hardware-Ressourcen definiert werden, die separat hochgefahren, abgeschaltet oder anderweitig gesteuert werden können, um den Energieverbrauch zu erhöhen oder zu verringern. Somit enthält ein Prozessorkern aus der Perspektive der hierin beschriebenen Ausführungsformen mindestens eine Sammlung von Prozessoren und Arbeitsspeicher, die getrennt von anderen Prozessorknoten heruntergefahren oder komplett abgeschaltet werden können.
-
In einigen Ausführungsformen der Erfindung kann der Energieverbrauch in einer logisch partitionierten Datenverarbeitungsumgebung mit einer Sammlung von Prozessorknoten verwaltet werden, die in einem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet sind. Der Energieverbrauch kann durch Zuordnen einer Mehrzahl von logischen Partitionen zu dem Pool von logisch partitionierten Datenverarbeitungssystemen verwaltet werden, um den Energieverbrauch in der logisch partitionierten Datenverarbeitungsumgebung zu optimieren, nachdem die Mehrzahl von logischen Partitionen zugeordnet wurde, der Pool von logisch partitionierten Datenverarbeitungssystemen autonom auf Systemereignisse überwacht wurde, die Ressourcenanforderungen von logischen Partitionen ändern, die dem Pool von logisch partitionierten Datenverarbeitungssystemen zugeordnet sind, wobei ein erstes Systemereignis erkannt wird, das die Ressourcenanforderungen von logischen Partitionen, die dem Pool von logisch partitionierten Datenverarbeitungssystemen zugeordnet sind, auf Grundlage des Überwachens des Pools von logisch partitionierten Datenverarbeitungssystemen ändert, und in Reaktion auf das Erkennen des ersten Systemereignisses den Energieverbrauch in der logisch partitionierten Datenverarbeitungsumgebung durch ein dynamisches Neuzuordnen von mindestens einer Untergruppe der Mehrzahl von logischen Partitionen zu der Sammlung von Prozessorknoten reoptimiert und einen Energiezustand von mindestens einem der Prozessorknoten in der Sammlung von Prozessorknoten, die in dem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet sind, dynamisch modifiziert.
-
In einigen Ausführungsformen enthält die Sammlung von Prozessorknoten einen ersten Prozessorknoten, der in einem ersten logisch partitionierten Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet ist, wobei das erste Systemereignis Ressourcenanforderungen verringert und ein Reoptimieren des Energieverbrauchs in der logisch partitionierten Datenverarbeitungsumgebung ein Herunterfahren des Energiezustands des ersten Prozessorknotens in der Sammlung von Prozessorknoten enthält und ein Verschieben von mindestens einer logischen Partition, die vorher dem ersten Prozessorknoten zugeordnet war, zu einem oder mehreren verschiedenen Prozessorknoten in dem ersten logisch partitionierten Datenverarbeitungssystem oder einem anderen logisch partitionierten Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen. In einigen Ausführungsformen ist das erste Systemereignis ein Ereignis zum Abschalten einer logischen Partition, ein Ereignis zum Aussetzen einer Hibernation einer logischen Partition, ein Ereignis zur Migration einer aktiven logischen Partition aus dem Pool, ein Ereignis zum dynamischen Entfernen von Prozessorkapazität aus einer logischen Partition oder ein Ereignis zum dynamischen Entfernen von Arbeitsspeicherkapazität aus einer logischen Partition.
-
In einigen Ausführungsformen enthält die Sammlung von Prozessorknoten einen ersten Prozessorknoten, der in einem ersten logisch partitionierten Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen angeordnet ist, wobei das erste Systemereignis Ressourcenanforderungen erhöht, und ein Reoptimieren des Energieverbrauchs in der logisch partitionierten Datenverarbeitungsumgebung ein Erhöhen des Energiezustands des ersten Prozessorknotens und ein Verwenden der Kapazität enthält, die durch das Erhöhen des Energieniveaus des Prozessorknotens erhalten wurde, um höheren Ressourcenanforderungen zu begegnen. In einigen Ausführungsformen ist das erste Systemereignis ein Ereignis zum Hochfahren einer logischen Partition, ein Ereignis zum Wiederaufnehmen einer Hibernation einer logischen Partition, ein Ereignis zur Migration einer aktiven logischen Partition in den Pool, ein Ereignis zum dynamischen Hinzufügen von Prozessorkapazität zu einer logischen Partition oder ein Ereignis zum dynamischen Hinzufügen von Arbeitsspeicherkapazität zu einer logischen Partition.
-
In einigen Ausführungsformen enthält ein erstes logisch partitioniertes Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen erste und zweite Prozessorknoten aus der Sammlung von Prozessorknoten, und ein dynamisches Modifizieren des Energiezustands von mindestens einem der Prozessorknoten in der Sammlung von Prozessorknoten enthält ein Herunterfahren oder Hochfahren des ersten Prozessorknotens, wobei der Energiezustand des zweiten Prozessorknotens beibehalten wird. In einigen Ausführungsformen enthält ein erstes logisch partitioniertes Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen mehrere Prozessorknoten aus der Sammlung von Prozessorknoten, ein zweites logisch partitioniertes Datenverarbeitungssystem in dem Pool von logisch partitionierten Datenverarbeitungssystemen enthält einen einzelnen Prozessorknoten aus der Sammlung von Prozessorknoten, und ein dynamisches Modifizieren des Energiezustands von mindestens einem der Prozessorknoten in der Sammlung von Prozessorknoten enthält ein Herunterfahren oder Hochfahren des zweiten logisch partitionierten Datenverarbeitungssystems, wobei ein Energiezustand von jedem der mehreren Prozessorknoten in dem ersten logisch partitionierten Datenverarbeitungssystem beibehalten wird.
-
Zahlreiche Variationen und Modifizierungen sind für einen Fachmann offenkundig, wie aus der folgenden Beschreibung ersichtlich wird. Die Erfindung ist daher nicht auf die hierin erläuterten spezifischen Umsetzungen beschränkt.
-
HARDWARE- UND SOFTWARE-UMGEBUNG
-
Unter Bezugnahme auf die Zeichnungen, in denen gleiche Teile in mehreren Ansichten mit gleichen Bezugszeichen angegeben werden, veranschaulichen 1A bis 1B die wichtigsten Hardware- und Software-Komponenten in einer mit der Erfindung konsistenten logisch partitionierten Datenverarbeitungsumgebung oder Vorrichtung 10. Wie in 1A gezeigt, kann die Vorrichtung 10 als Mehrknotensystem konfiguriert sein, in dem die physische Hardware auf einer Mehrzahl von physischen Prozessorknoten 14 verteilt ist, die in einer Mehrzahl von Computer- oder Datenverarbeitungssystemen 16 angeordnet sind, wobei die Datenverarbeitungssysteme 16 in einem oder mehreren Pools 18 angeordnet sind. Jeder Prozessorknoten 14 enthält einen oder mehrere Prozessoren 20, eine oder mehrere Arbeitsspeichereinheiten 22 und in einigen Ausführungsformen zusätzliche Hardware wie beispielsweise Eingabe/Ausgabe- (E/A) Hardware 24 (z.B. einen oder mehrere Eingabe/Ausgabe- (E/A) Adapter) und/oder Netzwerk-Hardware. Eine entsprechende Netzwerkfunktionalität (nicht gezeigt) kann ebenfalls verwendet werden, um einen Datenaustausch zwischen den verschiedenen Prozessorknoten 14 und Systemen 16 sowie anderen externen Systemen bereitzustellen.
-
Die Vorrichtung 10 kann unter Verwendung einer Anzahl verschiedener Architekturen umgesetzt werden, die für eine Umsetzung einer logisch partitionierten Umgebung geeignet sind. Zum Beispiel kann in einer Ausführungsform die Vorrichtung 10 als ein Power-System 770, 780 oder 795 von International Business Machines Corporation umgesetzt werden, dessen Konfiguration für einen Fachmann offenkundig ist, der die aktuellen Offenbarung nutzen kann. Es sollte jedoch klar sein, dass andere Architekturen, die zum Ausführen von logisch partitionierten Umgebungen geeignet sind, in anderen Ausführungsformen der Erfindung verwendet werden können, sodass die Erfindung nicht auf die besondere, hierin offenbarte Architektur beschränkt ist.
-
Jeder Prozessor 20 kann als Einzel- oder Multithread-Prozessor und/oder als Einzel- oder Mehrkernprozessor umgesetzt werden, wobei jeder Arbeitsspeicher 22 so betrachtet werden kann, dass er eine oder mehrere Ebenen von Arbeitsspeichereinheiten enthält, z.B. einen Hauptspeicher auf DRAM-Grundlage, sowie eine oder mehrere Ebenen von Daten, Anweisungen und/oder Kombinations-Cachespeichern, wobei bestimmte Cachespeicher entweder einzelne Prozessoren oder mehrere Prozessoren bedienen, wie nach dem Stand der Technik bekannt.
-
Außerdem kann der Arbeitsspeicher der Vorrichtung 10 so betrachtet werden, dass er einen physisch an anderer Stelle in der Vorrichtung 10 befindlichen Arbeitsspeicher enthält, z.B. jeden Cache-Speicher in einem Prozessor sowie jede Speicherkapazität, die als virtueller Arbeitsspeicher verwendet wird, z.B. wie bei Speicherung auf einer Massenspeichereinheit oder auf einem anderen Computer, der mit der Vorrichtung 10 verbunden ist.
-
Die Vorrichtung 10 arbeitet unter der Steuerung von einem oder mehreren Kerneln, Hypervisoren, Betriebssystemen usw. und führt verschiedene Computersoftware-Anwendungen aus bzw. baut anderweitig auf verschiedenen Computersoftware-Anwendungen, Komponenten, Programmen, Objekten, Modulen, Datenstrukturen usw. auf, wie im Folgenden ausführlicher beschrieben wird. Des Weiteren können verschiedene Anwendungen, Komponenten, Programme, Objekte, Module usw. auch auf einem oder mehreren Prozessoren in einem anderen Computer ausgeführt werden, der mit der Vorrichtung 10 über ein Netzwerk verbunden ist, z.B. in einer verteilten oder Client-Server-Datenverarbeitungsumgebung, wodurch die zum Umsetzen der Funktionen eines Computerprogramms erforderliche Verarbeitung mehreren Computern über ein Netzwerk zugeordnet werden kann.
-
Zum Beispiel veranschaulicht 1B verschiedene Software-Komponenten 28 bis 42, die sich in einem System 16 in der Vorrichtung 10 befinden können. Ein Hypervisor 28 kann eine oder mehrere logische Partitionen (LPARs) 30 hosten und jeder logischen Partition 30 einen Teil der physischen Hardware-Ressourcen des Systems 16 zuordnen (z.B. Prozessor, Arbeitsspeicher und/oder E/A-Ressourcen, die einem oder mehreren Prozessorknoten 14 zugehörig sind), hier durch einen oder mehrere virtuelle Prozessoren (VPs) 32, einen virtuellen Arbeitsspeicher 34 und virtuelle Eingabe/Ausgabe- (VEA) Ressourcen 36 dargestellt. Jede logische Partition 30 kann wiederum ein Betriebssystem 38 und optional Middleware 40 sowie einen oder mehrere Jobs und/oder Anwendungen 42 hosten. Es sollte klar sein, dass jede logische Partition 30, die auch als virtuelle Maschine oder virtueller Computer bezeichnet werden kann, auf eine Weise arbeiten kann, die einen separaten physischen Computer emuliert und daher praktisch alle Software-Komponenten hosten kann, die geeignet, sind, von einem Computer gehostet zu werden.
-
Weitere Hardware- und/oder Software-Komponenten können sich ebenfalls in der Vorrichtung 10 befinden, z.B. Massenspeicher-Hardware, externe Eingabe/Ausgabe-Einheiten wie Drucker oder Bildschirme und Verwaltungs-Hardware und/oder - Software, z.B. eine Hardware-Verwaltungskonsole (HMC), über die die Hardware- und/oder Software-Konfiguration der Vorrichtung durch einen Administrator verwaltet werden kann. Logisch partitionierte Umgebungen können in zahlloser Art und Weise umgesetzt werden und können zahllose Hardware- und/oder Software-Variationen enthalten, und daher ist die Erfindung nicht auf die besondere hierin offenbarte Umsetzung beschränkt.
-
Es sollte klar sein, dass die vorliegende Erfindung ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein kann. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen oder mehrere Prozessoren zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
-
Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur- (Instruction Set Architecture) (ISA) Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder entweder Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Java, Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, einschließlich zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können.
-
Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen /Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Die Ablaufpläne und Blockschaubilder in den Zeichnungen veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
-
Außerdem können computerlesbare Programmanweisungen, von denen eine oder mehrere kollektiv hierin als „Programmcode“ bezeichnet werden können, hierin auf Grundlage der Anwendung identifiziert werden, in der solche Anweisungen in einer spezifischen Ausführungsform der Erfindung umgesetzt werden. Er sollte jedoch klar sein, dass jede nachstehende spezielle Programm-Nomenklatur nur aus praktischen Gründen verwendet wird, und die Erfindung somit nicht darauf beschränkt sein soll, allein in einer bestimmten Anwendung verwendet zu werden, die durch derartige Nomenklatur identifiziert und/oder impliziert wird. Ferner sollte in Anbetracht der typischerweise endlosen Anzahl von Möglichkeiten klar sein, in denen Computerprogramme in Routinen, Prozeduren, Verfahren, Modulen, Objekten und dergleichen organisiert werden können, sowie hinsichtlich der verschiedenen Möglichkeiten, in denen Programmfunktionalität verschiedenen Software-Schichten zugeordnet werden kann, die sich in einem typischen Computer befinden (z.B. Betriebssysteme, Bibliotheken, APIs, Anwendungen, Applets usw.), dass die Erfindung nicht auf die hierin beschriebene spezielle Organisation und Zuordnung von Programmfunktionalität beschränkt ist.
-
Der Fachmann wird erkennen, dass die in 1A bis 1B veranschaulichte Beispielumgebung nicht dazu gedacht ist, die vorliegende Erfindung einzuschränken. Tatsächlich wird der Fachmann erkennen, dass weitere alternative Hardware- und/oder Software-Umgebungen verwendet werden können, ohne von dem Schutzumfang der Erfindung abzuweichen.
-
EREIGNISGESTEUERTE REOPTIMIERUNG EINER LOGISCH PARTITIONIERTEN UMGEBUNG ZUR ENERGIEVERWALTUNG
-
Energieverwaltung im Rechenzentrum ist in den letzten Jahren immer wichtiger geworden, wie an den Energy Star-Richtlinien und dem Konzept von ‚grünen‘ Computersystemen und Rechenzentren deutlich sichtbar wird. Energiekosten und Umweltaspekte sind wichtige Themen für Unternehmen mit großen Rechenzentren. Somit können Computer- und Software-Hersteller, die energieeffiziente Systeme und Lösungen produzieren, sich auf dem Markt einen deutlichen Vorteil verschaffen.
-
Techniken zur Energieverwaltung sind herkömmlicherweise mit der Überwachung von Arbeitslasten und Umweltfaktoren und dem Verschieben von Arbeitslasten zwischen Datenverarbeitungsressourcen in einem System oder einem Pool von Systemen auf eine Weise verbunden, mit der sich ein Vorteil in Bezug auf den Energieverbrauch erzielen lässt. Dieser Vorteil kann durch Herunterfahren (entweder durch Einstellen eines geringeren Energiezustands oder komplettes Abschalten) eines Systems oder einer Komponente in einem System oder durch Vermeiden von Leistungsengpässen in dem Rechenzentrum oder durch Vermeiden von Bereichen oder Zeiten mit hohen Energiekosten erlangt werden. Die verlagerten Arbeitslasten sind typischerweise entweder Zuteilungseinheiten, wenn Arbeitslast zwischen Prozessorkernen verschoben wird, um eine Umsetzung durch Prozessor und Arbeitsspeicher zu erleichtern, oder Anwendungen/Jobs, wenn Arbeitslast zwischen Systemen in einem Rechenzentrum verschoben wird.
-
Mit der Erfindung konsistente Ausführungsformen begünstigen die Energieverwaltung, z.B. in einem Rechenzentrum, durch Verwendung eines Gerüsts zum dynamischen Platzieren von logischen Partitionen über ein einzelnes modulares Systems oder einen Pool von Systemen auf eine Weise, mit der das Potenzial zur Energieeinsparung durch Partitionskonsolidierung und Abschalten von Systemen in dem Pool oder von Komponenten von Systemen in dem Pool, die nicht verwendet werden, optimiert wird. Die logischen Partitionen können auf Grundlage von Systemereignissen dynamisch verschoben werden, die entweder Verarbeitungskapazität freigeben, wodurch mehre Hardware-Ressourcen heruntergefahren werden können, oder den Bedarf von Verarbeitungskapazität erhöhen, wodurch ein potenzielles Hochfahren von Hardware-Ressourcen erforderlich wird.
-
In den veranschaulichten Ausführungsformen kann eine dynamische und autonome Überwachung von Systemereignissen zum Erkennen von Systemereignissen verwendet werden, die die benutzungsberechtigte Verarbeitungskapazität der logischen Partitionen erhöhen oder verringern, die in einem Pool von Systemen ausgeführt werden. In Reaktion auf derartige Systemereignisse kann die Platzierung von logischen Partitionen anschließend zum Konsolidieren in dem Pool von Systemen angepasst und das Potenzial zum Herunterfahren von Hardware-Ressourcen optimiert werden. In einigen Ausführungsformen kann die benutzungsberechtigte Verarbeitungs- und/oder Arbeitsspeicherkapazität der logischen Partitionen, die in einem Pool von Systemen ausgeführt werden, als die Ressourcenanforderungen der logischen Partitionen bezeichnet werden. Daher kann ein Systemereignis, das eine benutzungsberechtigte Kapazität erhöht, so betrachtet werden, dass sie Ressourcenanforderungen von logischen Partitionen erhöht, die in einem Pool ausgeführt werden, während ein Systemereignis, das eine benutzungsberechtigte Kapazität verringert, so betrachtet werden kann, dass sie Ressourcenanforderungen von logischen Partitionen verringert, die in einem Pool ausgeführt werden
-
Ein Vorteil eines derartigen Ansatzes gegenüber einem Verschieben von Arbeitslast auf Zuteilungsebene besteht darin, dass das Potenzial für Energieeinsparungen im Allgemeinen größer sein kann. Die Prozessorumsetzung kann ermöglichen, dass einzelne Prozessorkerne und Chips, und in einigen Fällen der dazugehörige Arbeitsspeicher, auf einen niedrigeren Energiezustand gesetzt werden, was in einigen Fällen dazu führen kann, dass auch die Geschwindigkeit des Systemlüfters herabgesetzt wird. Bei einem Ansatz zur Prozessorumsetzung verhindern die Anforderungen an die Latenz beim Hochfahren jedoch im Allgemeinen, dass Ressourcen komplett abgeschaltet werden. Ein Ansatz auf Grundlage einer logischen Partition, wie hierin beschrieben, ermöglicht jedoch eine Prozessorumsetzung sowie eine komplette Abschaltung von Systemen in einem Pool oder ein teilweises Herunterfahren von Systemen, die separat mit Energie versorgbare Prozessor- und Arbeitsspeicherbereiche enthalten (d.h. Prozessorknoten), wie beispielsweise Prozessorbücher oder Prozessoreinschübe. Bei einem Ansatz auf Grundlage einer logischen Partition, wie hierin beschrieben, besteht auch die Möglichkeit, die benutzungsberechtigte Kapazität nicht aufzugeben, und daher können die Anforderungen an die Latenz beim Hochfahren im Allgemeinen weniger strikt sein und ein tieferes Herunterfahren ist im Allgemeinen möglich.
-
Ein Vorteil eines derartigen Ansatzes gegenüber einem Verschieben der Arbeitslast auf Anwendungs-/Job-Ebene besteht darin, dass die Anwendung im Allgemeinen Komplexität von Betriebssystem und Anwendung vermeidet, die durch Clusterbildung und Hochverfügbarkeits- (HV) Konfigurationen gesteuert wird, die bei einer Verschiebung auf Anwendungs-/Job-Ebene im Allgemeinen erforderlich wird. Der hierin beschriebene Ansatz kann Fähigkeiten der logischen Partitionsmobilität (LPM) unterstützten, die bereits für andere Zwecke eingesetzt werden, wie beispielsweise Hardware- und/oder Software-Wartung. Eine Erweiterung der logischen Partitionsmobilität auf Energieverwaltung als solches benötigt daher in einigen Fällen keine zusätzliche Investition in Clusterbildung oder HV-Fähigkeiten.
-
Der hierin beschriebene Ansatz kann sich auch in modularen Systemen der Unternehmensklasse vorteilhaft erweisen, wie beispielsweise bei den vorgenannten Power-Systemen 770, 780 und 795, die mehrere Knoten enthalten (z.B. Prozessorbücher für die Power-Systeme 795, oder CEC-Einschübe für die Power 770 und Power 780-Systeme), die jeweils unabhängig vom Rest abgeschaltet und hochgefahren werden können. Die Energieverwaltung auf Knotenebene ist im Allgemeinen für Systeme der Unternehmensklasse aufgrund der großen Anzahl von logischen Partitionen, die sie unterstützen können, und der Schwierigkeit wichtig, die durch die Suche nach genügend nicht genutzter Kapazität an anderer Stelle in dem Pool entsteht, um alle Partitionen im System in andere Systeme auszulagern, damit das System heruntergefahren werden kann. Die hierin beschriebenen Algorithmen zur System- und Kapazitätsmodellierung sowie logischen Partitionsplatzierung können daher ein Hoch-/Herunterfahren ganzer Systeme sowie von einzelnen Knoten unterstützen, wie sie in derartigen modularen Systemen verwendet werden, wogegen andere Ansätze im Allgemeinen auf ein Herunter-/Hochfahren auf Systemebene beschränkt sind.
-
In einer Ausführungsform der Erfindung kann zum Beispiel eine ereignisgesteuerte Reoptimierung für einen Pool von Computersystemen ausgeführt werden, zwischen denen logische Partitionen verschoben werden können, um ausreichende Kapazität auf einem oder mehreren der Computersysteme in dem Pool freizugeben, damit entweder einer oder mehrere Knoten in einem Mehrknoten-Computersystem oder ein ganzes Computersystem heruntergefahren werden können, z.B. in einen niedrigeren Energiezustand überführt werden können. Für die Zwecke dieser Ausführungsform wird die Gruppe bzw. der Pool von Computersystemen als Energieverwaltungs-Pool bezeichnet.
-
Ebenfalls in dieser Ausführungsform können die Computersysteme in dem Energieverwaltungs-Pool als Systeme der Unternehmensklasse mit mehreren Prozessorknoten, die einzeln hoch- und heruntergefahren werden können (z.B. die vorgenannten Power-Systeme 770, 780 und 795) und/oder Low-End-Systeme umgesetzt werden, die nicht mehrere, separat mit Energie versorgbare Prozessorknoten haben.
-
Zum Beispiel veranschaulicht 1A mehrere Pools 18, wobei jeder Pool 18 in mancher Beziehung als Energieverwaltungs-Pool betrachtet werden kann, der ein oder mehrere Computersysteme 16 enthält, die jeweils einen oder mehrere Prozessorknoten 14 enthalten. Für die Zwecke dieser Ausführungsform kann jeder Prozessorknoten 14 separat mit Energie versorgbar sein, obwohl die Erfindung in anderen Ausführungsformen nicht so eingeschränkt ist.
-
Zum Umsetzen einer ereignisgesteuerten Reoptimierung kann eine Orchestrator-Komponente 44, die z.B. auf einer Systemverwaltungseinrichtung 46 ausgeführt wird, in einigen Ausführungsformen verwendet werden. In einer Ausführungsform kann die Orchestrator-Komponente zum Beispiel ein Energieverwaltungs-Dienstprogramm enthalten, das in Verbindung mit einem Partitionsplatzierungs-Dienstprogramm arbeitet. Eine geeignete Umsetzung verwendet zum Beispiel eine Systems Director-Verwaltungseinrichtung, die ein Dienstprogramm „Active Energy Manager“ zur Energieverwaltung und ein Dienstprogramm „VMControl“ zur Partitionsplatzierung ausführt (alle von International Business Machines Corporation erhältlich), um die Funktionalität der Orchestrator-Komponente umzusetzen. Es sollte klar sein, dass eine Systemverwaltungseinrichtung einen oder mehrere Prozessoren, einen Arbeitsspeicher und andere Computerkomponenten enthalten kann, um Programmcode auszuführen, der hierin beschriebene Funktionalität umsetzt, und dass in einigen Ausführungsformen auf weiteren Programmcode und/oder Hardware-Komponenten, die sich in dem Datenverarbeitungssystem 10 befinden, durch eine Systemverwaltungseinrichtung in Verbindung mit der hierin beschriebenen ereignisgesteuerten Reoptimierung zugegriffen werden kann. Ferner kann sich in einigen Ausführungsformen die Funktionalität einer Orchestrator-Komponente vollständig in einem oder mehreren Systemen 16 der Vorrichtung 10 befinden, z.B. in einer logischen Partition, in einem Hypervisor, in Middleware, in einem Betriebssystem, in System-Firmware, in einer Hardware-Verwaltungskonsole usw. Es sollte daher klar sein, dass die Erfindung nicht auf die spezielle Umsetzung einer ereignisgesteuerten Reoptimierung vorwiegend in einer Systemverwaltungseinrichtung beschränkt ist, wie im Folgenden für die veranschaulichte Ausführungsform beschrieben.
-
Die Systemverwaltungseinrichtung 46 in der veranschaulichten Ausführungsform überwacht autonom auf Systemereignisse, die Systemen 16 in einem Energieverwaltungs-Pool 18 zugehörig sind, die eine benutzungsberechtigte Kapazität der logischen Partitionen ändern können. Diesbezüglich kann das autonome Überwachen als ein Überwachen außerhalb der Leitung eines Administrator betrachtet werden (obwohl ein Aktivieren und Deaktivieren der Überwachung in einigen Ausführungsformen unterstützt werden kann). Die Systemverwaltungseinrichtung 46 verschiebt außerdem logische Partitionen dynamisch von einem System 16 in ein oder mehrere andere Systeme 16 in dem Bemühen, logische Partitionen in einer energieoptimierten Weise so anzuordnen, dass die Verwendung von einem oder mehreren Systemen 16 ausreichend verringert wird, um einen oder mehrere Prozessorknoten oder ganze Systeme herunterzufahren. Wenn ein Prozessorknoten heruntergefahren wird, kann der Hypervisor 28 auf dem Host-System 16 alle logischen Partitionen 30 auslagern, die auf diesem Prozessorknoten ausgeführt werden, um Kapazität in anderen Prozessorknoten 14 auf demselben System 16 verfügbar zu machen. Ferner kann die Systemverwaltungseinrichtung 46 Ereignisse überwachen, die erfordern, dass Kapazität wieder hochgefahren wird, und fährt solche Kapazität im Bedarfsfall wieder hoch. Es sollte klar sein, dass eine Systemverwaltungseinrichtung in anderen Ausführungsformen fähig sein kann, die Platzierung von logischen Partitionen auf Prozessorknoten direkt zu verwalten.
-
2 veranschaulicht als Nächstes ein Beispiel-Datenmodell 50 eines Energieverwaltungs-Pools 52, Systeme 54, Knoten 56 und logische Partitionen (LPARs) 58 zur Verwendung in einer Ausführungsform der Erfindung, die zeigt, dass der Pool 52 ein oder mehrere Systeme 54 enthalten kann und jedes System 54 einen oder mehrere Prozessorknoten 56 enthalten kann und ihm eine oder mehrere LPARs 58 zu einem bestimmten Zeitpunkt zugeordnet sein können. Das Modell 50 kann zum Beispiel von einem Orchestrator und/oder einer Systemverwaltungseinrichtung verwendet werden, um eine ereignisgesteuerte Reoptimierung auf eine Weise auszuführen, die mit der Erfindung konsistent ist.
-
Die Tabellen I bis IV stellen Beispielattribute für jeweils Pool
52, System
54, Knoten
56 und LPAR
58 bereit, die im Modell
50 definiert werden können:
Tabelle I: Pool-Attribute
Attribut | Beschreibung |
numSystems | Anzahl von Systemen |
systemArray | Array von Systemkennungen |
Tabelle II: Systemattribute
Attribut | Beschreibung |
numNodes | Anzahl von Prozessorknoten in dem System |
nodeArray | Array von Knotenkennungen |
numLps | Anzahl von konfigurierten Partitionen in dem System |
partitionArray | Array von Partitionskennungen |
installedProc | Im System installierte gesamte Verarbeitungskapazität |
installedMem | Im System installierte gesamte Arbeitsspeicherkapazität |
activeProc | Gesamte hochgefahrene (aktive) Verarbeitungskapazität im System |
activeMem | Gesamte hochgefahrene (aktive) Arbeitsspeicherkapazität im System |
entitledProc | Gesamte benutzungsberechtigte Verarbeitungskapazität im System (garantiert für aktive Partitionen) |
entitledMem | Gesamte benutzungsberechtigte Arbeitsspeicherkapazität im System (garantiert für aktive Partitionen) |
utilizationLimitProc | Bruchteil einer aktiven Prozessorkapazität, um den entitledProc nicht überschritten werden sollte (z.B. 0,95) |
utilizationLimitMem | Bruchteil einer aktiven Arbeitsspeicherkapazität, um den entitledMem nicht überschritten werden sollte (z.B. 0,95) |
poweredOn | Wahr = System hochgefahren (aktiv); Falsch = System heruntergefahren (inaktiv) |
Tabelle III: Knotenattribute
Attribut | Beschreibung |
installedProc | Im Knoten installierte gesamte Verarbeitungskapazität |
installedMem | Im Knoten installierte gesamte Arbeitsspeicherkapazität |
poweredOn | Wahr = Knoten hochgefahren (aktiv); Falsch = Knoten heruntergefahren (inaktiv) |
powerRating | Numerischer Wert, der relative Energieanforderungen des Knotens darstellt |
Tabelle IV: Partitionsattribute
Attribut | Beschreibung |
entitledProc | Benutzungsberechtigte Verarbeitungskapazität der Partition (garantiert) |
entitledMem | Benutzungsberechtigte Arbeitsspeicherkapazität der Partition (garantiert) |
desiredProc | Verarbeitungskapazität, die die Partition zum Booten benötigt |
desiredMem | Arbeitsspeicherkapazität, die die Partition zum Booten benötigt |
poweredOn | Wahr = Partition hochgefahren (aktiv); Falsch = Partition heruntergefahren (inaktiv) |
-
In der veranschaulichten Ausführungsform können die folgenden Systemereignisse autonom überwacht und von einer Systemverwaltungseinrichtung an eine Orchestrator-Komponente zum Zweck einer Initiierung der Reoptimierung von logischen Partitionen und des Energieverbrauchs in einem Energieverwaltungs-Pool signalisiert werden:
- - logische Partition herunterfahren (*)
- - logische Partition hochfahren
- - Hibernation der logischen Partition aussetzen (*)
- - Hibernation der logischen Partition wieder aufnehmen
- - Migration einer aktiven logischen Partition aus dem Pool (*)
- - Migration einer aktiven logischen Partition in den Pool
- - dynamisches Entfernen von Prozessor (DLPAR) (*)
- - dynamisches Hinzufügen von Prozessor (DLPAR)
- - dynamisches Entfernen von Arbeitsspeicher (DLPAR) (*)
- - dynamisches Hinzufügen von Arbeitsspeicher (DLPAR)
-
Die oben mit (*) gekennzeichneten Ereignisse können als Systemereignisse zur Verringerung von benutzungsberechtigter Kapazität bezeichnet werden, die im Allgemeinen verursachen, dass Prozessor- und/oder Arbeitsspeicherkapazität aufgrund einer Verringerung der benutzungsberechtigten Kapazität einer Partition freigegeben werden, was potenziell eine Konsolidierung von Partitionen und ein Herunterfahren (d.h. eine Deaktivierung) von Prozessorknoten und/oder Systemen ermöglicht. In der veranschaulichten Ausführungsform können diese Systemereignisse zur Verringerung von benutzungsberechtigter Kapazität nach ihrem Auftreten an die Orchestrator-Komponente signalisiert werden. Es sollte klar sein, dass Ereignisse zum dynamischen Entfernen von Prozessor/Arbeitsspeicher aus einer in Betrieb befindlichen logischen Partition Prozessor-/ArbeitsspeicherKapazität entfernen.
-
Die oben nicht mit (*) gekennzeichneten Ereignisse können als Systemereignisse zum Erhöhen von benutzungsberechtigter Kapazität bezeichnet werden, die im Allgemeinen verursachen, dass zusätzliche Prozessor- und/oder Arbeitsspeicherkapazität aufgrund einer Erhöhung der benutzungsberechtigten Kapazität einer Partition verbraucht wird. Wenn Prozessorknoten und/oder Systeme als Energiesparmaßnahme heruntergefahren werden, kann es wünschenswert oder notwendig sein, einige oder alle wieder hochzufahren (Aktivierung), um die Anforderungen von zusätzlicher Prozessor- und/oder Arbeitsspeicherkapazität zu erfüllen. In der veranschaulichten Ausführungsform können diese Systemereignisse zur Erhöhung von benutzungsberechtigter Kapazität im Allgemeinen vor ihrem Auftreten an die Orchestrator-Komponente signalisiert werden. Es sollte klar sein, dass Ereignisse zum dynamischen Hinzufügen von Prozessor/Arbeitsspeicher zu einer in Betrieb befindlichen logischen Partition Prozessor-/Arbeitsspeicher-Kapazität hinzufügen.
-
In den hierin erläuterten Ausführungsformen kann ein Energiezustand von mindestens einem Knoten und/oder einem System in Reaktion auf ein Systemereignis zum Verringern einer benutzungsberechtigten Kapazität oder Erhöhen einer benutzungsberechtigten Kapazität geändert werden. Eine Änderung des Energiezustands kann im Allgemeinen ein Erhöhen oder Verringern des Energiezustands enthalten. Ein Erhöhen des Energiezustands kann zum Beispiel ein Hochfahren eines Knotens und/oder eines Systems aus einem heruntergefahrenen Zustand enthalten, ein Umschalten von einem niedrigeren Energiemodus auf einen höheren Energiemodus oder jede andere Änderung, die den Energieverbrauch des Knotens oder Systems erhöht, der im Allgemeinen mit einem Erhöhen der Verarbeitungskapazität des Knotens oder Systems zusammenfällt. Umgekehrt kann ein Verringern des Energiezustands zum Beispiel ein Herunterfahren eines Knotens und/oder eines Systems aus einem hochgefahrenen Zustand enthalten, ein Umschalten von einem höheren Energiemodus auf einen niedrigeren Energiemodus oder jede andere Änderung, die den Energieverbrauch des Knotens oder Systems verringert, der im Allgemeinen mit einem Verringern der Verarbeitungskapazität des Knotens oder Systems zusammenfällt.
-
Außerdem können in Reaktion auf ein Systemereignis zum Verringern einer benutzungsberechtigten Kapazität oder Erhöhen einer benutzungsberechtigten Kapazität und allgemein in Verbindung mit einer Änderung des Energiezustands eines Knotens oder Systems eine oder mehrere logische Partitionen zwischen Knoten und/oder Systemen verschoben werden (z.B. aus der Perspektive der Energieverwaltung), um die Zuordnung von logischen Partitionen zwischen den Knoten und/oder Systemen in dem Energieverwaltungs-Pool effektiv zu reoptimieren. Es sollte klar sein, dass jede Optimierung einer Zuordnung von logischen Partitionen in einem Pool in Reaktion auf ein Systemereignis als eine Reoptimierung einer früheren Optimierung einer Zuordnung von logischen Partitionen betrachtet werden kann. Es sollte ebenfalls klar sein, dass in einigen Ausführungsformen eine Optimierung einer Zuordnung von logischen Partitionen in der hierin erörterten Art und Weise manuell oder automatisch ausgeführt werden kann, aber nicht speziell in Reaktion auf eines der vorher genannten Systemereignisse, z.B. nach einem ersten System-Setup oder zu einem anderen Zeitpunkt, der von einem Administrator als nützlich erachtet wird.
-
3A bis 3B veranschaulichen eine Beispiel-Reoptimierungsroutine 100, die die Verarbeitung wiedergibt, die in der Orchestrator-Komponente auftreten kann, wenn ein Systemereignis zur Verringerung einer benutzungsberechtigten Kapazität signalisiert wird und, wie oben angemerkt, im Allgemeinen nachdem die dem Ereignis zugehörigen Operationen (z.B. ein Herunterfahren der Partition, Aussetzen der Hibernation der Partition, eine Migration einer aktiven logischen Partition aus dem Pool, eine Operation zum dynamischen Entfernen eines Prozessors oder dynamischen Entfernen eines Arbeitsspeichers) ausgeführt worden sind. In einigen Ausführungsformen kann die Routine 100 auch manuell durch einen Administrator initiiert werden, um die Partitionsplatzierung zu optimieren und möglicherweise Prozessorknoten und/oder Systeme herunterzufahren.
-
Die Routine 100 kann als Eingabe das vorher genannte Modell für den Energieverwaltungs-Pool empfangen und beginnt am Block 102 mit der Einstellung eines Kennzeichens „targetFound“ auf „Wahr“. Block 104 initiiert eine WHILE-Schleife, die ausgeführt wird bis „targetFound“ „Falsch“ ist. Block 104 übergibt die Steuerung an Block 106, um zu bestimmen, ob ein System in dem Pool die Kriterien für ein Herunterfahren erfüllt, z.B. durch Bestimmen für jedes System in dem Pool, ob das System hochgefahren ist und die für dieses System benutzungsberechtigte Prozessor- und Arbeitsspeicherkapazität (entitledProc und entitledMem) beide Null sind. In diesem Fall kann das System heruntergefahren werden.
-
Als Nächsten wird im Block 108 „targetFound“ auf „Falsch“ gesetzt, und Block 110 initiiert eine FOR-Schleife, um jedes hochgefahrene System in dem Pool (heruntergefahrene Systeme können in einigen Ausführungsformen übersprungen werden) zu verarbeiten. Für jedes derartige System initialisiert Block 112 jede einer LPAR-Anordnung, einer Systemanordnung, einer Zielknotenvariablen und einer Zielsystemvariablen auf Null, und Block 114 initiiert eine FOR-Schleife, um jeden hochgefahrenen Knoten in dem System (heruntergefahrene Knoten können in einigen Ausführungsformen übersprungen werden) zu verarbeiten.
-
Unter Bezugnahme auf
3B bestimmt Block
116 für jeden hochgefahrenen Knoten in dem aktuellen System, wie viel benutzungsberechtigte Prozessor- und Arbeitsspeicherkapazität verringert werden muss, um den aktuellen Knoten herunterzufahren, und bestimmt eine Gruppe von Partitionen (LPARs) zur Migration aus dem aktuellen System, damit der aktuelle Knoten heruntergefahren werden kann. In einer Ausführungsform kann die benutzungsberechtigte Prozessor- und Arbeitsspeicherkapazität, die zum Herunterfahren des aktuellen Knotens (
N) auf dem aktuellen System (
S) verringert werden muss, wie folgt berechnet werden:
-
Außerdem kann jeder dieser Werte in einigen Ausführungsformen auf Null gesetzt werden, wenn das berechnete Ergebnis kleiner als Null ist.
-
In einer Ausführungsform kann zum Bestimmen der Gruppe von Partitionen für die Migration aus dem aktuellen System eine Suche ausgeführt werden, um eine Gruppe von Partitionen zu bestimmen, deren Summe von benutzungsberechtigten Kapazitäten der erforderlichen Verringerung am nächsten kommt, aber immer noch größer als diese ist oder dieser entspricht. Die Eingaben in eine derartige Bestimmung können das System, für das die zu verschiebende Gruppe von Partitionen berechnet werden soll, die erforderliche Verringerung der benutzungsberechtigten Prozessorkapazität und die erforderliche Verringerung der benutzungsberechtigten Arbeitsspeicherkapazität enthalten, wobei die Ausgabe eine Anordnung von einer oder mehreren logischen Partitionen für die Migration aus dem aktuellen System ist.
-
Als Nächstes bestimmt Block 118, ob irgendwelche geeigneten logischen Partitionen gefunden wurden, und falls dies zutrifft, bestimmt Block 120 eine Gruppe von Zielsystemen, in die die logischen Partitionen migriert werden sollen. In einer Ausführungsform kann die Bestimmung als Eingabe zum Beispiel eine LPAR-Anordnung empfangen und kann nach anderen Systemen in dem Pool suchen, die ausreichende überschüssige benutzungsberechtigte Kapazität haben, um die migrierenden logischen Partitionen aufzunehmen, und kann dann die Ergebnisse als eine Gruppe von Zielsystemen ausgeben. In einer Ausführungsform kann ein Zielsystem für jede logische Partition in der LPAR-Anordnung ausgewählt werden, obwohl in einigen Ausführungsformen mehrere logische Partitionen in bestimmte Systeme verschoben werden können. Eine Bestimmung, ob ein potenzielles Zielsystem ausreichende Kapazität hat, kann auf den Attributen installedProc, installedMem, activeProc, activeMem, entitledProc, entitledMem, utilizationLimitProc, und/oder utilizationLimitMem für das System beruhen, wobei z.B. Systeme mit ausreichenden überschüssigen aktiven Kapazitäten gegenüber Systemen mit ausreichenden überschüssigen installierten Kapazitäten begünstigt und eingerichtete Nutzungsgrenzen für das System berücksichtigt werden.
-
Als Nächstes bestimmt Block 122, ob irgendeine geeignete Gruppe von Zielsystemen gefunden wurde, und übergibt, sofern dies zutrifft, die Steuerung an Block 124, um zu bestimmen, ob der aktuelle Knoten eine „bessere“ Auswahl zum Herunterfahren als irgendein vorher identifizierter Knoten ist, der in der Zielknotenvariablen gespeichert ist. Außerdem kann eine Prüfung vorgenommen werden, um festzustellen, ob bisher kein anderer Knoten in der Zielknotenvariablen gespeichert worden ist, wodurch der aktuelle Knoten durch die Zielknotenvariable identifiziert würde. Diesbezüglich kann in einer Ausführungsform eine bessere Auswahl angegeben werden, wenn der aktuelle Knoten höhere Energieanforderungen (powerRating) als der durch die Zielknotenvariable identifizierte Knoten hat, da potenziell größere Energieeinsparungen durch Herunterfahren des aktuellen Knotens statt des Zielknotens erreicht werden können. In anderen Ausführungsformen können andere Kriterien verwendet werden, um zu bestimmen, ob ein Knoten eine bessere Auswahl als ein anderer ist, z.B. auf Grundlage einer erwarteten Herunterfahrzeit oder einer Kombination von Faktoren.
-
Wenn der aktuelle Knoten als bessere Auswahl betrachtet wird, übergibt Block 124 die Steuerung an Block 126, um die Zielknotenvariable zum Identifizieren des aktuellen Knotens einzurichten, die Zielsystemvariable zum Identifizieren des aktuellen Systems einzurichten, die LPAR-Anordnung auf die in Block 116 bestimmte Gruppe von LPARs einzurichten, die Systemanordnung auf die in Block 120 identifizierte Gruppe von Systemen einzurichten und „targetFound“ auf „Wahr“ zu setzen, um anzugeben, dass ein geeigneter Knoten zum Herunterfahren gefunden worden ist. Nach Beendigung von Block 126 oder in Reaktion auf eine negative Bestimmung in einem der Blöcke 118, 122 oder 124 kehrt die Steuerung zum Block 114 (3A) zurück, um den Zyklus durch die Knoten in dem aktuellen System fortzusetzen. Wenn alle Knoten in dem aktuellen System verarbeitet sind, gibt Block 114 die Steuerung an Block 110 zurück, um den Zyklus durch die anderen Systeme in dem Pool fortzusetzen.
-
Wenn alle Systeme verarbeitet sind, übergibt Block 110 die Steuerung an Block 128, um zu bestimmen, ob „targetFound“ auf „Wahr“ gesetzt worden ist. Wenn dies zutrifft, geht die Steuerung auf Block 130 über, um die logischen Partitionen in der LPAR-Anordnung in die Systeme in der System-Anordnung zu migrieren und den Knoten herunterzufahren, der durch den Zielknoten und die Zielsystemvariablen identifiziert worden ist. Nach Beendigung von Block 130, oder wenn in Block 128 bestimmt wurde, dass „targetFound“ „Falsch“ ist, kehrt die Steuerung zu Block 104 zurück, um eine weitere Wiederholung auszuführen, wenn die letzte Wiederholung einen geeigneten Zielknoten für ein Herunterfahren identifiziert hat („targetFound“ ist „Wahr“). Wenn keine weiteren Möglichkeiten zum Herunterfahren mehr identifiziert werden, beendet Block 104 die Routine 100.
-
4A bis 4D veranschaulichen als Nächstes eine Beispiel-Reoptimierungsroutine 150, die die Verarbeitung wiedergibt, die in der Orchestrator-Komponente auftreten kann, wenn ein Systemereignis zum Erhöhen von benutzungsberechtigter Kapazität signalisiert wird. In einigen Ausführungsformen kann die Routine 150 durch einen Administrator auch manuell initiiert werden.
-
Die Routine 150 kann allgemein aufgerufen werden, bevor die dem Ereignis zugehörigen Operationen (z.B. Partition hochfahren, Partitions-Hibernation wieder aufnehmen, Migration einer aktiven Partition in den Pool, dynamisches Hinzufügen von Prozessor- oder dynamische Hinzufüge-Operation von Arbeitsspeicher) ausgeführt worden sind. Die Routine 150 kann als Eingabe das Modell des Energieverwaltungs-Pools und die Prozessor- und Arbeitsspeicherkapazität erhalten, die zum Bearbeiten des Erhöhungsereignisses benötigt werden. In einigen Ausführungsformen kann statt des Prozessor- und Arbeitsspeicher-Kapazitätsbedarfs eine Identifizierung einer Partition bereitgestellt werden, die hochgefahren/wieder aufgenommen/migriert werden soll, sodass die benötigte Prozessor- und Arbeitsspeicherkapazität aus dem Modell erhalten werden kann.
-
Die Routine
150 beginnt in Block
152, indem eine Zielsystemvariable auf Null gesetzt wird. Diese Variable wird als Ergebnis der Routine zurückgegeben, um das System anzugeben, auf dem die angeforderte Kapazität verwendet werden kann. Als Nächstes initiiert Block
154 eine FOR-Schleife, um zu bestimmen, ob die angeforderte Kapazität aus Ressourcen, die bereits hochgefahren sind, und ohne Partitionen zu verschieben gedeckt werden kann. Für jedes hochgefahrene System in dem Pool und bei einer Zielsystemvariablen gleich Null bestimmt Block
156 die erforderliche Prozessor- und Arbeitsspeicherkapazität. Zum Beispiel können die erforderlichen Kapazitäten in einer Ausführungsform für ein aktuelles System (
S) wie folgt bestimmt werden:
-
Block 158 bestimmt als Nächstes, ob das aktuelle System (S) ausreichende aktive Prozessor- und Arbeitsspeicherkapazität hat (z.B. wobei S.activeProc >= requiredActiveProc und S.activeMem >= requiredActiveMem). Falls dies zutrifft, wird das Zielsystem auf das aktuelle System gesetzt, und die Steuerung kehrt zu Block 154 zurück, wobei von Block 154 die Steuerung an Block 162 übergeben wird, da das Zielsystem nicht mehr Null ist. Wenn Block 158 desgleichen bestimmt, dass das aktuelle System keine ausreichende aktive Kapazität hat, übergibt Block 158 die Steuerung an Block 154, um weitere hochgefahrene Systeme in dem Pool zu verarbeiten.
-
Als nächstes bestimmt Block 162, ob die Zielsystemvariable immer noch Null ist, (somit ist die angeforderte Kapazität noch nicht bearbeitet worden), und übergibt, falls dies zutrifft, die Steuerung an Block 164, um eine weitere FOR-Schleife zu initiieren, um jedes hochgefahrene System in dem Pool zu verarbeiten, um zu bestimmen, ob die angeforderte Kapazität von bereits hochgefahrenen Ressourcen durch Verschieben von einer oder mehreren logischen Partitionen bearbeitet werden kann. Für jedes hochgefahrene System übergibt Block 164 die Steuerung an Block 166 (4B). um LPAR- und Systemanforderungen anfänglich auf Null zu setzen
-
Als Nächstes bestimmt Block
168, wie viel benutzungsberechtigte Prozessor- und Arbeitsspeicherkapazität auf dem aktuellen System verringert werden muss, um die angeforderte Kapazität aufzunehmen, und bestimmt eine Gruppe von Partitionen zur Migration aus dem aktuellen System, um die erforderlichen Kapazitätsverringerungen zu erreichen. Die bestimmte Gruppe von Partitionen wird dann in der LPAR-Anordnung gespeichert. In einer Ausführungsform kann die benutzungsberechtigte Prozessor- und Arbeitsspeicherkapazität, die verringert werden muss, zum Beispiel unter Verwendung von requestedProcCapacity und requestedMemCapacity wie folgt berechnet werden:
-
In einer Ausführungsform kann zum Bestimmen der Gruppe von Partitionen für die Migration aus dem aktuellen System eine Suche ausgeführt werden, um eine Gruppe von Partitionen zu bestimmen, deren Summe von benutzungsberechtigten Kapazitäten den erforderlichen Kapazitätsverringerungen am nächsten kommt, aber immer noch größer als diese ist oder diesen entspricht. Die Eingaben in eine derartige Bestimmung können das System, für das die zu verschiebende Gruppe von Partitionen berechnet werden soll, die erforderliche Verringerung der benutzungsberechtigten Prozessorkapazität und die erforderliche Verringerung der benutzungsberechtigten Arbeitsspeicherkapazität enthalten, wobei die Ausgabe eine Anordnung von einer oder mehreren logischen Partitionen für die Migration aus dem aktuellen System ist.
-
Als Nächstes bestimmt Block 170, ob irgendwelche geeigneten logischen Partitionen gefunden wurden (d.h. die LPAR-Anordnung ist nicht Null), und falls dies zutrifft, bestimmt Block 172 eine Gruppe von Zielsystemen, in die die logischen Partitionen in der LPAR-Anordnung migrieren sollen, wobei die Ergebnisse in der Systemanordnung gespeichert werden. In einer Ausführungsform kann die Bestimmung zum Beispiel auf eine ähnliche Art und Weise ausgeführt werden wie oben für Block 120 von 3B beschrieben.
-
Als Nächstes bestimmt Block 174, ob irgendeine geeignete Gruppe von Zielsystemen gefunden wurde (d.h. die Systemanordnung ist nicht Null), und übergibt, falls dies zutrifft, die Steuerung an Block 176, um die Partitionen in der LPAR-Anordnung in die Systeme in der Systemanordnung zu migrieren und das Zielsystem auf das aktuelle System zu setzen.
-
Nach Beendigung von Block 176 oder in Reaktion auf eine negative Bestimmung in einem der Blöcke 170 oder 174 kehrt die Steuerung zum Block 164 (3A) zurück, um den Zyklus durch die Systeme in dem Pool fortzusetzen. Wenn alle Systeme verarbeitet sind, übergibt Block 164 die Steuerung an Block 178, um zu bestimmen, ob die Zielsystemvariable immer noch Null ist (somit ist die angeforderte Kapazität noch nicht bearbeitet worden).
-
Falls dies zutrifft, geht die Steuerung zu Block 180 über und versucht herauszufinden, ob die angeforderte Kapazität durch Hochfahren eines Knotens auf einem hochgefahrenen System in dem Pool bearbeitet werden kann. Insbesondere setzt Block 180 ein optimales Knoten-Array und eine optimale Systemvariable auf Null. Das optimale Knoten-Array speichert einen oder mehrere Knoten, die als zum Hochfahren geeignet bestimmt wurden, um die angeforderte Kapazität zu bearbeiten. Die optimale Systemvariable gibt das System an, in dem sich die Knoten in dem optimalen Knoten-Array befinden.
-
Als Nächstes initiiert Block
182 eine FOR-Schleife, um jedes hochgefahrene System in dem Pool zu verarbeiten. Für jedes derartige System übergibt Block
182 die Steuerung an Block
184 (
4C), um die erforderliche Erhöhung einer aktiven Prozessor- und Arbeitsspeichererhöhung zu bestimmen und die Gruppe von heruntergefahrenen Knoten zu bestimmen, die hochzufahren sind, um die erforderliche Erhöhung zu bearbeiten. In einer Ausführungsform können zum Beispiel die folgenden Werte berechnet werden, um die erforderliche Erhöhung einer aktiven Prozessor- und Arbeitsspeicherkapazität für ein System (
S) zu bestimmen:
-
Ein Bestimmen der Gruppe von heruntergefahrenen Knoten zum Hochfahren kann Knoten-Nennleistungen berücksichtigen, sodass die ausgewählte Gruppe einen Mindestbetrag an Energie von allen wählbaren Gruppen verwendet.
-
Als Nächstes bestimmt Block 186, ob eine Gruppe von heruntergefahrenen Knoten zum Hochfahren gefunden wurde, und falls dies zutrifft, ob diese Gruppe „besser“ als die Gruppe ist, die in dem aktuellen optimalen Knoten-Array (sofern vorhanden) gespeichert ist. Zum Beispiel kann ein Vergleich zwischen den aggregierten Nennleistungen der bestimmten Gruppe und dem optimalen Knoten-Array ausgeführt werden, und wenn die bestimmte Gruppe eine niedrigere aggregierte Nennleistung hat, geht die Steuerung auf Block 188 über, um das optimale Knoten-Array auf die bestimmte Gruppe zu setzen und das optimale System auf das aktuelle System zu setzen, in dem sich die bestimmte Gruppe von Knoten befindet.
-
Nach Beendigung von Block 188, oder wenn Block 186 bestimmt, dass das optimale Knoten-Array immer noch optimal ist, kehrt die Steuerung zu Block 182 (4A) zurück, um die übrigen hochgefahrenen Systeme in dem Pool zu verarbeiten. Wenn alle Systeme verarbeitet worden sind, übergibt Block 182 die Steuerung an Block 190 (4D), um zu bestimmen, ob eine Gruppe von optimalen Knoten gefunden wurde (d.h. das optimale Knoten-Array ist nicht Null). Falls dies zutrifft, geht die Steuerung auf Block 192 über, um jeden Knoten in dem optimalen Knoten-Array hochzufahren und das Zielsystem auf das bestimmte optimale System zu setzen.
-
Nach Beendigung von Block 192 oder wenn in Block 190 keine optimalen Knoten gefunden wurden, geht die Steuerung auf Block 194 über, um wiederum zu bestimmen, ob die Zielsystemvariable immer noch Null ist (somit ist die angeforderte Kapazität noch nicht bearbeitet worden). Falls dies zutrifft, geht die Steuerung auf Block 196 über, um einen Prozess zum Bestimmen zu initiieren, ob die angeforderte Kapazität durch Hochfahren eines gesamten Systems bearbeitet werden kann. Insbesondere setzt Block 196 eine temporäre Zielsystemvariable auf Null, und Block 198 initiiert eine FOR-Schleife, um jedes heruntergefahrene System in dem Pool zu verarbeiten. Für jedes derartige System bestimmt Block 200 erforderliche aktive Kapazitäten für das System, z.B. durch Teilen der angeforderten Kapazitäten durch die Nutzungsgrenzen für das System (z.B. utilizationLimitProc und utilizationLimitMem).
-
Block 202 bestimmt anschließend, ob die installierten Kapazitäten für das System (z.B. installedProc und installedMem) die erforderlichen aktiven Kapazitäten erfüllen (z.B. größer sind oder diesen entsprechen). Falls dies zutrifft, bestimmt Block 202 auch, ob die installierten Kapazitäten des aktuellen Systems kleiner sind als diejenigen des Systems, das durch die temporäre Zielsystemvariable (sofern vorhanden) identifiziert wurde. Falls dies zutrifft, geht die Steuerung auf Block 204 über, um die temporäre Zielsystemvariable auf das aktuelle System zu setzen. Nach Beendigung von Block 204, oder wenn Block 202 nicht bestimmt, dass das aktuelle System geeignet ist, kehrt die Steuerung zu Block 198 zurück, um die übrigen hochgefahrenen Systeme in dem Pool zu verarbeiten.
-
Wenn alle heruntergefahrenen Systeme verarbeitet sind, übergibt Block 198 die Steuerung an Block 206, um zu bestimmen, ob die Zielsystemvariable nicht Null ist (d.h. identifiziert ein zum Hochfahren geeignetes System). Falls dies zutrifft, geht die Steuerung auf Block 208 über, um jedes durch die temporäre Zielsystemvariable identifizierte System hochzufahren und die Zielsystemvariable auf das hochgefahrene System zu setzen. Danach geht die Steuerung auf Block 210 über, um die Zielsystemvariable zurückzugeben und die Routine zu beenden.
-
Wenn Block 206 bestimmt, dass die temporäre Zielsystemvariable Null ist, wird Block 208 umgangen und die Steuerung fährt mit Block 210 fort, um die Routine zu beenden. Außerdem sollte klar sein, dass jeder der Blöcke 162, 178 und 194 die Steuerung effektiv an Block 210 übergibt, sobald die Zielsystemvariable auf einen Nicht-Null-Wert gesetzt wird, wodurch angegeben wird, dass die angeforderte Kapazität bearbeitet worden ist.