-
HINTERGRUND
-
Die vorliegende Erfindung betrifft das Verringern der Bevorrechtigung virtueller Maschinen und insbesondere ein Verfahren zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung.
-
Multiprozessor-Datenverarbeitungssysteme sind oftmals als Gruppe ähnlicher Prozessoren aufgebaut, die alle denselben physischen Speicher nutzen. Diese Anordnung wird allgemein als „symmetrisches Multiprocessing (SMP)“ bezeichnet. Ein Betriebssystem, das auf einem derartigen Hardwaresystem ausgeführt wird, nutzt die Prozessoren im Tandem, um die Gesamtarbeitslast des Systems zu bewältigen. Wenn es sich bei dem Betriebssystem beispielsweise um ein Linuxsystem handelt, teilt der Linuxkern Benutzerausführungskontexte, die als „Prozesse“ bezeichnet werden, den realen Prozessoren des Systems zu. Wenn es sich bei dem Betriebssystem um ein z/VM®-System handelt, teilt der z/VM®-Kern in ähnlicher Weise seine Ausführungskontexte, die als „virtuelle Prozessoren“ bezeichnet werden, den realen Prozessoren des Systems zu. Windows®, ein weiteres multiprozessorfähiges Prozessorbetriebssystem, arbeitet mit seinen Prozessen und Prozessoren in ähnlicher Weise. (z/VM® ist eine eingetragene Handelsmarke von International Business Machines Corporation, Armonk, N.Y., USA, und Windows® ist eine eingetragene Handelsmarke von Microsoft Corporation, Redmond, Wash., USA.)
-
Bei Betriebssystemen wie z.B. Linux, z/VM® oder Windows® wird Prozessorzeit entweder durch Ausführungstexte von Benutzeranwendungen oder durch den Betriebssystemkern verbraucht. Dieser Verbrauch findet in überlappender Weise statt. Das typische Verhalten besteht darin, dass ein Benutzerprozess zunächst während eines Zeitraums ausgeführt wird und dadurch Prozessorzeit anfällt. Anschließend führt der Benutzerprozess eine Operation durch oder ruft eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API) auf, wodurch ein Eingriff des Betriebssystemkerns erforderlich wird. Der Kern greift ein, um diesen Zustand zu verarbeiten, und wird während eines Zeitraums ausgeführt, wodurch Prozessorzeit anfällt. Wenn der Kern das Verarbeiten des Zustands beendet, gibt der Kern die Steuerung an den Benutzeranwendungsprozess zurück.
-
Im Allgemeinen muss bei dem Betriebssystemkern, der eingreifen muss, der Kern eine serielle Einordnung (Serialisierung) oder einen wechselseitigen Ausschluss erhalten, bevor die Anforderung verarbeitet wird. Ein derartiger Schutz ist erforderlich, um zu gewährleisten, dass nur jeweils ein Thread oder Prozessor die im Zugriff befindlichen Kerndatenstrukturen liest oder aktualisiert. Obwohl einfache Serialisierungstechniken in der Literatur zugänglich sind, bewirken alle diese Techniken letztendlich dasselbe, d.h. einen nacheinander stattfindenden Zugriff auf diese Schlüsseldatenstruktur(en). Der serielle Zugriff ist notwendig, um die Intaktheit des Systems zu gewährleisten.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung bereitgestellt. Das Verfahren weist das Zuteilen einer virtuellen zentralen Verarbeitungseinheit (Central Processing Unit, CPU) zur Ausführung in einem Emulationsmodus auf einer realen CPU auf, bis die reale CPU den Emulationsmodus verlässt, das Ermitteln, ob die virtuelle CPU einen Wartezustand geladen hat, das Ermitteln, ob eine verbleibende Zeitscheibe der virtuellen CPU als Ergebnis des Zuteilens unterhalb eines vorgegebenen Schwellenwertes in einem Fall liegt, bei dem die virtuelle CPU den Wartezustand geladen hat, und das zeitliche Neuplanen der virtuellen CPU mit einer vollen Zeitscheibe in einem Fall, bei dem die verbleibende Zeitscheibe der virtuellen CPU unterhalb des vorgegebenen Schwellenwertes liegt.
-
Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung wird ein Computerprogrammprodukt zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium auf, auf dem Programmanweisungen verkörpert sind, wobei das computerlesbare Speichermedium kein Signal ist und die Programmanweisungen durch einen Prozessor lesbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen. Das Verfahren weist das Zuteilen einer virtuellen zentralen Verarbeitungseinheit (Central Processing Unit, CPU) zur Ausführung in einem Emulationsmodus auf einer realen CPU auf, bis die reale CPU den Emulationsmodus verlässt, das Ermitteln, ob die virtuelle CPU einen Wartezustand geladen hat, das Ermitteln, ob eine verbleibende Zeitscheibe der virtuellen CPU als Ergebnis des Zuteilens unterhalb eines vorgegebenen Schwellenwertes in einem Fall liegt, bei dem die virtuelle CPU den Wartezustand geladen hat, und das zeitliche Neuplanen der virtuellen CPU mit einer vollen Zeitscheibe in einem Fall, bei dem die verbleibende Zeitscheibe der virtuellen CPU unterhalb des vorgegebenen Schwellenwertes liegt.
-
Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung wird ein Datenverarbeitungssystem bereitgestellt, das so gestaltet ist, dass eine Verringerung der Bevorrechtigung virtueller Maschinen in einer virtuellen Umgebung ausgeführt wird. Das Datenverarbeitungssystem weist einen Prozessor und Speicher auf, und der Prozessor ist so gestaltet, dass eine virtuelle zentrale Verarbeitungseinheit (CPU) zur Ausführung in einem Emulationsmodus auf einer realen CPU zugeteilt wird, bis die reale CPU den Emulationsmodus verlässt, um zu ermitteln, ob die virtuelle CPU einen Wartezustand geladen hat, um zu ermitteln, ob eine verbleibende Zeitscheibe der virtuellen CPU als Ergebnis des Zuteilens unterhalb eines vorgegebenen Schwellenwertes in einem Fall liegt, bei dem die virtuelle CPU den Wartezustand geladen hat, und um die virtuelle CPU mit einer vollen Zeitscheibe in einem Fall zeitlich neu zu planen, bei dem die verbleibende Zeitscheibe der virtuellen CPU unterhalb des vorgegebenen Schwellenwertes liegt.
-
Weitere Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Andere Ausführungsformen und Aspekte der Erfindung werden im vorliegenden Dokument eingehend beschrieben und sind als Teil der beanspruchten Erfindung zu betrachten. Zum besseren Verständnis der Erfindung mit den Vorteilen und Merkmalen siehe die Beschreibung und die Zeichnungen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Der als Erfindung betrachtete Gegenstand wird in den Ansprüchen, die im Anschluss an die Beschreibung folgen, speziell beschrieben und ausdrücklich beansprucht. Die vorstehend beschriebenen und weiteren Merkmale und Vorteile der Erfindung werden anhand der folgenden eingehenden Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist, wobei:
-
1 ein Blockschema einer Ausführungsform eines Datenverarbeitungssystems zur Realisierung eines oder mehrerer Aspekte der vorliegenden Erfindung ist;
-
2 eine ausführlichere Veranschaulichung einer Ausführungsform eines Datenverarbeitungssystems zur Realisierung eines oder mehrerer Aspekte der vorliegenden Erfindung ist;
-
3 ein Flussdiagramm ist, das ein Verfahren zum Betreiben eines Datenverarbeitungssystems gemäß Ausführungsformen veranschaulicht;
-
4 ein Flussdiagramm ist, das ein Verfahren zum Betreiben eines Datenverarbeitungssystems gemäß weiteren Ausführungsformen veranschaulicht; und
-
5 eine schematische Darstellung ist, die ein Computerprogrammprodukt gemäß Ausführungsformen veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es wird ein Verfahren zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung bereitgestellt. Das Verfahren weist das Zuteilen einer virtuellen zentralen Verarbeitungseinheit (Central Processing Unit, CPU) zur Ausführung in einem Emulationsmodus auf einer realen CPU auf, bis die reale CPU den Emulationsmodus verlässt, das Ermitteln, ob die virtuelle CPU einen Wartezustand geladen hat, das Ermitteln, ob eine verbleibende Zeitscheibe der virtuellen CPU als Ergebnis des Zuteilens unterhalb eines vorgegebenen Schwellenwertes in einem Fall liegt, bei dem die virtuelle CPU den Wartezustand geladen hat, und das zeitliche Neuplanen der virtuellen CPU mit einer vollen Zeitscheibe in einem Fall, bei dem die verbleibende Zeitscheibe der virtuellen CPU unterhalb des vorgegebenen Schwellenwertes liegt.
-
Bei einem Betriebssystemkern, der als Reaktion auf einen Benutzerprozess eingreift, der eine Operation durchführt oder eine API aufruft, muss der Kern normalerweise eine Serialisierung oder einen wechselseitigen Ausschluss erhalten, bevor eine Anforderung eines Anwendungsprozesses verarbeitet wird. Ein derartiger Schutz ist erforderlich, um zu gewährleisten, dass nur jeweils ein Thread oder Prozessor im Zugriff befindliche Kerndatenstrukturen liest oder aktualisiert. Letztendlich bewirken alle diese Techniken dasselbe, d.h. einen nacheinander stattfindenden Zugriff auf diese Schlüsseldatenstrukturen.
-
Zu Faktoren beim Ermitteln des Umfangs der Serialisierung oder des wechselseitigen Ausschlusses, die bzw. den ein System erfährt, gehören die Anzahl von Prozessoren, die um die Serialisierung konkurrieren, die Tendenz von Benutzeranwendungsprozessen, eine Bedienung vom Betriebssystemkern anzufordern, und die Häufigkeit, mit der Benutzeranwendungen eine Bedienung vom Betriebssystemkern anfordern. Daraus folgt dann, dass, wenn der Kern die Quote von Benutzerprozessen verringern kann, die eine Bedienung vom Kern anfordern, er dann den Serialisierungsaufwand im Kern verringern kann.
-
Bevor verschiedene automatisierte Prozesse zum Fördern einer derartigen Systemeffizienz (gemäß einem oder mehreren Aspekten der vorliegenden Erfindung) beschrieben werden, werden nachfolgend unter Bezugnahme auf die 1 bis 2 Beispiele von Datenverarbeitungssystemen erläutert, die die hierin offenbarten Einrichtungen nutzen können.
-
1 ist ein Blockschema eines Datenverarbeitungs- oder Computersystems 100, das bei einem Beispiel ein symmetrisches Multiprozessor-Servercomputersystem (SMP-Servercomputersystem) ist. Das SMP-Servercomputersystem 100 weist physische Hardwareeinheiten auf, die einer Benutzeranwendung zugeordnet werden können, d.h. sich zeitweilig in deren Besitz befinden, um diese Anwendung auszuführen.
-
Das SMP-Servercomputersystem 100 weist einen physischen SMP-Server 102 auf. Der physische SMP-Server 102 weist physische Hardwareeinheiten wie zum Beispiel Prozessoren 104, einen Speicher 106 und E/A-Adapter 108 auf. Diese physischen Einheiten werden durch einen Hypervisor 110 verwaltet. Die Prozessoren 104 sind gemeinsam genutzte Prozessoren, und bei jedem kann es sich um einen SMT-fähigen (SMT = Simultaneous Multithreading) handeln, der in der Lage ist, gleichzeitig mehrere unterschiedliche Threads auf dem Prozessor auszuführen.
-
Ein virtueller Server ist ein Proxy für einen physischen Server, der dieselben Funktionen, Schnittstellen und denselben Zustand aufweist. Virtuelle Server werden durch den Hypervisor erzeugt und verwaltet, der sich auf dem physischen SMP-Servercomputersystem 100 befindet. Ein virtueller Server scheint für seine Benutzer ein physischer SMP-Server zu sein: das Betriebssystem, Middleware und Anwendungssoftware, die auf diesem ausgeführt werden. Das SMP-Servercomputersystem 100 weist einen oder mehrere virtuelle Server wie zum Beispiel einen virtuellen Server 112 und einen virtuellen Server 112a auf.
-
Jeder virtuelle Server scheint für seine Software seine eigenen Prozessoren, seinen eigenen Speicher und seine eigenen E/A-Adapter zu besitzen, die zur ausschließlichen Verwendung durch diesen virtuellen Server zur Verfügung stehen. Zum Beispiel weist der virtuelle Server 112 einen virtuellen Prozessor 120, einen virtuellen Speicher 122 und virtuelle E/A-Adapter 124 auf. Der virtuelle Server 112a weist virtuelle Prozessoren 120a, einen virtuellen Speicher 122a und virtuelle E/A-Adapter 124a auf.
-
Jeder virtuelle Server unterstützt seine eigene Softwareumgebung einschließlich eines Betriebssystems, von Middleware und Anwendungen. Die Softwareumgebung jedes virtuellen Servers kann sich von der Softwareumgebung anderer virtueller Server unterscheiden. Beispielsweise können sich die durch jeden virtuellen Server ausgeführten Betriebssysteme voneinander unterscheiden.
-
Zum Beispiel unterstützt der virtuelle Server 112 ein Betriebssystem 114, eine Middleware 116 und Anwendungen 118. Der virtuelle Server 112a unterstützt ein Betriebssystem 114a, eine Middleware 116a und Anwendungen 118a. Die Betriebssysteme 114 und 114a können identische oder unterschiedliche Betriebssysteme sein.
-
Ein virtueller Server ist eine logische Beschreibung eines Servers, die eine Serverumgebung definiert, die aus der Sicht eines Benutzers agiert, als sei sie ein physischer Server, auf die in derselben Weise wie auf einen physischen Server zugegriffen wird und die in derselben Weise wie ein physischer Server Informationen bereitstellt. Die virtuellen Prozessoren, der virtuelle Speicher und die virtuellen E/A-Adapter, die für jeden virtuellen Server definiert sind, sind logische Übersetzungen physischer Prozessoren, physischen Speichers und physischer E/A-Adapter.
-
Der Hypervisor 110 verwaltet das Zuordnen zwischen den virtuellen Servern mit ihren virtuellen Prozessoren, ihrem virtuellen Speicher und ihren virtuellen E/A-Adaptern und den physischen Hardwareeinheiten, die zur Realisierung dieser virtuellen Einheiten ausgewählt werden. Wenn zum Beispiel ein virtueller Prozessor zugeteilt wird, wird durch den Hypervisor 110 ein physischer Prozessor wie beispielsweise einer der physischen Prozessoren 104 ausgewählt, um zur Ausführung und Realisierung dieses virtuellen Prozessors verwendet zu werden. Der Hypervisor 110 verwaltet die Auswahlen physischer Einheiten und ihre zeitweilige Zuweisung zu virtuellen Einheiten.
-
Der Hypervisor 110 bedient durch Überlappen der Ausführung von virtuellen Prozessoren auf physischen Prozessoren 104 alle virtuellen Prozessoren der virtuellen Server. Um zu verhindern, dass ein virtueller Prozessor einen physischen Prozessor vereinnahmt, legt der Hypervisor 110 eine Zuteilungszeitscheibe einer bestimmten Zeitdauer fest. Während jeder Zuteilungszeitscheibe ordnet bzw. weist der Hypervisor 110 den physischen Prozessor 104 einem virtuellen Prozessor zu, und der physische Prozessor führt Anweisungen für den virtuellen Prozessor aus. Diese Zuteilungszeitscheibe begrenzt die maximale Zeit, während der ein virtueller Prozessor auf einem physischen Prozessor ausgeführt werden darf, bevor der Hypervisor die Ausführung auf dem physischen Prozessor wieder aufnimmt und sich unter Umständen dazu entscheidet, einen anderen virtuellen Prozessor zuzuteilen.
-
Der Hypervisor 110 ist für das dynamische Erzeugen, Verwalten und Löschen virtueller SMP-Server zuständig. Das heißt, dass durch den Hypervisor 110 ganze virtuelle Prozessoren, virtuelle E/A-Adapter und virtuelle Speicherblöcke entfernt oder hinzugefügt werden können. Der Hypervisor 110 ist zudem für die dynamische Ressourcenzuordnung, das Verwalten der zeitlichen Nutzung physischer Ressourcen und das Verändern der einem Prozessor zugeordneten physischen Ressource zuständig, ohne das Betriebssystem einzubeziehen. Darüber hinaus ist der Hypervisor 110 in der Lage, in Situationen, in denen eine Aufteilung nicht erwünscht ist, physische Ressourcen fest zu virtuellen Ressourcen zuzuordnen. Der Hypervisor 110 ist zuständig für das Verwalten der Hinzufügung oder Löschung physischer Ressourcen und macht diese Hinzufügungen und Löschungen für Benutzeranwendungen höherer Ebenen transparent.
-
2 ist eine ausführlichere Veranschaulichung eines Computersystems, das zur Realisierung der hierin beschriebenen Konzepte verwendet werden kann. Ein Datenverarbeitungssystem 200 kann ein symmetrisches Multiprozessorsystem (SMP-System) sein, das eine Mehrzahl gemeinsam genutzter Prozessoren oder SMT-fähiger Prozessoren wie zum Beispiel Prozessoren 202 und 204 aufweist, die mit einem Systembus 206 verbunden sind. Bei dem abgebildeten Beispiel ist der Prozessor 204 ein Serviceprozessor. Jeder SMT-fähige Prozessor ist in der Lage, gleichzeitig mehrere Hardware-Threads auf dem einen Prozessor auszuführen.
-
Mit dem Systembus 206 ist außerdem eine Speichersteuer-/Zwischenspeichereinheit 208 verbunden, die eine Schnittstelle zu einem lokalen Speicher 209 bereitstellt. Die E/A-Bus-Bridge 210 ist mit dem Systembus 206 verbunden und stellt dem E/A-Bus 212 eine Schnittstelle bereit. Die Speichersteuer-/Zwischenspeichereinheit 208 und die E/A-Bus-Bridge 210 können wie abgebildet integriert sein.
-
Eine PCI-Bus-Bridge (PCI = Peripheral Component Interconnect) 214 ist mit dem Systembus 212 verbunden und stellt einem lokalen PCI-Bus 216 eine Schnittstelle bereit. Mit dem PCI-Bus 216 kann eine Anzahl von Modems verbunden sein. Typische Realisierungsformen von PCI-Bussen unterstützen vier PCI-Erweiterungssteckplätze oder Steckverbinder für Erweiterungsmodule. Datenaustauschverbindungen mit Netzwerkcomputern können über ein Modem 218 und einen Netzwerkadapter 220 bereitgestellt sein, die über Erweiterungskarten mit dem lokalen PCI-Bus 216 verbunden sind.
-
Der Netzwerkadapter 220 weist eine physikalische Schicht 282 auf, die ausgehende, in das Netzwerk, beispielsweise ein Ethernet-Netzwerk, gelangende Analogsignale für einen RJ45-Steckverbinder aufbereitet. Der Netzwerkadapter 220 weist eine Medienzugriffssteuereinheit (Media Access Controller, MAC) 280 auf, die mit dem Bus 216 verbunden ist und digitale Netzwerksignale verarbeitet. Die MAC 280 dient als Schnittstelle zwischen dem Bus 216 und der physischen Schicht 282 und führt eine Reihe von Funktionen aus, die mit dem Senden und dem Empfang von Datenpaketen zusammenhängen. Beispielsweise setzt die MAC 280 während der Übertragung von Daten die zu sendenden Daten zu einem Paket mit Adress- und Fehlererkennungsfeldern zusammen. Umgekehrt zerlegt die MAC 280 während des Empfangs eines Paketes das Paket und führt eine Adressprüfung und Fehlererkennung durch. Darüber hinaus führt die MAC 280 normalerweise eine Verschlüsselung/Entschlüsselung übertragener Digitalsignale durch und führt die Erzeugung/Löschung von Präambeln sowie das Senden/den Empfang von Bits durch.
-
Weitere PCI-Bus-Bridges 222 und 224 stellen Schnittstellen für weitere PCI-Busse 226 und 228 bereit, von denen aus weitere Modems oder Netzwerkadapter unterstützt werden können. Auf diese Weise ermöglicht das Datenverarbeitungssystem 200 Verbindungen zu mehreren Netzwerkcomputern. Ein im Speicher abgebildeter Grafikadapter 230 und eine Festplatte 232 können wie abgebildet ebenfalls entweder direkt oder indirekt mit dem E/A-Bus 212 verbunden sein.
-
Der Serviceprozessor 204 fragt Systemprozessoren, Speicherkomponenten und E/A-Bridges ab, um das Datenverarbeitungssystem 200 zu überwachen. Der Serviceprozessor 204 führt zudem bei allen gefundenen Elementen interne Selbsttests (Built-In-Self-Tests, BISTs), interne Funktionstests (Basic Assurance Tests, BATs) und Speichertests durch, indem er einen Systemprozessor, eine Speichersteuereinheit und E/A-Bridge abfragt. Beliebige Fehlerinformationen zu Fehlern, die während der BISTs, BATs und Speichertests erkannt wurden, werden durch den Serviceprozessor 204 erfasst und gemeldet.
-
Dem Fachmann wird klar sein, dass die in 2 abgebildete Hardware variieren kann. Beispielsweise können zusätzlich zur abgebildeten Hardware oder an deren Stelle andere Peripherieeinheiten wie zum Beispiel optische Plattenlaufwerke und dergleichen verwendet werden. Das abgebildete Beispiel ist nicht als architektonische oder anderweitige Einschränkung in Bezug auf die vorliegende Erfindung gedacht.
-
Die vorliegende Erfindung kann auf verschiedenen Computern oder Datenverarbeitungssystemen wie zum Beispiel den in 1 oder 2 abgebildeten ausgeführt werden. Als konkretes handelsübliches Beispiel kann ein Datenverarbeitungssystem, das ein vorzeitiges Zeitscheibenende zur Minimierung der Bevorrechtigung virtueller Prozessoren realisiert, wie beispielsweise hierin nachstehend beschrieben, auf Technologien aufgebaut sein, die in der Firmware und Systemware der IBM Produktlinie z/Architecture® zu finden und in „z/Architecture® Principles of Operation", IBM Publikationsnummer SA22 7832 09, 10. Ausgabe, September 2012, Seiten 1 bis 1568, beschrieben sind. (IBM und z/Architecture® sind eingetragene Marken von International Business Machines Corporation, Armonk, N.Y., USA.)
-
Der oben beschriebene Hypervisor 110 ermöglicht das Ausführen mehrerer Instanzen von Betriebssystemen (wie zum Beispiel von Linux, CMS, z/OS usw.) auf einem Großrechner wie zum Beispiel dem Datenverarbeitungssystem 100 und tut dies durch Virtualisieren einer Gruppe von Computerressourcen (CPU, Speicher, E/A-Einheiten) für jede Instanz eines Betriebssystems. Daher scheinen aus der Perspektive des Betriebssystems reale Computerressourcen vorzuliegen, obwohl das Betriebssystem tatsächlich auf einer virtuellen Maschine ausgeführt wird.
-
Eine derartige virtuelle Maschine kann mehr als eine virtuelle CPU 120 aufweisen, die es dem entsprechenden Betriebssystem ermöglicht, gleichzeitig zwei oder mehr unterschiedliche Gruppen von Anweisungen auszuführen. Diese unterschiedlichen Gruppen von Anweisungen teilen sich den Zugriff auf einen gemeinsamen Speicher für die virtuelle Maschine. Wie dies in nicht virtualisierten Umgebungen typisch ist, erfordern Betriebssysteme (und Programme), die in einer Multiprozessorumgebung mit gemeinsam genutztem Speicher ausgeführt werden, eine Serialisierung, um den Zugriff auf das Lesen und Schreiben bestimmter Speicherbereiche zu steuern, wobei eine beispielhafte Serialisierungstechnik eine Spinlock (Leerlaufsperre) ist.
-
Der Hypervisor 110 ist unter anderem zuständig für das Steuern des Zugriffs auf die CPUs des Datenverarbeitungssystems 100 durch die virtuellen CPUs 120 der virtuellen Maschinen, und ein Systemadministrator kann eine Einstellung zur gemeinsamen Nutzung verwenden, um eine Richtlinie dafür einzurichten, wie viel der CPU-Ressourcen jede virtuelle Maschine erhalten sollte, wenn unzureichende CPU-Ressourcen vorliegen, um den Bedürfnissen der virtuellen Maschinen zu entsprechen. Diese Einstellung zur gemeinsamen Nutzung kann jeder virtuellen CPU 120 eine Priorität zuweisen und festlegen, dass jede virtuelle CPU 120 bis zu einer bestimmten Zeitdauer (die als „Zeitscheibe“ bezeichnet wird und deren Standardwert zum Beispiel 5 ms betragen kann) ausgeführt werden darf, bevor diese Priorität neu berechnet wird. Die Einstellung zur gemeinsamen Nutzung kann auch so definiert werden, dass die Zeitscheibe in mehreren getrennten Blöcken verbraucht werden kann. Das heißt, dass, wenn eine virtuelle CPU 120 einen Wartezustand lädt oder aus einem anderen Grund nicht ausführbar wird, die virtuelle CPU 120 den Rest ihrer Zeitscheibe behält und die Nutzung der Zeitscheibe wieder aufnimmt, wenn sie erneut zur Ausführung bereit wird. Die zugewiesene Priorität ist eine Funktion der Einstellung zur gemeinsamen Nutzung der virtuellen Maschine, des Anteils der durch die virtuelle CPU 120 verbrauchten CPU und einer Größe der Zeitscheibe.
-
In virtuellen Umgebungen wie beispielsweise den oben unter Bezugnahme auf die 1 und 2 beschriebenen ist eine Spinlock eine Serialisierungstechnik, bei der eine virtuelle CPU (d.h. einer der virtuellen Prozessoren 120) unter Verwendung einer Serialisierungsanweisung zur Aktualisierung der Speicherstelle des virtuellen Speichers eine Sperre an einer Speicherstelle im virtuellen Speicher 122 übernimmt. Alle anderen virtuellen CPUs, die diese Sperre erhalten möchten, müssen in einen Schleifenwartezustand wechseln, bis die Spinlock in einen Zustand wechselt, bei dem die anderen virtuellen CPUs die Spinlock übernehmen dürfen. Wenn eine virtuelle CPU eine Spinlock besitzt, darf die virtuelle CPU ohne die Verwendung von Serialisierungsanweisungen andere Speicherstellen des virtuellen Speichers lesen oder verändern. Bei dieser Anordnung kann die Multiprozessor-Gastnutzung von Spinlocks zu ineffizientem Leerlauf führen, wenn der Hypervisor 110 derzeit die virtuelle CPU nicht ausführt, die die Spinlock besitzt. Bestehende Technologie kann bestimmte Algorithmen nutzen, z.B. SIGP Sense Running Status (SRS), sodass die CPU, die sich im Leerlauf befindet und darauf wartet, dass die Spinlock verfügbar wird, abfragen kann, ob die virtuelle CPU derzeit ausgeführt wird, die die Spinlock besitzt. Wenn nicht, kann das Programm, das im Leerlauf auf die Spinlock wartet, eine Diagnoseanweisung „x'9C'“ (im Folgenden als „Diag x’9C’“ bezeichnet) verwenden, um den Hypervisor 110 anzuweisen, die Ausführung der virtuellen CPU zu bevorzugen, die derzeit die Spinlock besitzt.
-
Obwohl eine derartige Anweisung beim Erkennen und Reagieren auf das Problem wirksam sein kann, dass der Hypervisor 110 eine Gast-CPU bevorrechtigt (d.h. einen der virtuellen Prozessoren 120), die derzeit eine Gastsperre besitzt, kann die Lösung auch zu Kontextumschaltungen zwischen der Gast-CPU und dem Hypervisor 110 führen bzw. diese bewirken sowie Aufwand im Hypervisor 110 hervorrufen. Dies liegt daran, dass die Anweisung Diag x'9C' einen Eingriff des Hypervisors 110 erfordert, was im Allgemeinen erfordert, dass der Hypervisor 110 eine Serialisierung seines eigenen Aufwands und den zugehörigen Aufwand übernimmt. Daher kann wie hierin beschrieben die Anzahl, wie oft der Hypervisor 110 eine Gast-CPU bevorrechtigt, die eine Gastsperre besitzt, durch eine hinzugefügte Fähigkeit minimiert oder verringert werden, die der Festlegung eines vorzeitigen Zeitscheibenendes für eine Gast-CPU in Fällen dient, in denen die Gast-CPU ein Wartezustand-Programmstatuswort (PSW) lädt und weniger als ein bestimmter Schwellenwert der Zeitscheibe verbleibt. Dies verringert die Anzahl erheblich, dass eine Gast-CPU, die eine Sperre besitzt, bevorrechtigt wird, und ermöglicht einen effizienteren Betrieb von Gast-CPUs.
-
Wie oben erwähnt, besteht ein Problem, das in einer virtualisierten Umgebung auftreten kann, darin, dass eine virtuelle CPU 120 einer virtuellen Maschine eine Spinlock übernehmen könnte, aber anschließend durch den Hypervisor 110 bevorrechtigt werden könnte, der sich dazu entscheidet, die virtuelle CPU 120 in der Mitte der Ausführung ihrer Anweisungen zu stoppen und stattdessen zur Ausführung einer anderen virtuellen CPU umschaltet. Falls dies geschieht, könnte eine weitere virtuelle CPU 120, die zu derselben virtuellen Maschine wie die virtuelle CPU 120 gehört, die bevorrechtigt wurde, während sie die Spinlock besaß, feststellen, dass sie im Leerlauf auf eine Sperre wartet, die aufgrund der CPU 120 für einen längeren Zeitraum nicht freigegeben wird, die die Spinlock im nicht ausgeführten Zustand übernommen hatte. Daher stehen die Optionen SIGP SRS und Diag x'9C' für Betriebssysteme zur Verfügung, die auf virtuellen Maschinen ausgeführt werden, um zu erkennen, dass dies geschah, und um Maßnahmen zu ergreifen, um den Hypervisor 110 anzuweisen, dem Ausführen der virtuellen CPU 120 Vorrang zu geben, die derzeit die Spinlock besitzt. Bei dieser Synergie zwischen dem Hypervisor 100 und dem Gastbetriebssystem hat sich gezeigt, dass sie unproduktiven Leerlauf wegen Spinlocks verringert, und sie verbessert das Betriebsverhalten von Arbeitslasten, weist jedoch einen zugehörigen Aufwand auf, der durch einen Austritt aus dem Emulationsmodus verursacht wird (in dem die Anweisungen der virtuellen CPUs durch die reale CPU direkt ausgeführt werden) und erfordert, dass der Hypervisor 110 eine globale Serialisierung übernimmt. Eine Verbesserung bei diesem Problem würde somit zur Folge haben, dass der Hypervisor 110 Gast-CPUs zuteilt, sodass die Anzahl der Fälle verringert wird, in denen eine virtuelle Gast-CPU feststellt, dass sie Diag X'9C' verwenden sollte.
-
Hierbei besteht eine Beobachtung im Zusammenhang mit dem Betrieb des Hypervisors 110 darin, dass, wenn eine virtuelle CPU eine Zeitscheibe beendet, eine neue empfangene Priorität normalerweise schlechter als die ist, die sie zuvor besaß. Diese Verschlechterung der Priorität im Verhältnis zu anderen CPUs, die im Wettbewerb um die realen CPUs stehen, bedeutet, dass dies ein Punkt ist, an dem eine virtuelle CPU mit größerer Wahrscheinlichkeit zu bevorrechtigen ist, um eine andere virtuelle CPU auszuführen. Das Warten auf die Neuberechnung der Priorität einer virtuellen CPU, bis sie einen bestimmten Anteil der realen CPU verbraucht hat, bedeutet, dass sich die virtuelle CPU die meiste Zeit in der Mitte der Ausführung von Anweisungen befindet, es sei denn, sie lädt einen Wartezustand zufällig genau zu dem Zeitpunkt, an dem ihre Zeitscheibe abläuft. Im Allgemeinen hat der Hypervisor keine Kenntnis darüber, ob diese virtuelle CPU derzeit beliebige Gast-Spinlocks besitzt.
-
In der Zwischenzeit wurde in Bezug auf die Verwendung von Spinlocks beobachtet, dass Betriebssysteme nicht dazu neigen, in Wartezustände überzugehen, während sie im Besitz von Spinlocks sind. Daher kann der Hypervisor 110, falls er beobachtet, dass eine virtuelle CPU ein Wartezustand-PSW lädt, logisch schlussfolgern, dass die virtuelle CPU nicht im Besitz von beliebigen Spinlocks ist.
-
Unter Bezugnahme auf 3 wird eine Erweiterung des oben beschriebenen Datenverarbeitungssystems 100 auf einen Schwellenwert eingestellt, bei dem die virtuelle CPU für eine neue Zeitscheibe zeitlich neu geplant wird, wenn die virtuelle CPU in einen Wartezustand übergeht und in ihrer Zeitscheibe weniger verbleibende Zeit als diese Schwellenwert-Zeitdauer aufweist. Dieses zeitliche Neuplanen berücksichtigt den ungenutzten Anteil der Zeitscheibe, die vorzeitig beendet wurde, sodass der Gast für das Laden eines Wartezustands nicht benachteiligt wird. Der Grund, aus dem ein Schwellenwert verwendet wird, anstatt dies jedes Mal durchzuführen, wenn eine virtuelle CPU einen Wartezustand lädt, ist die Verringerung des Aufwands, wenn eine virtuelle CPU häufig zwischen Warten und Ausführen umschalten muss.
-
Ein weiterer Vorteil der Erweiterung besteht darin, dass virtuellen CPUs, die einen Wartezustand verlassen, eine bestimmte verbleibende Dauer der Zeitscheibe garantiert ist. Vor dieser Erfindung gab es Zeiten, in denen eine virtuelle CPU einen Wartezustand bei einer in der Zeitscheibe verbliebenen unbedeutenden Zeitdauer geladen hat. Später, wenn diese virtuelle CPU wieder aktiv wird, erreicht sie das Zeitscheibenende schnell (eventuell, wenn sie gerade das Füllen des Speicher-Cache mit einer beträchtlichen Menge des Speichers des Gastes beendet hat) und riskiert, bevorrechtigt zu werden. Indem gewährleistet wird, dass die virtuelle CPU eine Mindest-Zeitscheibenmenge zur Verfügung hat, wenn sie einen Wartezustand verlässt, hat sie garantiert genügend Zeit, um einen Speicher-Cache zu nutzen, sollte sie wiederholt Verweise auf dieselben Speicherstellen oder auf andere Speicherstellen in der selben Cache-Zeile mit diesen früheren Verweisen vornehmen.
-
Eine Auswirkung der Erweiterung besteht darin, dass eine virtuelle CPU, die in einen Wartezustand übergeht und eine neue Zeitscheibe (und schlechtere Priorität) erhält, in Bezug auf den Zugriff auf die reale CPU länger verzögert werden kann, als dies der Fall wäre, wenn ihre Priorität nicht neu berechnet worden wäre. Das heißt, dass durch Neuberechnung der Priorität und eventuelles Hinausschieben der CPU hinter andere konkurrierende virtuelle CPUs, sie jetzt unter Umständen länger warten müsste, bis sie einen Interrupt empfängt, um den Wartezustand zu beenden, da die Entscheidung getroffen wurde, zunächst andere virtuelle CPUs auszuführen.
-
Wie in 3 dargestellt, kann die oben beschriebene Erweiterung als Verfahren zum Betreiben des Datenverarbeitungssystems 100 verkörpert sein. Das Verfahren beginnt damit, dass bei Operation 301 eine virtuelle CPU zur Ausführung mit einer vollen Zeitscheibe bereit ist und die virtuelle CPU bei Operation 302 verzögert wird, bis die reale CPU verfügbar wird. Sobald die reale CPU verfügbar wird, führt bei Operation 303 ein Steuerprogrammdispatcher des Hypervisors 110 die virtuelle CPU im Emulationsmodus auf der realen CPU aus, bis die reale CPU den Emulationsmodus verlässt und bei Operation 304 die Ausführung in einem Steuerprogramm wieder aufnimmt.
-
Als Nächstes wird bei Operation 305 eine erste Ermittlung dahingehend durchgeführt, ob die virtuelle CPU ihre Zeitscheibe überschritten hat. Falls die virtuelle CPU ihre Zeitscheibe nicht überschritten hat, geht die Steuerung zur Operation 306 über, wobei die virtuelle CPU an diesem Punkt den Rest ihrer aktuellen Zeitscheibe mit Kontrolle behält und anschließend zur Operation 307 übergeht. Bei Operation 307 wird eine zweite Ermittlung dahingehend durchgeführt, ob die virtuelle CPU einen Wartezustand geladen hat. Umgekehrt geht die Steuerung, wenn die virtuelle CPU ihre Zeitscheibe überschritten hat, zur Operation 308 über, wobei die virtuelle CPU an diesem Punkt mit einer vollen Zeitscheibe mit Kontrolle zeitlich neu geplant wird, und geht anschließend zur Operation 307 über.
-
Von der Operation 307 kehrt die Steuerung, wenn die virtuelle CPU keinen Wartezustand geladen hat, zur Operation 302 zurück, wobei die virtuelle CPU verzögert wird, bis eine reale CPU verfügbar wird. Wenn die virtuelle CPU jedoch einen Wartezustand geladen hat, geht die Steuerung zur Operation 309 über, wobei an diesem Punkt eine dritte Ermittlung dahingehend durchgeführt wird, ob die verbleibende Zeitscheibe der virtuellen CPU unter einem vorgegebenen Schwellenwert liegt (z.B. 60 % der Zeitscheibe von 5 ms). Hierbei wird, wenn die verbleibende Zeitscheibe der virtuellen CPU nicht unter dem vorgegebenen Schwellenwert liegt, die virtuelle CPU bei Operation 310 als im Leerlauf befindlich markiert, und die Steuerung geht zur Operation 311 über, wobei an diesem Punkt neue Arbeit für die virtuelle CPU eintrifft. Wenn die verbleibende Zeitscheibe der virtuellen CPU jedoch unter dem vorgegebenen Schwellenwert liegt, wird die virtuelle CPU bei Operation 312 mit einer vollen Zeitscheibe zeitlich neu geplant, bevor die Steuerung zur Operation 310 und anschließend 311 übergeht. Sobald bei Operation 311 neue Arbeit für die virtuelle CPU eintrifft, kehrt die Steuerung in beiden Fällen zur Operation 302 zurück, wobei die virtuelle CPU verzögert wird, bis eine reale CPU verfügbar wird.
-
Gemäß weiteren Ausführungsformen und unter Bezugnahme auf 4 kann der vorgegebene Schwellenwert bei Operation 401 auf verschiedene ausgewählte Werte oder Standardwerte eingestellt werden. Anschließend kann der Hypervisor 110 im Verlauf einer Operation des Datenverarbeitungssystems 100 feststellen, dass der vorgegebene Schwellenwert auf der Grundlage aktueller Leistungsdaten des Datenverarbeitungssystems 100 vorübergehend oder dauerhaft erhöht oder verringert werden muss. Das heißt, dass der Hypervisor 110 bei Operation 402 ermittelt, ob aktuelle Leistungsdaten des Datenverarbeitungssystems 100 anzeigen, dass der vorgegebene Schwellenwert erhöht oder verringert werden muss und die entsprechende Erhöhung oder Verringerung bei Operation 403 ausgeführt wird. Anschließend wird die Ausführung der Operation 309 (siehe 3) in Bezug auf den neuen vorgegebenen Schwellenwert ausgeführt.
-
Gemäß Ausführungsformen versteht es sich, dass eine Erhöhung des vorgegebenen Schwellenwertes einem Fall entsprechen kann, bei dem zum Beispiel die aktuellen Leistungsdaten anzeigen, dass bei Operation 305 zu viele virtuelle CPUs ihre Zeitscheibe überschreiten (siehe 3), anstatt innerhalb des aktuellen Schwellenwertes ein Wartezustand-PSW zu laden. Im Gegensatz hierzu versteht es sich, dass eine Verringerung des vorgegebenen Schwellenwertes einem Fall entsprechen kann, bei denen die aktuellen Leistungsdaten anzeigen, dass ein Überschreiten des Hypervisor-Aufwands auftritt und dadurch das Gesamtverhalten des Datenverarbeitungssystems 100 verlangsamt wird. Selbstverständlich versteht es sich, dass andere Gründe vorliegen können, aus denen die Schwellenwerte unter Umständen erhöht oder verringert werden müssen.
-
Unter Bezugnahme auf 5 wird ein Computerprogrammprodukt 500 bereitgestellt, und es enthält ein computerlesbares Speichermedium 502, bei dem es sich nicht um ein Signal handelt, und Programmanweisungen 504 zum oben beschriebenen Realisieren eines Verfahrens zum Verringern der bevorrechtigten virtueller Maschinen in einer virtualisierten Umgebung.
-
Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die hierin verwendeten Einzahlformen „ein/eine“ und „der/die/das“ schließen auch die Pluralformen ein, sofern dies im Kontext nicht ausdrücklich anderweitig angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „aufweist“ und/oder „aufweisen/aufweisend“ bei Verwendung in der vorliegenden Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Abläufe, Operationen, Elemente und/oder Komponenten bezeichnen, aber das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Abläufe, Operationen, Element-Komponenten und/oder Gruppen davon nicht ausschließen.
-
Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als erschöpfend gedacht oder auf die Erfindung in der offenbarten Form beschränkt. Für den Fachmann sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzbereich und Grundgedanken der Erfindung darstellen würden. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten ein Verständnis dafür zu ermöglichen, dass verschiedene Ausführungsformen der Erfindung mit verschiedenen Modifikationen denkbar sind, die sich für die jeweils beabsichtigte Verwendung eignen.
-
Die im vorliegenden Dokument dargestellten Flussdiagramme bilden lediglich ein Beispiel. Es sind viele Abweichungen von diesem Flussdiagramm oder den Schritten (oder Operationen) möglich, die im vorliegenden Dokument beschrieben sind, ohne vom Gedanken der Erfindung abzuweichen. Beispielsweise können die Schritte in einer anderen Reihenfolge ausgeführt werden, oder es können Schritte hinzugefügt, gelöscht oder abgeändert werden. Alle diese Abweichungen gelten als Teil der beanspruchten Erfindung.
-
Obwohl die bevorzugte Ausführungsform der Erfindung beschrieben wurde, versteht es sich, dass der Fachmann jetzt oder in Zukunft verschiedene Verbesserungen und Erweiterungen vornehmen kann, die in den Schutzbereich der folgenden Ansprüche fallen. Diese Ansprüche sind im Sinne der Aufrechterhaltung des ordnungsgemäßen Schutzes der hierin erstmals beschriebenen Erfindung auszulegen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- „z/Architecture® Principles of Operation“, IBM Publikationsnummer SA22 7832 09, 10. Ausgabe, September 2012, Seiten 1 bis 1568 [0036]