DE102013022564B4 - Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler - Google Patents

Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler Download PDF

Info

Publication number
DE102013022564B4
DE102013022564B4 DE102013022564.7A DE102013022564A DE102013022564B4 DE 102013022564 B4 DE102013022564 B4 DE 102013022564B4 DE 102013022564 A DE102013022564 A DE 102013022564A DE 102013022564 B4 DE102013022564 B4 DE 102013022564B4
Authority
DE
Germany
Prior art keywords
hardware
processor
hypervisor
bandwidth
counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013022564.7A
Other languages
English (en)
Inventor
Christopher J. Arges
Joel H. Schopp
Michael T. Strosaker
Nathan D. Fontenot
Jeffrey D. George
Mark Vanderwiele
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
Priority claimed from US13/539,318 external-priority patent/US9183054B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE102013022564B4 publication Critical patent/DE102013022564B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Abstract

Nichtflüchtiges computerlesbares Datenspeichermedium, auf dem ein Computerprogramm gespeichert ist, das durch einen Prozessor ausführbar ist, um einen Hypervisor zu realisieren, wobei auf dem Prozessor ferner eine erste virtuelle Maschine, VM, und eine zweite VM ausgeführt werden, die vom Hypervisor verwaltet werden und vom Hypervisor zur Ausführung auf dem Prozessor geplant werden, wobei das Computerprogramm bewirkt, dass der Hypervisor ein Verfahren durchführt, aufweisend:- wenn die erste VM in einem regelmäßigen Zeitintervall der ersten VM auf dem Prozessor ausgeführt wird, Zurücksetzen eines Bandbreitenzählers am Ende des regelmäßigen Zeitintervalls, der zur Nutzung des Busses für die Hardware-Ressource zugehörig ist, durch eine Hardware-Komponente auf einen ersten Wert, welcher der ersten VM zugehörig ist, und Verringern des Bandbreitenzählers, ohne eine VM oder einen Hypervisor einzubeziehen, jedes Mal, wenn die erste VM auf eine Hardware-Ressource über einen Bus für die Hardware-Ressource zugreift,;- wenn eine zweite VM in einem regelmäßigen Zeitintervall der zweiten VM auf dem Prozessor ausgeführt wird, Zurücksetzen des Bandbreitenzählers am Ende des regelmäßigen Zeitintervalls durch die Hardware-Komponente auf einen zweiten Wert, welcher der zweiten VM zugehörig ist, und Verringern des Bandbreitenzählers, ohne eine VM oder einen Hypervisor einzubeziehen, jedes Mal, wenn die zweite VM auf die Hardware-Ressource über den Bus für die Hardware-Ressource zugreift;- als Reaktion darauf, dass der Bandbreitenzähler einen Schwellenwert erreicht, wenn die erste oder zweite VM auf dem Prozessor in dem regelmäßigen Zeitintervall der entsprechenden ersten oder zweiten VM ausgeführt wird, Ausgeben eines Hardware-Interrupts durch die Hardware-Komponente, der durch den Hypervisor verarbeitet wird, um die Bandbreiten-QoS, Quality of Service, der mit der Hardware-Ressource im Zusammenhang stehenden Busbandbreite aufrechtzuerhalten,- als Reaktion darauf, dass der Hardware-Interrupt ausgegeben wird,- Schalten der zweiten VM anstelle der ersten VM oder ersten VM anstelle der zweiten VM zur Ausführung auf dem Prozessor;- wobei es sich bei der Hardware-Ressource und der Hardware-Komponente jeweils um andere Hardware als den Prozessor handelt,- und wobei der Bandbreitenzähler im Gegensatz zu einem mittels Software realisierten Zähler direkt in Hardware realisiert ist,- nachdem die gegenwärtig geplante VM zugunsten einer neu geplanten VM umgeschaltet werden muss, Kopieren des vorgegebenen Wertes in ein Hardware-Register, das im Gegensatz zu einem mittels Software realisierten Register direkt in Hardware realisiert ist, durch den Hypervisor, wobei das Hardware-Register für die Hardware-Komponente direkt zugriffsfähig ist.

