DE102016203808A1 - Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung - Google Patents

Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung Download PDF

Info

Publication number
DE102016203808A1
DE102016203808A1 DE102016203808.7A DE102016203808A DE102016203808A1 DE 102016203808 A1 DE102016203808 A1 DE 102016203808A1 DE 102016203808 A DE102016203808 A DE 102016203808A DE 102016203808 A1 DE102016203808 A1 DE 102016203808A1
Authority
DE
Germany
Prior art keywords
virtual
cpu
virtual cpu
time slot
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016203808.7A
Other languages
English (en)
Inventor
Kevin S. ADAMS
Mark J. Lorenc
Donald W. Schmidt
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102016203808A1 publication Critical patent/DE102016203808A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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.

Description

  • 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]

Claims (14)

  1. Verfahren zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung, wobei das Verfahren aufweist: Zuteilen einer virtuellen zentralen Verarbeitungseinheit (Central Processing Unit, CPU) zur Ausführung in einem Emulationsmodus auf einer realen CPU, bis die reale CPU den Emulationsmodus verlässt; Ermitteln, ob die virtuelle CPU einen Wartezustand geladen hat; in einem Fall, bei dem die virtuelle CPU den Wartezustand geladen hat, Ermitteln, ob eine verbleibende Zeitscheibe der virtuellen CPU als Ergebnis des Zuteilens unterhalb eines vorgegebenen Schwellenwertes liegt; und in einem Fall, bei dem die verbleibende Zeitscheibe der virtuellen CPU unterhalb des vorgegebenen Schwellenwertes liegt, zeitliches Neuplanen der virtuellen CPU mit einer vollen Zeitscheibe.
  2. Verfahren nach Anspruch 1, wobei die virtuelle CPU vor dem Zuteilen eine volle Zeitscheibe aufweist und das Zuteilen ein Verzögern des Zuteilens aufweist, bis die reale CPU verfügbar wird.
  3. Verfahren nach Anspruch 1, ferner aufweisend: Ermitteln, ob die virtuelle CPU während des Zuteilens eine Zeitscheibe überschritten hat; in einem Fall, bei dem die virtuelle CPU während des Zuteilens die Zeitscheibe überschritten hat, zeitliches Neuplanen der virtuellen CPU mit einer vollen Zeitscheibe; und in einem Fall, bei dem die virtuelle CPU während des Zuteilens die Zeitscheibe nicht überschritten hat, Veranlassen der virtuellen CPU, den Rest als verbleibende Zeitscheibe zu behalten.
  4. Verfahren nach Anspruch 1, wobei das Verfahren nach dem zeitlichen Neuplanen der virtuellen CPU mit der vollen Zeitscheibe ferner aufweist: Markieren des Leerlaufs der virtuellen CPU; Veranlassen der virtuellen CPU, für neue Arbeit zur Verfügung zu stehen; und Wiederholen des Zuteilens.
  5. Verfahren nach Anspruch 1, ferner aufweisend: Markieren des Leerlaufs der virtuellen CPU; Veranlassen der virtuellen CPU, für neue Arbeit zur Verfügung zu stehen, wenn die verbleibende Zeitscheibe der virtuellen CPU nicht unter dem vorgegebenen Schwellenwert liegt; und Wiederholen des Zuteilens.
  6. Verfahren nach Anspruch 1, ferner aufweisend ein Einstellen des vorgegebenen Schwellenwertes auf einen Prozentsatz einer Zeitscheibe.
  7. Verfahren nach Anspruch 6, ferner aufweisend ein Erhöhen oder Verringern des Schwellenwertes gemäß einer Leistungsfähigkeit eines Datenverarbeitungssystems.
  8. Computerprogrammprodukt zum Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, 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 entsprechend einem der Ansprüche 1 bis 7 auszuführen.
  9. Datenverarbeitungssystem, das so gestaltet ist, dass eine Verringerung der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung ausgeführt wird, wobei das Datenverarbeitungssystem aufweist: einen Prozessor; und Speicher; wobei der Prozessor so gestaltet ist, 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.
  10. Datenverarbeitungssystem nach Anspruch 9, wobei die virtuelle CPU vor dem Zuteilen eine volle Zeitscheibe aufweist und das Zuteilen ein Verzögern des Zuteilens aufweist, bis die reale CPU verfügbar wird.
  11. Datenverarbeitungssystem nach Anspruch 9, wobei der Prozessor ferner gestaltet ist, um: zu ermitteln, ob die virtuelle CPU während des Zuteilens eine Zeitscheibe überschritten hat; in einem Fall, bei dem die virtuelle CPU während des Zuteilens die Zeitscheibe überschritten hat, die virtuelle CPU mit einer vollen Zeitscheibe neu zu planen; und in einem Fall, bei dem die virtuelle CPU während des Zuteilens die Zeitscheibe nicht überschritten hat, die virtuelle CPU zu veranlassen, den Rest als verbleibende Zeitscheibe zu behalten.
  12. Datenverarbeitungssystem nach Anspruch 9, wobei der Prozessor nach dem zeitlichen Neuplanen der virtuellen CPU mit der vollen Zeitscheibe gestaltet ist, um: den Leerlauf der virtuellen CPU zu markieren; die virtuelle CPU zu veranlassen, für neue Arbeit zur Verfügung zu stehen; und das Zuteilen zu wiederholen.
  13. Datenverarbeitungssystem nach Anspruch 9, wobei der Prozessor ferner gestaltet ist, um: den Leerlauf der virtuellen CPU zu markieren; die virtuelle CPU zu veranlassen, für neue Arbeit zur Verfügung zu stehen, wenn die verbleibende Zeitscheibe der virtuellen CPU nicht unter dem vorgegebenen Schwellenwert liegt; und das Zuteilen zu wiederholen.
  14. Datenverarbeitungssystem nach Anspruch 9, wobei der Prozessor ferner gestaltet ist, um: den vorgegebenen Schwellenwert auf einen Prozentsatz einer Zeitscheibe einzustellen; und den vorgegebenen Schwellenwert gemäß einer Leistungsfähigkeit eines Datenverarbeitungssystems zu erhöhen oder zu verringern.
