-
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.