Description

  • Die Erfindung betrifft ein nichtflüchtiges computerlesbares Datenspeichermedium, auf dem ein Computerprogramm gespeichert ist, mit dem ein Hypervisor bei einer Datenverarbeitungseinheit mit mehreren virtuellen Maschinen realisiert wird.
  • Eine Datenverarbeitungseinheit führt normalerweise eine Instanz eines Betriebssystems aus, die Zugriff auf die Hardware-Ressourcen der Datenverarbeitungseinheit hat. Eine als Virtualisierung bekannte Methode ermöglicht einer Datenverarbeitungseinheit jedoch, eine Anzahl von Instanzen von Betriebssystemen auszuführen. Bei der Virtualisierung instanziiert die Datenverarbeitungseinheit eine Reihe derartiger virtueller Maschinen (VMs), und jede VM führt ihre eigene Instanz eines Betriebssystems aus.
  • Aus US 2011/0004875 A1 sind ein Verfahren und ein System zur Leistungsisolierung in virtuellen Umgebungen bekannt. Dabei wird wenigstens eine Ressourcen-Zuordnung für ein oder mehrere Geräte innerhalb einer oder mehrerer Partitionen empfangen und der wenigstens einen Ressourcen-Zuordnung zugewiesen. Daraufhin können eine oder mehrere Transaktionen innerhalb der Partitionen ausgeführt werden.
  • Aus US 2004/0168005 A1 ist ein Verfahren zum Unterbrechen eines Programms bekannt. Dazu wird ein Schwellenwert für einen Leistungszähler einer Hardware eingerichtet, und wenn der Zähler den Schwellenwert erreicht, wird das Programm unterbrochen.
  • Aus DE 10 2008 016 181 A1 ist ein Verfahren und eine Vorrichtung zum Drosseln von Leistungsaufnahme und/oder Verarbeitungsleistung von Verarbeitungselementen basierend auf einer Priorität von Software-Entitäten bekannt. Dabei empfängt eine Prioritätsbewusste Leistungsmanagementlogik Prioritätshöhen von Software-Entitäten und modifiziert dementsprechend Arbeitspunkte von Verarbeitungselementen, die den Software-Entitäten zugeordnet sind.
  • Aus DE 601 22 780 T2 ist ein betriebssystemunabhängiges Verfahren und System zur Bestimmung der CPU-Ausnützung bekannt.
  • Aus US 2009/0007108 A1 ist ein Verfahren zur Abrechnung von Verarbeitungsressourcen, die für eine Aktivität aufgewendet werden, offenbart. Das Verfahren kann die Bestimmung einer von einer Domäne auszuführenden Aufgabe umfassen, wobei die Aufgabe mindestens eine Hardwareressource und mindestens eine Softwareressource verwenden kann
  • Aus US 2009/0028046 A1 ist ein Verfahren und eine Vorrichtung zur Bestimmung von Bandbreitenverbrauchenden Frame Flows in einem Netzwerk bekannt.
  • Ausgehend von diesem Stand der Technik stellt sich die Erfindung die Aufgabe, auf Schwankungen der Bandbreiten-Servicequalität schneller zu reagieren.
  • Diese Aufgabe wird gelöst durch das nichtflüchtige computerlesbare Datenspeichermedium, auf dem ein Computerprogramm gespeichert ist, nach Anspruch 1. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der Unteransprüche.
  • KURZDARSTELLUNG
  • Bei dem auf dem Datenspeichermedium gespeicherten Computerprogramm passt eine Hardware-Komponente jedes Mal, wenn eine gegenwärtig geplante virtuelle Maschine (VM) über die auf einem Prozessor ausgeführte gegenwärtig geplante VM auf eine Hardware-Ressource über einen Bus für die Hardware-Ressource zugreift, einen Bandbreitenzähler an, der zur Nutzung des Busses für die Hardware-Ressource zugehörig ist, ohne die gegenwärtig geplante VM oder einen Hypervisor einzubeziehen, der die gegenwärtig geplante VM verwaltet. Das Verfahren weist als Reaktion darauf, dass der Bandbreitenzähler einen Schwellenwert erreicht, das Ausgeben eines Interrupts durch die Hardware-Komponente auf, der durch den Hypervisor verarbeitet wird, um die Bandbreiten-QoS (QoS = Quality of Service, Servicequalität) der mit der Hardware-Ressource im Zusammenhang stehenden Busbandbreite aufrechtzuerhalten. Bei der Hardware-Ressource und der Hardware-Komponente handelt es sich jeweils um andere Hardware als den Prozessor. Der Bandbreitenzähler ist im Gegensatz zu einem mittels Software realisierten Zähler direkt in Hardware realisiert.
  • Eine Steuereinheit des Hardware-Speichers kann jedes Mal, wenn eine gegenwärtig geplante virtuelle Maschine (VM) über die auf einem Prozessor ausgeführte gegenwärtig geplante VM auf einen Hardware-Speicher über einen Bus für den Hardware-Speicher zugreift, einen Bandbreitenzähler verringern, der zur Nutzung des Busses für die Hardware-Ressource zugehörig ist, ohne die gegenwärtig geplante VM oder einen Hypervisor einzubeziehen, der die gegenwärtig geplante VM verwaltet. Das Verfahren weist als Reaktion darauf, dass der Bandbreitenzähler null erreicht, das Ausgeben eines Interrupts durch die Steuereinheit des Hardware-Speichers auf, der durch den Hypervisor verarbeitet wird, um die Bandbreiten-Servicequalität der mit dem Hardware-Speicher im Zusammenhang stehenden Busbandbreite aufrechtzuerhalten. Der Bandbreitenzähler ist im Gegensatz zu einem mittels Software realisierten Zähler direkt in Hardware realisiert.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
  • Die Erfindung wird im Folgenden beschrieben mit Bezug auf die beigefügte Zeichnung.
    • 1 ist ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems, bei dem die Bandbreiten-Servicequalität (Bandbreiten-Servicequalität) der Hardware-Ressource über einen Hardwarezähler aufrechterhalten wird.
    • 2 ist ein Ablaufplan eines beispielhaften Verfahrens zum Aufrechterhalten der Bandbreiten-Servicequalität der Hardware über einen Hardwarezähler im Datenverarbeitungssystem von 1.
    • 3 ist ein Blockschaltbild eines weiteren beispielhaften Datenverarbeitungssystems, bei dem die Bandbreiten-Servicequalität der Hardware-Ressource über einen Hardwarezähler aufrechterhalten wird, wobei das Datenverarbeitungssystem mit dem Datenverarbeitungssystem von 1 übereinstimmt, aber mehr Einzelheiten aufweist.
    • 4 ist ein Ablaufplan eines beispielhaften Verfahrens zum Aufrechterhalten der Bandbreiten-Servicequalität der Hardware-Ressource über einen Hardwarezähler im Datenverarbeitungssystem von 3, wobei das Verfahren mit dem Verfahren von 2 übereinstimmt, aber mehr Einzelheiten aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie im Abschnitt „Hintergrund“ erwähnt, ist die Virtualisierung eine Methode, mit deren Hilfe eine Datenverarbeitungseinheit mehr als eine Instanz eines Betriebssystems, die als „virtuelle Maschinen (VMs)“ bezeichnet werden, auf derselben Datenverarbeitungseinheit so ausführen kann, als seien mehrere Datenverarbeitungseinheiten vorhanden. Die VMs nutzen normalerweise Hardware-Ressourcen einer bestimmten Datenverarbeitungseinheit wie zum Beispiel Speicher und Prozessoren gemeinsam. Ein VM-Manager (VMM) oder Hypervisor verwaltet die VMs, indem er dafür sorgt, dass sie die Hardware-Ressourcen der Datenverarbeitungseinheit in Übereinstimmung mit bestimmten Einschränkungen, Zuweisungen oder Prioritäten zweckentsprechend gemeinsam nutzen, die allgemein mit dem Oberbegriff oder Ausdruck „Servicequalität“ (Quality of Service, QoS) bezeichnet werden, die den VMs zugeordnet ist.
  • Während bei einer bestimmten Hardware-Ressource wie zum Beispiel beim Hardware-Speicher die Gesamtgröße des Speichers der Datenverarbeitungseinheit reserviert werden kann, die einer bestimmten VM zugewiesen ist, kann ein damit zusammenhängendes Maß, die Busbandbreite für diesen oder im Zusammenhang mit diesem Speicher, nicht so einfach festgelegt werden. Wenn eine VM auf einem Prozessor einer Datenverarbeitungseinheit ausgeführt wird, greift die VM auf Hardware-Speicher über einen Bus zu, über den eine Speichersteuereinheit wie zum Beispiel eine Speicherverwaltungseinheit (Memory Management Unit, MMU) mit sowohl dem Hardware-Speicher als auch dem Prozessor verbunden sein kann. Im Grunde genommen nutzen Zugriffe der VM auf den Speicher aufgrund der Tatsache, dass die VM auf dem betreffenden Prozessor ausgeführt wird, Bandbreite des Busses. Es ist jedoch nur unter Schwierigkeiten zu erreichen, dass jeder VM die entsprechende Bandbreite zugeteilt wird, insbesondere, ohne die VMs selbst in einer kooperativen Weise einzubeziehen und/oder ohne den Hypervisor selbst einzubeziehen. Der Einsatz derartiger Software-orientierter Lösungen zur Verwaltung der Speicherbandbreiten-Servicequalität kann zu einer unerwünschten Verschlechterung der Leistung der VMs führen.
  • Hierin offenbarte Methoden stellen im Gegensatz dazu eine Hardwareorientierte Lösung - und bei mindestens einigen Realisierungsformen tatsächlich eine reine Hardware-Lösung - bereit, um die Busbandbreite im Zusammenhang mit Hardware-Speicher und anderen Hardware-Ressourcen zu verwalten und diese Busbandbreiten-Servicequalität aufrechtzuerhalten. Ein Hardware-Register, auf das eine bestimmte Hardware-Komponente wie zum Beispiel eine Speichersteuereinheit direkt zugreifen kann, ohne Software wie zum Beispiel einen Hypervisor oder eine VM einzubeziehen, kann auf einen vorgegebenen Wert gesetzt werden, der zur VM zugehörig ist, die gegenwärtig zur Ausführung auf einem Prozessor geplant ist. Wenn die VM beginnt, auf dem Prozessor ausgeführt zu werden, oder unmittelbar vor dem Beginn wird der vorbestimmte Wert aus dem Hardware-Register in einen Bandbreitenzähler kopiert. Bei dem Bandbreitenzähler selbst kann es sich um ein anderes Hardware-Register handeln, auf das die betreffende Hardware-Komponente direkt zugreifen kann.
  • Während die VM über einen entsprechenden Bus auf den betreffenden Hardware-Speicher oder eine andere betreffende Hardware-Ressource zugreift, passt die Hardware-Komponente einen zur Nutzung des Busses zugehörigen Bandbreitenzähler an. Eine derartige Anpassung, in die weder die gegenwärtig geplante VM, der Hypervisor, der diese VM verwaltet, noch eine beliebige andere VM einbezogen sind, kann zum Beispiel eine Verringerung sein. Tatsächlich bemerken die VMs möglicherweise nicht und haben möglicherweise keine Kenntnis davon, dass ihre Busbandbreite für die Hardware-Ressource überwacht wird.
  • Wenn das Ablaufen des Bandbreitenzählers vor einem regelmäßigen Zeitintervall von beispielsweise einer Millisekunde einen Schwellenwert erreicht, gibt die Hardware-Komponente einen Interrupt aus. Der Schwellenwert kann für den Fall, dass der Bandbreitenzähler verringert wird, null betragen. Der Hypervisor verarbeitet diesen Interrupt, bei dem es sich normalerweise um einen Hardware-Interrupt handelt, sodass die QoS der mit der betreffenden Hardware-Ressource zusammenhängenden Busbandbreite aufrechterhalten wird. Beispielsweise kann der Hypervisor sogar schon vor Ablauf des regelmäßigen Zeitintervalls die gegenwärtig geplante VM so schalten, dass eine andere VM auf dem Prozessor ausgeführt wird, da die gegenwärtig geplante VM ihre Busbandbreitenzuweisung für das regelmäßige Zeitintervall aufgebraucht hat (entsprechend dem vorbestimmten Wert für die VM, der aus dem Hardware-Register in den Bandbreitenzähler kopiert wurde).
  • Wenn im Vergleich hierzu das regelmäßige Zeitintervall abläuft, ohne dass der Bandbreitenzähler den Schwellenwert erreicht, setzt die Hardware-Komponente den Bandbreitenzähler zurück, indem der für die VM vorgegebene Wert aus dem Hardware-Register in den Bandbreitenzähler kopiert wird. In diesem Fall ist der Hypervisor nicht in das Zurücksetzen des Bandbreitenzählers einbezogen, und die Hardware-Komponente gibt keinen Interrupt aus. Im Grunde genommen wird die Busnutzung für die betreffende Hardware-Ressource vollständig in Hardware über einen Bandbreitenzähler überwacht, der direkt in Hardware realisiert ist (im Gegensatz zu einem mittels Software realisierten Zähler). Daher bezieht die Aufrechterhaltung der QoS den Hypervisor nicht ein, sofern und solange die aktuelle VM ihre zulässige Bandbreite nicht nutzt, was dazu führt, dass die Hardware-Komponente einen Interrupt ausgibt.
  • Dieser Prozess wird wiederholt, bis ein Interrupt erzeugt wird oder der Zeitpunkt erreicht ist, an dem als Teil der normalen Planung für den Prozessor von der aktuellen VM auf eine neue VM umgeschaltet wird, die auf dem Prozessor ausgeführt werden soll. Im letztgenannten Fall kopiert der Hypervisor einen vorgegebenen Wert in das Hardware-Register, der der Busbandbreitenzuweisung der neuen VM entspricht, und der oben beschriebene Prozess wird für die neue VM erneut gestartet, die auf dem Prozessor ausgeführt werden soll, indem der vorgegebene Wert aus dem Hardware-Register in den Bandbreitenzähler kopiert wird, wodurch der Zähler bei jedem über den Bus stattfindenden Zugriff auf die Hardware-Ressourcen angepasst wird, und so weiter. Jede VM kann einen anderen vorgegebenen Wert aufweisen, der ihrer Busbandbreitenzuweisung für die Hardware-Ressource entspricht.
  • Der Hypervisor ist somit lediglich - und bei mindestens zwei Realisierungsformen ausschließlich - zwei Mal einbezogen: wenn die Hardware-Komponente einen Interrupt ausgibt und wenn die gegenwärtig auf dem Prozessor ausgeführte VM auf einen anderen Prozessor umgeschaltet werden soll. Daher erfordern die hierin beschriebenen Methoden, sofern überhaupt, nur einen geringen Aufwand auf Seiten des Hypervisors, da der Hypervisor die Bandbreitennutzung der Hardware-Ressourcen durch die VMs nicht selbst überwacht, während diese Bandbreite verwendet wird; stattdessen erledigt dies die Hardware-Komponente. Des Weiteren müssen die VMs keine Kenntnis davon haben, dass ihre Bandbreitennutzung überwacht wird, und sie haben bei mindestens zwei Realisierungsformen diese Kenntnis tatsächlich nicht.
  • 1 zeigt ein beispielhaftes Datenverarbeitungssystem 100, das auf einer einzigen Datenverarbeitungseinheit wie zum Beispiel auf einem einzigen Computer realisiert oder über mehrere Datenverarbeitungseinheiten wie zum Beispiel mehrere Computer verteilt sein kann. Das Datenverarbeitungssystem 100 weist Hardware 102 und Software 104 auf. Die Software 104 wird wie mithilfe der geschweiften Klammer 105 angezeigt insoweit durch die Hardware 102 umgesetzt, als die Hardware 102 die Software 104 ausführt.
  • Die Hardware 102 des Datenverarbeitungssystems 100 weist mindestens einen Prozessor 106, eine Hardware-Komponente 108 und eine Hardware-Ressource 110 auf. Der Prozessor 106, die Hardware-Komponente 108 und die Hardware-Ressource 110 sind über einen Hardware-Bus 112 physisch untereinander verbunden, der mit der Hardware-Ressource 110 im Zusammenhang steht und/oder für diese vorgesehen ist. Zum Beispiel kann es sich bei der Hardware-Komponente 108 um eine MMU (MMU = Memory Management Unit, Speicherverwaltungseinheit) oder um eine andere Speichersteuereinheit handeln, wenn die Hardware-Ressource 110 ein Hardware-Speicher ist, sodass es sich bei dem Bus 112 um einen Hardware-Speicherbus handelt. Die Hardware 102 kann außer dem Prozessor 106, der Hardware-Komponente 108, der Hardware-Ressource 110 und dem Bus 112, die in 1 abgebildet sind, andere Hardware aufweisen und weist diese in der Regel auch auf. Um nur ein Beispiel zu nennen, können Prozessoren zusätzlich zum Prozessor 106 vorhanden sein.
  • Bei dem Beispiel aus 1 greift der Prozessor 106 über den Hardware-Bus 112 direkt auf die Hardware-Ressource 110 zu. Wenn es sich bei der Hardware-Ressource 110 um Hardware-Speicher handelt, kann eine derartige Realisierungsform als Direktzugriffsspeicher-Ansatz (DMA-Ansatz) (DMA = Direct Memory Access) bezeichnet werden, mit dessen Hilfe der Prozessor 106 auf den Hardware-Speicher zugreift. Bei anderen Realisierungsformen kann der Zugriff durch den Prozessor 106 auf die Hardware-Ressource 110 über die Hardware-Komponente 108 selbst erfolgen. Anzumerken ist, dass der hierin verwendete Terminologieprozessor 106 einen einzelnen Kern eines Mehrkernprozessors aufweisen kann, wobei dieser Kern ein virtueller oder tatsächlicher physischer Prozessorkern ist. Zum Beispiel können einige Prozessoren zwei oder mehrere physische Kerne aufweisen, und jeder physische Kern kann in zwei oder mehrere virtuelle Kerne aufgeteilt sein. Der Fachausdruck „Prozessor“ umfasst demzufolge jeden derartigen physischen Kern und/oder jeden derartigen virtuellen Kern eines Mehrkernprozessors.
  • Die Hardware 102 des Datenverarbeitungssystems 100 weist außerdem einen Bandbreitenzähler 114 auf, den die Hardware-Komponente 108 anpasst, um die Nutzung des Busses 112 zu überwachen, wenn der Prozessor 106 auf die Hardware-Ressource 110 zugreift. Beispielsweise kann die Hardware-Komponente 108 den Bandbreitenzähler 114 jedes Mal verringern, wenn der Prozessor 106 auf die Hardware-Ressource 110 zugreift. Der Bandbreitenzähler 114 kann ein Hardware-Register sein, auf das die Hardware-Komponente 108 ohne Unterstützung oder Einbeziehung beliebiger Software 104 des Datenverarbeitungssystems 100 direkt zugreifen kann. Der Bandbreitenzähler 114 kann ein Teil der Hardware-Komponente 108 selbst oder des Prozessors 106 oder der Hardware-Ressource 110 selbst sein, zum Beispiel in Form eines Hardware-Registers davon, obwohl der Zähler 114 in 1 aus Gründen der Übersichtlichkeit der Veranschaulichung mit einem separaten Bezugszeichen versehen ist.
  • Die Software 104 des Datenverarbeitungssystems 100 weist einen Hypervisor 116 und eine Reihe von VMs 118 wie zum Beispiel mindestens eine VM 118 auf. Der Hypervisor 116 verwaltet die Instanziierung und Löschung der VMs 118 und verwaltet ferner die Planung der VMs 118 zur Ausführung auf dem Prozessor 106. Der Hypervisor 116 wird auch als VMM bezeichnet. Jede virtuelle Maschine 112 ist eine Softwarerealisierung einer tatsächlichen physischen Maschine, d.h. eines Computers oder einer Datenverarbeitungseinheit, die Software ausführt, als würde es sich um eine separate physische Maschine handeln. Jede VM 118 weist normalerweise ihr eigenes Betriebssystem auf, das als Gastbetriebssystem bezeichnet wird und lediglich die VM 118 und keine anderen VMs 118 steuert, die unter Umständen auf demselben betreffenden Host-Datenverarbeitungssystem 110 ausgeführt werden.
  • 2 zeigt ein beispielhaftes Verfahren 200, mit dessen Hilfe die Busbandbreite der Hardware-Ressource 110 innerhalb des Datenverarbeitungssystems 100 zu Servicequalitätszwecken in einer Hardware-orientierten Weise verwaltet wird. Das Verfahren 200 kann innerhalb einer Planungsmethodik arbeiten, bei der der Hypervisor 116 plant, dass unterschiedliche VMs 118 zu unterschiedlichen Zeiten auf dem Prozessor 106 ausgeführt werden. Insbesondere können regelmäßige Zeitintervalle von zum Beispiel jeweils einer Millisekunde vorhanden sein. Der Hypervisor 116 kann planen, dass eine erste VM 118 während X Zeitintervallen auf dem Prozessor 106 ausgeführt wird, worauf eine zweite VM 118 während Y Zeitintervallen auf dem Prozessor 106 ausgeführt wird, und so weiter, wobei X gleich oder ungleich Y sein kann. Wenn jedoch die erste VM 118 ihre zugewiesene Busbandbreite für die Hardware-Ressource 110 innerhalb eines bestimmten Zeitintervalls nutzt, kann der Hypervisor 116 die erste VM 118 ausschalten, sodass die zweite VM 118 früher auf dem Prozessor 106 ausgeführt wird, bevor der Prozessor 106 seine X Zeitintervalle der Prozessorzeit genutzt hat.
  • Auf diese Weise plant der Hypervisor 116 die Ausführung einer VM 118 auf dem Prozessor 106 (202). Diese VM 118 wird als „gegenwärtig geplante VM 118“ bezeichnet. Ein vorgegebener Wert für die gegenwärtig geplante VM 118 wird in den Bandbreitenzähler 114 (204) kopiert. Der vorgegebene Wert ist zur gegenwärtig geplanten VM 118 zugehörig und entspricht dem Betrag der Bandbreite des Busses 112, die die VM 118 während jedes regelmäßigen Zeitintervalls nutzen darf, während die VM 118 beim Zugreifen auf die Hardware-Ressource 110 auf dem Prozessor 106 ausgeführt wird. Das heißt, dass der vorgegebene Wert während jedes regelmäßigen Zeitintervalls der Busbandbreiten-Servicequalität der gegenwärtig geplanten VM 118 für die Hardware-Ressource 110 entspricht. Somit beginnt ein regelmäßiges Zeitintervall (206).
  • Jedes Mal, wenn die gegenwärtig geplante VM 118 während der Ausführung auf dem Prozessor 106 über den Bus 112 auf die Hardware-Ressource 110 zugreift, passt die Hardware-Komponente 108 den Bandbreitenzähler 114 entsprechend an (208). Wenn der Bandbreitenzähler 114 infolge einer derartigen Anpassung einen Schwellenwert erreicht (210), gibt die Hardware-Komponente 108 einen Interrupt wie zum Beispiel einen Hardware-Interrupt aus (212). Der Interrupt signalisiert dem Hypervisor 116, dass die gegenwärtig geplante VM 118 zugunsten einer anderen, neuen VM 118 (d.h. einer neu geplanten VM 118) auf dem Prozessor 106 ausgeschaltet werden muss, sodass das Verfahren 200 bei Teil 202 wiederholt wird.
  • Wenn jedoch der Bandbreitenzähler 114 den Schwellenwert nicht erreicht hat (210), und wenn das gegenwärtige regelmäßige Zeitintervall noch nicht verstrichen oder abgelaufen ist (214), kehrt das Verfahren 200 zum Teil 208 zurück. Wenn der Bandbreitenzähler 114 während des gegenwärtigen regelmäßigen Zeitintervalls den Schwellenwert nicht erreicht, geht das Verfahren 200 von Teil 210 zu Teil 214 und dann zu Teil 216 über. Wenn es noch nicht an der Zeit ist, eine neue VM 118 (d.h. eine neu geplante VM 118) zur Ausführung auf dem Prozessor 106 zu planen, setzt die Hardware-Komponente 108 den Bandbreitenzähler 114 auf den für die gegenwärtig geplante VM 118 vorgegebenen Wert zurück (218), und das Verfahren 200 kehrt zum Teil 206 zurück, wobei ein neues regelmäßiges Zeitintervall beginnt.
  • An sich wird zu einem bestimmten Zeitpunkt der Moment kommen, auf dem Prozessor 106 eine neue VM 118 zur Ausführung auf dem Prozessor 106 zu planen, wenn die gegenwärtig geplante VM 118 nie ihre QoS für die mit der Hardware-Ressource 110 zusammenhängende Busbandbreite überschreitet, sodass der Bandbreitenzähler 114 während eines beliebigen Zeitintervalls bei Ausführung dieser VM 118 auf dem Prozessor 106 nie den Schwellenwert erreicht. Zu diesem Zeitpunkt geht das Verfahren 200 von Teil 216 zu Teil 212 über, bei dem die Hardware-Komponente 108 einen Hardware-Interrupt ausgeben kann, der dem Hypervisor 116 außerdem signalisiert, dass es Zeit ist, die VM 118 auszuschalten, die auf dem Prozessor 106 ausgeführt wird. Beispielsweise wird in dem oben aufgeführten Beispiel, bei dem eine erste VM 118 zur Ausführung auf dem Prozessor 106 während X regelmäßigen Zeitintervallen geplant ist, die erste VM 118 auf dem Prozessor 106 zugunsten der zweiten VM 118 ausgeschaltet, sobald X derartige Intervalle abgelaufen sind, ohne dass die erste VM 118 während eines beliebigen vorgegebenen Intervalls ihre Busbandbreiten-Servicequalität aufgebraucht hat.
  • Anzumerken ist daher, dass mit Ausnahme des Falles, dass der Hypervisor 116 eine VM 118 zur Ausführung auf dem Prozessor 106 planen muss, während der Überwachung der Busbandbreitennutzung für die gegenwärtig auf dem Prozessor 106 ausgeführte VM 118 keine Software einbezogen ist, während diese VM 118 über den Bus 112 auf die Hardware-Ressource 110 zugreift. Insbesondere sind weder der Hypervisor 116 noch beliebige der VMs 118 einbezogen. Lediglich Hardware ist in die Überwachung dieser Bandbreitennutzung einbezogen, insbesondere die Hardware-Komponente 108, die den Bandbreitenzähler 114 anpasst, der direkt in Hardware realisiert ist und auf den die Komponente 108 direkt zugreifen kann. Wenn ein regelmäßiges Zeitintervall endet und es noch nicht an der Zeit ist, eine neue VM 118 zur Ausführung auf dem Prozessor 106 zu planen, setzt die Hardware-Komponente 108 ohne Einbeziehung jeglicher Software den Bandbreitenzähler 114 in Teil 218 zurück.
  • Eigentlich ist der Hypervisor 116 zumindest bei einigen Realisierungsformen nur als Reaktion auf die Ausgabe eines Interrupts durch die Hardware-Komponente 108, und allgemeiner ausgedrückt, einbezogen, wenn wie oben erwähnt eine neue VM 118 zur Ausführung auf dem Prozessor 106 geplant werden soll. Ab Teil 210 gibt die Hardware-Komponente 108 bei Teil 212 einen Interrupt aus, um dem Hypervisor 116 zu signalisieren, dass die gegenwärtig ausgeführte VM 118 ihre Bandbreiten-Servicequalität für die Hardware-Ressource 110 pro regelmäßigem Zeitintervall überschritten hat. Ab Teil 216 kann die Hardware-Komponente 108 einen Interrupt ausgeben, um dem Hypervisor 116 zu signalisieren (oder der Hypervisor 116 kann anderweitig Kenntnis davon erlangen), dass die gegenwärtig geplante VM 118 ihre vorgeplante Anzahl regelmäßiger Zeitintervalle auf dem Prozessor 106 nicht vorzeitig beendet hat (im Gegensatz zur derartigen vorzeitigen Beendigung, wenn der Schwellenwert in Teil 210 erreicht ist).
  • Des Weiteren können wie oben erwähnt unterschiedliche VMs 118 unterschiedliche Busbandbreiten-Servicequalität aufweisen, sodass unterschiedliche VMs 118 unterschiedliche vorgegebene Werte aufweisen können, die in Teil 204 in den Bandbreitenzähler 114 kopiert werden und auf die der Bandbreitenzähler 114 in Teil 218 zurückgesetzt wird. Beispielsweise verwalten im Rahmen eines Datenverarbeitung-als-Dienst-Szenarios Auftraggeber oder Kunden ihre eigenen Datenverarbeitungssysteme unter Umständen nicht selbst, sondern bezahlen einen Dienstanbieter dafür, dass er diesen Dienst demselben Auftraggeber oder anderen Auftraggebern als eine oder mehrere VMs 118 bereitstellt. Ein bestimmter Auftraggeber zahlt unter Umständen mehr für eine höhere Bandbreiten-Servicequalität im Zusammenhang mit der betreffenden Hardware-Ressource 110, sodass der VM 118 oder den VMs 118 dieses Auftraggebers ein höherer vorgegebener Wert für den Bandbreitenzähler 114 bereitgestellt wird.
  • Die verschiedenen Teile des Verfahrens 200 sind zur Verdeutlichung der Veranschaulichung in einer bestimmten Reihenfolge abgebildet. In Wirklichkeit können jedoch zumindest einige Teile des Verfahrens 200 stärker ereignisgesteuert sein, als aus der in 2 gezeigten Reihenfolge geschlussfolgert werden kann. Beispielsweise kann das Ereignis, dass der Prozessor 106, auf dem die gegenwärtig geplante VM 118 ausgeführt wird, über den Bus 112 auf die Hardware-Ressource 110 zugreift, die Durchführung des Teils 208 auslösen. Das Ereignis, dass der Bandbreitenzähler 114 den Schwellenwert erreicht, kann die Durchführung des Teils 212 auslösen. Das Ereignis, dass ein regelmäßiges Zeitintervall abläuft, kann die Durchführung des Teils 218 auslösen. Das Ereignis, dass es an der Zeit ist, eine neue VM 118 zur Ausführung auf dem Prozessor 106 zu planen, kann die Durchführung des Teils 212 auslösen.
  • 3 zeigt ein weiteres Beispiel eines Datenverarbeitungssystems 100, das mehr Einzelheiten enthält, aber mit dem in 1 abgebildeten beispielhaften Datenverarbeitungssystem übereinstimmt. In 3 sind die Hardware 102, die Software 104, der Prozessor 106, die Hardware-Komponente 108, der Bus 112, der Hypervisor 116 und die VMs 118 wie in 1 abgebildet. Die Hardware-Ressource 110 ist in 3 jedoch konkreter als Hardware-Speicher 310 gezeigt, bei dem es sich um eine bestimmte Art der Hardware-Ressource 110 handelt. Des Weiteren weist die abgebildete Hardware-Komponente 108 zwei Hardware-Register 320 und 322 auf, in denen der Bandbreitenzähler 114 bzw. ein vorgegebener Wert 324 gespeichert sind. Anders ausgedrückt ist der Bandbreitenzähler 114 als Hardware-Register 320 realisiert.
  • Anzumerken ist, dass andere Realisierungsformen des Datenverarbeitungssystems 100 einige, aber nicht alle Aspekte der in 3 enthaltenen ausführlicheren Darstellung der 1 aufweisen können. Zum Beispiel kann der Hardware-Speicher 310 durch eine andere Art von Hardware-Ressource 110 ersetzt sein, aber die Hardware-Register 320 und 322 können wie in 3 abgebildet realisiert sein, oder umgekehrt. Des Weiteren können die Hardware-Register 320 und 322 Teil einer anderen Hardware als der Hardware-Komponente 108 sein, zum Beispiel des Hardware-Speichers 310 selbst, des Prozessors 106, einer anderen Hardware-Ressource 110 oder einer anderen Art von Hardware.
  • In 3 speichert das Hardware-Register 320 demzufolge den Bandbreitenzähler 114, der im Zusammenhang mit den vorhergehenden 1 und 2 beschrieben wurde. Das Hardware-Register 322 speichert den vorgegebenen Wert 324, bei dem es sich um den vorgegebenen Wert 324 handelt, auf den der Bandbreitenzähler 114 gesetzt wird, wenn eine neue VM 118 zur Ausführung auf dem Prozessor 106 geplant wird, und auf den der Bandbreitenzähler 114 am Ende eines regelmäßigen Zeitintervalls zurückgesetzt wird, wenn der vorgegebene Schwellenwert nicht erreicht worden ist. Der Hypervisor 116 kann den vorgegebenen Wert 324 innerhalb des Hardware-Registers 322 setzen, wenn eine neue VM 118 zur Ausführung auf dem Prozessor 106 geplant wird, den die Hardware-Komponente 108 anschließend in den Bandbreitenzähler 114 innerhalb des Hardware-Registers 320 kopieren kann. Im Vergleich hierzu setzt die Hardware-Komponente 108 am Ende des regelmäßigen Zeitintervalls den Bandbreitenzähler 114 innerhalb des Hardware-Registers 320 auf den vorgegebenen Wert 324 innerhalb des Hardware-Registers 322 zurück, wenn der vorgegebene Schwellenwert nicht erreicht worden ist.
  • 4 zeigt das beispielhafte Verfahren 200, mit dessen Hilfe die Busbandbreite des Hardware-Speichers 310 innerhalb des Datenverarbeitungssystems 100 des Beispiels aus 3 zu Servicequalitätszwecken in einer Hardware-orientierten Weise verwaltet wird. In 4 sind die Teile 202, 206, 212, 214 und 216 wie in 2 abgebildet. Teil 204 von 2 wurde in 4 jedoch durch Teil 404 ersetzt, und Teil 418 von 4 kann darüber hinaus als innerhalb von Teil 204 innerhalb von 2 durchgeführt angesehen werden. Teil 208 von 2 wurde durch Teil 408 ersetzt, und Teil 210 wurde in 4 durch Teil 410 ersetzt. Des Weiteren kann Teil 418 von 4 als anstelle von oder für Teil 218 in 2 durchgeführt angesehen werden. Teil 418 von 4 kann daher als innerhalb jedes der Teile 204 und 216 von 2 durchgeführt angesehen werden.
  • Der Hypervisor 116 plant eine VM 118 zur Ausführung auf dem Prozessor 106 (202). Der Hypervisor 116 kopiert (404) ferner den vorgegebenen Wert, der der Busbandbreiten-Servicequalität dieser gegenwärtig geplanten VM 118 für den Hardware-Speicher 310 entspricht, als vorgegebenen Wert 342 in das Hardware-Register 322. Bevor oder wenn ein regelmäßiges Zeitintervall beginnt, kopiert die Hardware-Komponente 108 (418), bei der es sich um eine Speichersteuereinheit wie zum Beispiel eine MMU handeln kann, den vorgegebenen Wert 324 aus dem Hardware-Register 322 als Bandbreitenzähler 114 in das Hardware-Register 320. Somit beginnt ein regelmäßiges Zeitintervall (206).
  • Jedes Mal, wenn die gegenwärtig geplante VM 118 während der Ausführung auf dem Prozessor 106 über den Bus 112 auf die Hardware-Ressource 310 zugreift, verringert die Hardware-Komponente 108 (408) den Bandbreitenzähler 114 des Hardware-Registers 320 entsprechend. Wenn der Bandbreitenzähler 114 infolge einer derartigen Verringerung einen Schwellenwert von null erreicht (410), gibt die Hardware-Komponente 108 einen Interrupt aus (212). Dieser Interrupt signalisiert dem Hypervisor 116, dass die gegenwärtig geplante VM 118 zugunsten einer anderen, neuen VM 118 (d.h. einer neu geplanten VM 118) auf dem Prozessor 106 ausgeschaltet werden muss, sodass das Verfahren 200 bei Teil 202 wiederholt wird.
  • Wenn jedoch der Bandbreitenzähler 114 des Hardware-Registers 320 noch nicht null erreicht hat (410), und wenn das gegenwärtige regelmäßige Zeitintervall noch nicht verstrichen oder abgelaufen ist (214), kehrt das Verfahren 200 zum Teil 214 zurück. Wenn der Bandbreitenzähler 114 des Hardware-Registers 320 während des gegenwärtigen regelmäßigen Zeitintervalls nicht null erreicht, geht das Verfahren 200 von Teil 410 zu Teil 214 und dann zu Teil 216 über. Wenn es noch nicht an der Zeit zur Planung einer neuen VM 118 (d.h. einer neu geplanten VM 118) ist, die auf dem Prozessor 106 ausgeführt werden soll, setzt die Hardware-Komponente 108 den Bandbreitenzähler 114 des Hardware-Registers 320 auf den für die gegenwärtig geplante VM 118 vorgegebenen Wert 324 zurück. Das heißt, dass das Verfahren 200 zu Teil 418 zurückkehrt, bei dem die Hardware-Komponente 108 den vorgegebenen Wert 324 erneut aus dem Hardware-Register 322 in das Hardware-Register 320 kopiert, um den Bandbreitenzähler 114 zurückzusetzen. Das Verfahren 200 wird anschließend fortgesetzt, wobei bei Teil 206 ein neues regelmäßiges Zeitintervall beginnt.
  • 4 stellt somit 2 auf mindestens folgende Arten ausführlicher dar. Erstens betrifft das im Zusammenhang mit 4 beschriebene Verfahren 200 das Datenverarbeitungssystem 100 im Beispiel aus 3 im Gegensatz zu dem Beispiel aus 1, bei dem es sich um das im Zusammenhang mit 2 beschriebene Verfahren 200 handelt. Zweitens stellt das im Zusammenhang mit 4 beschriebene Verfahren 200 das Kopieren des für eine VM 118 vorgegebenen Wertes in Teil 204 von 2 bereit, indem der vorgegebene Wert 324 in Teil 404 in das Hardware-Register 322 kopiert und anschließend dieser vorgegebene Wert 324 in Teil 418 als Bandbreitenzähler 114 aus dem Hardware-Register 322 in das Hardware-Register 320 kopiert wird. Ebenso stellt das im Zusammenhang mit 4 beschriebene Verfahren 200 drittens in Teil 218 von 2 das Zurücksetzen des Bandbreitenzählers 114 bereit, in dem ebenfalls in Teil 418 der vorgegebene Wert 324 als Bandbreitenzähler 114 aus dem Hardware-Register 322 in das Hardware-Register 320 kopiert wird. Wie bei der ausführlicheren Darstellung der 1 mithilfe von 3 kann jedoch die ausführlichere Darstellung von 2 mithilfe von 4 einige, aber nicht alle Aspekte von 4 aufweisen.
  • Anzumerken ist, wie Fachleuten klar sein wird, dass Aspekte der vorliegenden Erfindung in Form eines Systems, Verfahrens oder Computerprogrammprodukts verkörpert sein können. Dementsprechend können Aspekte der Ausführungsformen der vorliegenden Erfindung die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte miteinander kombiniert, die hier allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet wird. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu den konkreteren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich, ohne darauf beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann. Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, Lichtwellenleitern, HF usw., oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Im Allgemeinen weist ein Computerprogrammprodukt ein computerlesbares Medium auf, auf dem ein oder mehrere Computerprogramme gespeichert sind. Die Ausführung der Computerprogramme von dem computerlesbaren Medium durch einen oder mehrere Prozessoren einer oder mehrerer Hardwareeinheiten bewirkt, dass ein Verfahren durchgeführt wird. Beispielsweise kann das durchzuführende Verfahren eines oder mehrere der Verfahren sein, die oben beschrieben wurden.
  • Die Computerprogramme selbst weisen Computerprogrammcode auf. Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C“ oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Aspekte der vorliegenden Erfindung wurden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Erfindung. Dementsprechend kann jeder einzelne Block im Ablaufplan bzw. in den Blockschaltbildern ein Modul, ein Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Außerdem sollte beachtet werden, dass bei einigen alternativen Realisierungsformen die im Block angegebenen Funktionen in einer anderen als der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschaltbilder und/oder des dargestellten Ablaufplans sowie Kombinationen von Blöcken in den dargestellten Blockschaltbildern und/oder im dargestellten Ablaufplan mithilfe von bestimmten Zwecken dienenden, hardwaregestützten Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus bestimmten Zwecken dienender Hardware und Computeranweisungen realisiert werden kann bzw. können.