DE102016203808.7A 2015-03-10 2016-03-09 Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung Pending DE102016203808A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/642,947 2015-03-10
US14/642,947 US9411629B1 (en) 2015-03-10 2015-03-10 Reducing virtual machine pre-emption in virtualized environment
US14/853,541 US9411630B1 (en) 2015-03-10 2015-09-14 Reducing virtual machine pre-emption in virtualized environment
US14/853,541 2015-09-14

Publications (1)

Publication Number Publication Date
DE102016203808A1 true DE102016203808A1 (de) 2016-09-15

Family

ID=55858984

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016203808.7A Pending DE102016203808A1 (de) 2015-03-10 2016-03-09 Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung

Country Status (4)

Country Link
US (2) US9411629B1 (de)
CN (1) CN105975327B (de)
DE (1) DE102016203808A1 (de)
GB (1) GB2536802B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
CN108241522B (zh) * 2016-12-27 2022-05-17 阿里巴巴集团控股有限公司 虚拟化环境中的睡眠状态切换方法、装置及电子设备
US11126474B1 (en) * 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10474490B2 (en) * 2017-06-29 2019-11-12 Advanced Micro Devices, Inc. Early virtualization context switch for virtualized accelerated processing device
CN107577517B (zh) * 2017-08-22 2020-05-19 华中科技大学 一种面向NUMA内存架构的细粒度vCPU调度方法及系统
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
US20230076488A1 (en) * 2021-09-03 2023-03-09 Microsoft Technology Licensing, Llc Machine-learning-based replenishment of interruptible workloads in cloud environment
CN114327814A (zh) * 2021-12-09 2022-04-12 阿里巴巴(中国)有限公司 任务调度方法、虚拟机、物理主机和存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438704B1 (en) 1999-03-25 2002-08-20 International Business Machines Corporation System and method for scheduling use of system resources among a plurality of limited users
US7500037B2 (en) 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
US8607020B2 (en) * 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
US9201673B2 (en) * 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US8347290B2 (en) 2009-11-16 2013-01-01 Novell, Inc. Monitoring spin locks in virtual machines in a computing system environment
US8533714B2 (en) 2011-05-03 2013-09-10 International Business Machines Corporation Dynamic virtual machine domain configuration and virtual machine relocation management
US20130007322A1 (en) 2011-06-29 2013-01-03 International Business Machines Corporation Hardware Enabled Lock Mediation
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
JP5624084B2 (ja) * 2012-06-04 2014-11-12 株式会社日立製作所 計算機、仮想化機構、及びスケジューリング方法
CN103049332B (zh) * 2012-12-06 2015-05-20 华中科技大学 一种虚拟cpu调度方法
US9778943B2 (en) * 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
CN103729242B (zh) * 2013-12-19 2017-02-08 华为技术有限公司 一种自旋锁抢占调度算法选择方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
„z/Architecture® Principles of Operation", IBM Publikationsnummer SA22 7832 09, 10. Ausgabe, September 2012, Seiten 1 bis 1568

Also Published As

Publication number Publication date
GB2536802B (en) 2018-12-26
CN105975327B (zh) 2019-02-15
US9411629B1 (en) 2016-08-09
US9411630B1 (en) 2016-08-09
GB2536802A (en) 2016-09-28
CN105975327A (zh) 2016-09-28
GB201603739D0 (en) 2016-04-20

Similar Documents

Publication Publication Date Title
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE112010003554B4 (de) Symmetrische Direktmigration von Virtuellen Maschinen
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE102014108249A1 (de) Realisieren erweiterter Fehlerbehandlung für einen gemeinsam genutzten Adapter in einem virtualisierten System
DE102014101633B4 (de) Unterbrechung von Aufgaben zur Verwatlung von Chip-Komponenten
DE102013022299B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE102010001339A1 (de) Verwalten von Anforderungen von Betriebssystemen, die in virtuellen Maschinen ablaufen
DE102013214756A1 (de) Verfahren und vorrichtung zum verbessern des verarbeitungsleistungsvermögens eines mehrkernprozessors
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102014019531A1 (de) Verfahren zum Betrieb einer Steuerungskomponente für ein Luftfahrzeug sowie Steuerungskomponente
DE112015001502T5 (de) Ausstieg aus mehreren Threads in einem Computer
DE112011100098B4 (de) Effiziente Mehrkernverarbeitung von Ereignissen
DE102018114322A1 (de) Architektur und Dienste zur Unterstützung der rekonfigurierbaren Synchronisation in einem Multiprozessorsystem
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE102013022564B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
DE112012004554B4 (de) Serielle Verarbeitung des Zugriffs auf Daten bei Datenverarbeitungsumgebungen mitmehreren Grossrechnern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009440000

Ipc: G06F0015160000