Claims (4)

  1. Nichtflüchtiges computerlesbares Datenspeichermedium, auf dem ein Computerprogramm gespeichert ist, das durch einen Prozessor ausführbar ist, um einen Hypervisor zu realisieren, wobei auf dem Prozessor ferner eine erste virtuelle Maschine, VM, und eine zweite VM ausgeführt werden, die vom Hypervisor verwaltet werden und vom Hypervisor zur Ausführung auf dem Prozessor geplant werden, wobei das Computerprogramm bewirkt, dass der Hypervisor ein Verfahren durchführt, aufweisend: - wenn die erste VM in einem regelmäßigen Zeitintervall der ersten VM auf dem Prozessor ausgeführt wird, Zurücksetzen eines Bandbreitenzählers am Ende des regelmäßigen Zeitintervalls, der zur Nutzung des Busses für die Hardware-Ressource zugehörig ist, durch eine Hardware-Komponente auf einen ersten Wert, welcher der ersten VM zugehörig ist, und Verringern des Bandbreitenzählers, ohne eine VM oder einen Hypervisor einzubeziehen, jedes Mal, wenn die erste VM auf eine Hardware-Ressource über einen Bus für die Hardware-Ressource zugreift,; - wenn eine zweite VM in einem regelmäßigen Zeitintervall der zweiten VM auf dem Prozessor ausgeführt wird, Zurücksetzen des Bandbreitenzählers am Ende des regelmäßigen Zeitintervalls durch die Hardware-Komponente auf einen zweiten Wert, welcher der zweiten VM zugehörig ist, und Verringern des Bandbreitenzählers, ohne eine VM oder einen Hypervisor einzubeziehen, jedes Mal, wenn die zweite VM auf die Hardware-Ressource über den Bus für die Hardware-Ressource zugreift; - als Reaktion darauf, dass der Bandbreitenzähler einen Schwellenwert erreicht, wenn die erste oder zweite VM auf dem Prozessor in dem regelmäßigen Zeitintervall der entsprechenden ersten oder zweiten VM ausgeführt wird, Ausgeben eines Hardware-Interrupts durch die Hardware-Komponente, der durch den Hypervisor verarbeitet wird, um die Bandbreiten-QoS, Quality of Service, der mit der Hardware-Ressource im Zusammenhang stehenden Busbandbreite aufrechtzuerhalten, - als Reaktion darauf, dass der Hardware-Interrupt ausgegeben wird, - Schalten der zweiten VM anstelle der ersten VM oder ersten VM anstelle der zweiten VM zur Ausführung auf dem Prozessor; - wobei es sich bei der Hardware-Ressource und der Hardware-Komponente jeweils um andere Hardware als den Prozessor handelt, - und wobei der Bandbreitenzähler im Gegensatz zu einem mittels Software realisierten Zähler direkt in Hardware realisiert ist, - nachdem die gegenwärtig geplante VM zugunsten einer neu geplanten VM umgeschaltet werden muss, Kopieren des vorgegebenen Wertes in ein Hardware-Register, das im Gegensatz zu einem mittels Software realisierten Register direkt in Hardware realisiert ist, durch den Hypervisor, wobei das Hardware-Register für die Hardware-Komponente direkt zugriffsfähig ist.
  2. Nichtflüchtiges computerlesbares Datenspeichermedium nach Anspruch 1, bei dem das Verfahren als Reaktion darauf, dass der Hardware-Interrupt durch die Hardware-Komponente ausgegeben wird, ferner aufweist: - Kopieren des ersten oder zweiten Wertes in ein Hardware-Register, das im Gegensatz zu einem mittels Software realisierten Register direkt in Hardware realisiert ist, wobei das Hardware-Register durch die Hardware-Komponente direkt zugriffsfähig ist.
  3. Nichtflüchtiges computerlesbares Datenspeichermedium nach Anspruch 1, bei dem das Verfahren ferner aufweist: - nachdem eine gegenwärtig geplante VM zugunsten einer neu geplanten VM umgeschaltet werden muss, die jetzt anstelle der gegenwärtig geplanten VM auf dem Prozessor ausgeführt werden soll, Zurücksetzen des Bandbreitenzählers auf einen zur neu geplanten VM zugehörigen vorgegebenen Wert durch den Hypervisor.
  4. Nichtflüchtiges computerlesbares Datenspeichermedium nach Anspruch 1, bei dem der Bandbreitenzähler ein Hardware-Register ist, wobei das Hardware-Register für die Hardware-Komponente direkt zugriffsfähig ist, und/oder - bei dem die Hardware-Ressource ein Hardware-Speicher und die Hardware-Komponente eine Steuereinheit des Hardware-Speichers ist.
DE102013022564.7A 2012-06-30 2013-06-17 Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler Active DE102013022564B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/539,318 2012-06-30
US13/539,318 US9183054B2 (en) 2012-06-30 2012-06-30 Maintaining hardware resource bandwidth quality-of-service via hardware counter
US13/780,204 US9183022B2 (en) 2012-06-30 2013-02-28 Maintaining hardware resource bandwidth quality-of-service via hardware counter
US13/780,204 2013-02-28

Publications (1)

Publication Number Publication Date
DE102013022564B4 true DE102013022564B4 (de) 2023-09-28

Family

ID=49754314

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102013211266.1A Active DE102013211266B4 (de) 2012-06-30 2013-06-17 Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE102013022564.7A Active DE102013022564B4 (de) 2012-06-30 2013-06-17 Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102013211266.1A Active DE102013211266B4 (de) 2012-06-30 2013-06-17 Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler

Country Status (2)

Country Link
US (1) US9183022B2 (de)
DE (2) DE102013211266B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011114378A1 (de) * 2011-09-23 2013-03-28 Eads Deutschland Gmbh Zugangssteuerung zu einem gemeinsam exklusiv nutzbaren Übertragungsmedium
US9183054B2 (en) 2012-06-30 2015-11-10 International Business Machines Corporation Maintaining hardware resource bandwidth quality-of-service via hardware counter
US10552186B2 (en) * 2017-05-15 2020-02-04 International Business Machines Corporation Avoiding overloading of network adapters in virtual environments
US11340958B2 (en) 2020-07-08 2022-05-24 Vmware, Inc. Real-time simulation of compute accelerator workloads for distributed resource scheduling

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040168005A1 (en) 2003-02-21 2004-08-26 Sun Microsystems, Inc. Methods for interrupting a program and for obtaining program execution acquisition
DE60122780T2 (de) 2000-12-29 2007-09-13 Intel Corp., Santa Clara Betriebssystemunabhängiges verfahren und system zur bestimmung der cpu-ausnützung
DE102008016181A1 (de) 2007-04-09 2008-12-18 Intel Corporation, Santa Clara Prioritätsbasiertes Drosseln für Leistungsaufnahme-Verarbeitungsleistung-Dienstgüte
US20090007108A1 (en) 2007-06-29 2009-01-01 Hanebutte Ulf R Arrangements for hardware and software resource monitoring
US20090028046A1 (en) 2007-07-25 2009-01-29 Brocade Communications Systems, Inc. Method and apparatus for determining bandwidth-consuming frame flows in a network
US20110004875A1 (en) 2009-07-01 2011-01-06 International Business Machines Corporation Method and System for Performance Isolation in Virtualized Environments

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771358A (en) * 1996-07-15 1998-06-23 Micron Electronics, Inc. Method and system for apportioning computer bus bandwidth
US6996838B2 (en) * 2001-06-12 2006-02-07 Scientific Atlanta, Inc. System and method for media processing with adaptive resource access priority assignment
US7530068B2 (en) * 2003-12-17 2009-05-05 International Business Machines Corporation Method of resource allocation using an access control mechanism
EP1769353A2 (de) 2004-05-21 2007-04-04 Computer Associates Think, Inc. Verfahren und vorrichtung zur dynamischen speicherbetriebsmittelverwaltung
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US8667207B2 (en) 2009-09-30 2014-03-04 Citrix Systems, Inc. Dynamic reallocation of physical memory responsive to virtual machine events
US8826270B1 (en) * 2010-03-16 2014-09-02 Amazon Technologies, Inc. Regulating memory bandwidth via CPU scheduling
US9183054B2 (en) 2012-06-30 2015-11-10 International Business Machines Corporation Maintaining hardware resource bandwidth quality-of-service via hardware counter

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60122780T2 (de) 2000-12-29 2007-09-13 Intel Corp., Santa Clara Betriebssystemunabhängiges verfahren und system zur bestimmung der cpu-ausnützung
US20040168005A1 (en) 2003-02-21 2004-08-26 Sun Microsystems, Inc. Methods for interrupting a program and for obtaining program execution acquisition
DE102008016181A1 (de) 2007-04-09 2008-12-18 Intel Corporation, Santa Clara Prioritätsbasiertes Drosseln für Leistungsaufnahme-Verarbeitungsleistung-Dienstgüte
US20090007108A1 (en) 2007-06-29 2009-01-01 Hanebutte Ulf R Arrangements for hardware and software resource monitoring
US20090028046A1 (en) 2007-07-25 2009-01-29 Brocade Communications Systems, Inc. Method and apparatus for determining bandwidth-consuming frame flows in a network
US20110004875A1 (en) 2009-07-01 2011-01-06 International Business Machines Corporation Method and System for Performance Isolation in Virtualized Environments

Also Published As

Publication number Publication date
DE102013211266B4 (de) 2019-03-14
US20140007096A1 (en) 2014-01-02
US9183022B2 (en) 2015-11-10
DE102013211266A1 (de) 2014-01-02

Similar Documents

Publication Publication Date Title
DE60034170T2 (de) Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher
DE112012000797B4 (de) Mehrfach-Modellierungsparadigma für eine Vorhersageanalytik
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
DE102013022564B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE102012224362B4 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE60125540T2 (de) Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt
DE102006046717B4 (de) Dynamisch migrierende Kanäle
DE112011100098B4 (de) Effiziente Mehrkernverarbeitung von Ereignissen
DE102007051803A1 (de) Verfahren und Vorrichtung zur Datenverarbeitung
EP2093662A1 (de) Verfahren zur Behandlung von Unterbrechungsaufforderungen bei einem Prozessor
DE102013205739A1 (de) Programmgestütztes lastbasiertes verwalten der prozessorbelegung
DE102016203828A1 (de) Auf Zugriffsrechten beruhender Speicherfixierungsmechanismus
DE102014103818A1 (de) Verfahren zum Berechnen der Auslastung einer CPU
DE102021131057A1 (de) System und Verfahren zur Ausführung einer Aufgabe eines Betriebssystems für ein Fahrzeug
DE102019219260A1 (de) Verfahren zum Betreiben einer Recheneinheit
DE102005019631A1 (de) Verfahren zur Prozesssteuerung und entsprechenden Geräten
WO2018091329A1 (de) Vorrichtung und verfahren zum bearbeiten von aufträgen
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
EP3021220A1 (de) Verfahren und Computer zum Zugriff eines Echtzeit-Betriebssystems auf einen AHCI-Controller
DE102017200571A1 (de) Datenverarbeitungseinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R129 Divisional application from

Ref document number: 102013211266

Country of ref document: DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence