-
Die
vorliegende Anmeldung bezieht sich allgemein auf ein zeitliches
Planen eines Zugriffs auf Computerressourcen.
-
Viele
Unternehmen haben eine drastische Zunahme der Anzahl von Computern
und Anwendungen erfahren, die in ihren Organisationen verwendet
werden. Wenn ein Geschäftsbereich
in einem Unternehmen eine neue Anwendung einsetzt, ist es möglich, einen
oder mehr eigens vorgesehene Serverplattformen hinzuzufügen, um
die neue Anwendung unterzubringen. Dieser Typ von Umgebung wird
bisweilen als „eine
Anwendung pro Box" bezeichnet.
In dem Maße,
in dem mehr Geschäftsprozesse
digitalisiert werden, führt
einer Umgebung von „einer
Anwendung pro Box" zu
einer unmäßigen Anzahl
von Serverplattformen. Folglich steigen die Verwaltungskosten der
Serverplattformen erheblich. Außerdem
kann der Zeitprozentsatz, den die Serverplattformressourcen tatsächlich verwendet
werden (die Ausnutzungsrate), ziemlich gering sein. Um diese Probleme
anzugehen, haben viele Unternehmen mehrere Anwendungen auf gemeinsame
Serverplattformen zusammengelegt, um die Anzahl von Plattformen
zu verringern und die Systemausnutzungsraten zu erhöhen. Wenn
eine derartige Zusammenlegung erfolgt, wird normalerweise eine Funktionalität bereitgestellt,
um zu bestimmen, wann Anwendungen und andere Ausführelemente
Zugriff auf Prozessorressourcen erhalten. Eine derartige Funktionalität wird normalerweise
als „zeitliches
Planen" (Scheduling) bezeichnet.
-
Es
existiert eine Anzahl von Zeitplanungsalgorithmen verschiedener
Komplexität.
Vielleicht ist die einfachste Zeitplanung der Algorithmus nach dem Schema „wer zuerst
kommt, mahlt zuerst".
Prioritätsbasierte
Algorithmen weisen Prozessen Prioritäten zu, und Prozesse, die die
höchste
Priorität
aufweisen, werden ausgewählt,
um zu geeigneten Zeiten zu laufen. Präemptive Zeitplanungsalgorithmen
können verwendet
werden, um einen Prozess geringerer Priorität von einem Prozessor zu entfernen,
wenn ein Prozessor höherer
Priorität
bereit wird, zu laufen. Round-Robin-(Zyklischer-Umlauf-) Zeitplanungsalgorithmen ermöglichen,
dass ein Prozess bis zum Ablauf eines Zeitintervalls abläuft, und
dann wird ein anderes Ausführelement
ausgewählt,
um auf dem jeweiligen Prozessor zu laufen. Außerdem definieren Zeitplaner
eines gerechten Anteils Prozentsätze
oder Anteile und liefern Prozessen eine Möglichkeit, proportional zu
den definierten Anteilen auf Prozessorressourcen zuzugreifen.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Computersystem und
ein Verfahren mit verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch ein Computersystem gemäß Anspruch 1, 19 oder 23 sowie
ein Verfahren gemäß Anspruch
9 gelöst.
-
Bei
einem Ausführungsbeispiel
weist ein Computersystem eine Mehrzahl von Prozessoren, eine Mehrzahl
von Gruppen von Ausführelementen, wobei
ein jeweiliger Anteilparameter für
jede Gruppe definiert ist, der eine Menge von Prozessorressourcen
darstellt, um Ausführelemente
der Gruppe zu unterstützen,
eine Softwareroutine, die unter Verwendung der Anteilparameter eine
Mehrzahl von Gewichtungen erzeugt und eine Verteilung der Gewichtungen über die
Mehrzahl von Prozessoren erzeugt, wobei die Verteilung einen Teilsatz
von Prozessoren für
jede Gruppe und einen Prozentanteil jedes Prozessors in dem Teilsatz
zum zeitlichen Planen von Ausführelementen
der Gruppe definiert, und eine Zeitplanungssoftwareroutine zum zeitlichen
Planen jedes Ausführelements
der Mehrzahl von Gruppen an einem spezifischen Prozessor der Mehrzahl
von Prozessoren während
eines Zeitplanungsintervalls gemäß der Verteilung
auf.
-
Bei
einem weiteren Ausführungsbeispiel weist
ein Verfahren ein Definieren einer Mehrzahl von Anteilparametern,
die ei ne Menge von Prozessorressourcen darstellen, zum zeitlichen
Planen von Ausführelementen
einer Mehrzahl von Gruppen, ein Erzeugen einer Mehrzahl von Gewichtungen
gemäß einem
Ganzzahlpartitionsproblem (IPP) unter Verwendung der Mehrzahl von
Anteilparametern, ein Bestimmen einer Verteilung der Gewichtungen über eine
Mehrzahl von Prozessoren unter Verwendung eines IPP-Algorithmus
und ein zeitliches Planen von Ausführelementen von Gruppen an
der Mehrzahl von Prozessoren unter Verwendung der Verteilung auf.
-
Bei
einem weiteren Ausführungsbeispiel weist
ein Computersystem eine Mehrzahl von Ressourcenvorrichtungen, eine
Mehrzahl von Gruppen von Ausführelementen,
wobei ein jeweiliger Anteilparameter für jede Gruppe definiert ist,
der eine Zugriffsmenge auf die Mehrzahl von Ressourcenvorrichtungen
darstellt, um Ausführelemente
der Gruppe zu unterstützen,
eine Softwareroutine, die unter Verwendung der Anteilparameter eine
Mehrzahl von Gewichtungen erzeugt und eine Verteilung der Gewichtungen über die
Mehrzahl von Ressourcenvorrichtungen erzeugt, wobei die Verteilung
einen Teilsatz von Ressourcenvorrichtungen für jede Gruppe und einen Prozentanteil
jeder Ressourcenvorrichtung in dem Teilsatz zum zeitlichen Planen
von Ausführelementen
der Gruppe definiert, und eine Zeitplanungssoftwareroutine zum zeitlichen
Planen jedes Ausführelements
der Mehrzahl von Gruppen an einer spezifischen Ressourcenvorrichtung
der Mehrzahl von Ressourcenvorrichtungen gemäß der Verteilung auf.
-
Bei
einem weiteren Ausführungsbeispiel weist
ein Computersystem eine Einrichtung zum Erzeugen einer Verteilung
von Gewichtungen über
eine Mehrzahl von Ressourcenvorrichtungen des Computersystems unter
Verwendung eines Ganzzahlpartitionsproblem- (IPP) Algorithmus, wobei
die Gewichtungen von einer Mehrzahl von Anteilparametern erzeugt
werden, die jeder eine Zugriffsmenge auf die Mehrzahl von Ressourcenvorrichtungen
darstellen, die einer jeweiligen Gruppe von Ausführelementen geliefert werden
soll, wobei die Verteilung einen Teilsatz von Ressourcenvorrichtungen
für jede
Gruppe und einen Prozentanteil jeder Ressourcenvorrichtung in dem
Teilsatz zum zeitlichen Planen von Ausführelementen der Gruppe definiert,
und eine Einrichtung zum zeitlichen Planen jedes Ausführelements der
Gruppen an einer Ressourcenvorrichtung gemäß der Verteilung auf.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
System, das virtuelle Prozessoren an einer Mehrzahl von physischen
Prozessoren zeitlich plant, gemäß einem
repräsentativen
Ausführungsbeispiel;
-
2 ein
Flussdiagramm, das einen IPP-Algorithmus umfasst, der eine oder
mehrere Verteilungen erzeugt, die jede Gruppe von Ausführelementen auf
einen Satz von CPUs abbilden, um Zeitplanungsoperationen zu unterstützen, gemäß einem
repräsentativen
Ausführungsbeispiel;
-
3 ein
Flussdiagramm zum zeitlichen Planen einzelner Aufträge an spezifischen
physischen CPUs gemäß einem
repräsentativen
Ausführungsbeispiel;
und
-
4 eine
Verteilung, die eine Abbildung zwischen Gruppen von Ausführelementen
und einer Mehrzahl von Prozessoren definiert.
-
Einige
repräsentative
Ausführungsbeispiele führen Zeitplanungsoperationen
für anteilbasierte
Arbeitslastgruppen unter Verwendung von Ganzzahlpartitionsproblem-
(IPP) Algorithmen durch. Jeder Gruppe wird ein Parameterwert gegeben,
der einen „Anteil" von Systemressourcen
darstellt, der dieser Gruppe zugewiesen ist. Ein Softwaremodul bildet jede
Gruppe unter Verwendung eines IPP-Algorithmus auf einen o der mehrere
Prozessoren ab. Im einzelnen werden die Gruppenanteile in „Gewichtungen" aufgeteilt, und
die Gewichtungen werden derart an Prozessoren („Bins" bzw. „Behälter") verteilt, dass die Gewichtungen, die
jedem Prozessor zugeordnet sind, in etwa gleich sind.
-
Die
Aufteilung der Anteile in Gewichtungen kann mehrere „virtuelle
Prozessoren" ergeben,
die verwendet werden, um einige der Arbeitslasten zu unterstützen. Falls
z. B. einer Gruppe vier virtuelle CPUs (zentrale Verarbeitungseinheiten)
zugewiesen sind, wobei jede virtuelle CPU etwa 75 Prozent Kapazität einer
physischen CPU aufweist, würde
die Gruppe vier getrennte Gewichtungen von je 75 erzeugen. Die Gewichtungen
entsprechen nicht genau Ressourcenprozentsätzen, da jede CPU mit mehr
oder weniger als 100 Anteilen zeitlich geplant werden kann. Der
tatsächliche
Zeitplanungsprozentsatz für eine
bestimmte CPU wird unter Verwendung der Gesamtgewichtung aller Aufträge bestimmt,
die derzeit auf der CPU laufen.
-
Auch
kann eine Aufteilung des Anteilparameters einer Voreinstellungsgruppe
oder Gruppe niedrigster Priorität
in mehrere Gewichtungen auf einer veränderlichen Basis erfolgen,
um die Wahrscheinlichkeit eines Erreichens einer optimalen Verteilung
von Gewichtungen über
die Prozessoren zu verbessern. Diese Voreinstellungsgruppe kann
verwendet werden, um alle Ressourcenanforderungen zu enthalten,
die keine spezifische Gewichtung oder Priorität aufweisen. Bei einer Implementierung
teilen alle Elemente der Voreinstellungsgruppe die Ressourcen, die
nicht bereits anderen Gruppen zugewiesen sind, gleich auf.
-
Die
Verteilung, die durch den IPP-Algorithmus erzeugt wird, liefert
eine Liste von physischen CPUs für
jede Gruppe und die Prozentanteile dieser CPUs, die die jeweilige
Gruppe bei einem Zeitplanungsintervall erhält. Außerdem wird die Menge an Prozessorzeit,
die jeder Auftrag erhält,
unter Verwendung von Auftragszeitplanungsparametern verfolgt. Bei Aufträgen, die
mehr Prozessorticks in einem Zeitabtastintervall ansammeln, werden
ihre Parameter reduziert. Bei Aufträgen, die weniger als die durchschnittlichen
Prozessorticks ansammeln, werden ihre Parameter inkrementiert. Bei
jedem neuen Zeitplanungsintervall werden Aufträge, die die höchsten Parameterwerte
aufweisen, für
die verfügbaren
physischen CPUs ausgewählt,
die diesen Aufträgen
mehr Prozessorticks liefern (d. h. die ein oder mehr CPUs mit der
geringsten Gesamtzeitplanungsgewichtung). Auch wird, wenn die Zeitplanungsgewichtungen
von zwei CPUs gleich sind, die geringste historische Verwendung
eingesetzt, um die bessere CPU auszuwählen.
-
Unter
jetziger Bezugnahme auf die Zeichnungen zeigt 1 ein
System 100 gemäß einem
repräsentativen
Ausführungsbeispiel.
Das System 100 umfasst ein Host-Betriebssystem 120,
das einen Niedrigebenenzugriff auf eine Hardwareschicht 130 der
Plattform steuert, Bei einem Ausführungsbeispiel umfasst das
Host-Betriebssystem 120 beispielsweise eine Virtualisierungsschicht 121 in
seinem Betriebssystemkern. Die Virtualisierungsschicht 121 erzeugt
Softwarekonstrukte (Logikvorrichtungen), die den physischen Ressourcen
der Hardwareschicht 130 entsprechen. Die Hardwareschicht 130 kann eine
beliebige Anzahl von physischen Ressourcen umfassen, wie z. B. CPUs 131-1 bis 131-N,
einen Speicher 132, Netzwerkschnittstellen 133,
Eingangs-/Ausgangs- (I/O) Schnittstellen 134 und/oder dergleichen.
-
Bei
einem Ausführungsbeispiel
werden jeder virtuellen Maschine 141 virtuelle Ressourcen
(z. B. eine oder mehrere virtuelle CPUs, ein virtueller Speicher,
eine virtuelle Netzwerkschnittstellenkarte, eine virtuelle I/O-Schnittstelle
und/oder dergleichen) zugewiesen. Die Anzahl von virtuellen CPUs
kann die Anzahl von physischen CPUs 131 übersteigen.
Jede virtuelle Maschine 141 wird gemäß ihrer zugewiesenen virtuellen
Ressourcen als ein Prozess auf dem Betriebssystem 120 ausgeführt. Eine
CPU-Virtualisierung kann auf eine Weise erfolgen, dass bewirkt wird,
dass jede virtuelle Maschine 141 auf ihrer eigenen CPU
oder ihrem eigenen Satz von CPUs zu laufen scheint. Die CPU-Virtualisierung
kann durch ein Bereitstellen eines Satzes von Registern, Übersetzungsseitengriffspuffern
und anderer Steuerstrukturen für
jede virtuelle CPU implementiert werden. Dementsprechend ist jede
virtuelle Maschine 141 von anderen virtuellen Maschinen 141 isoliert.
Außerdem
wird jede virtuelle Maschine 141 verwendet, um ein jeweiliges
Gastbetriebssystem (OS) 142 auszuführen. Die virtuellen Ressourcen,
die der virtuellen Maschine 141 zugewiesen werden, erscheinen dem
Gastbetriebssystem 142 als die Hardwareressourcen eines
physischen Servers. Das Gastbetriebssystem 142 kann wiederum
verwendet werden, um eine oder mehr Anwendungen 143 auszuführen.
-
Eine
Zeitplanungsroutine 125 bestimmt, welche ausführbaren
Threads, die den virtuellen Maschinen 141 zugeordnet sind,
auf den jeweiligen Prozessoren 131 ausgeführt werden.
Den ausführbaren Threads
wird die Möglichkeit
gegeben, auf den jeweiligen Prozessoren 131 einen garantierten
Prozentanteil der Zeit abzulaufen. Die Prozentanteile sind teilweise
für ein
gegebenes Zeitplanungsintervall gemäß Gruppen von ausführbaren
Threads definiert. Z. B. kann jede virtuelle Maschine 141 einer
Gruppe zugewiesen sein, und Anteile 122 sind für die verschiedenen
Gruppen definiert. Jeder Anteilparameter stellt eine minimale Menge
an Prozessor-„Ticks" dar, die die virtuellen
Maschinen 141 der jeweiligen Gruppe im Durchschnitt erhalten
sollen.
-
Die
Anteile werden kombiniert mit dem aktuellen Bedarf einer Virtuellmaschinengruppe
in gewichtete Ressourcenanforderungen übersetzt. Ein IPP-Algorithmus 124 verwendet
diese Gewichtungen, um jede Gruppe auf einen Satz von physischen CPUs
abzubilden. Die Abbildung wird als eine Verteilung (in Element 123 gespeichert)
bezeichnet, und für jede
Gruppe enthält
die Abbildung eine Liste von CPUs, wie viele Threads auf jeder ablaufen
und für welchen
Prozentanteil der Zeit. Die Verteilung, die durch den IPP-Algorithmus 124 erzeugt
wird, bewirkt, dass die Gesamtgewichtung, die durch jede CPU bedient
wird, so gleichmäßig wie
möglich
ist.
-
In
einem gegebenen Zeitplanungsintervall bestimmt die Zeitplanungsroutine 125 unter
Verwendung von einer jeweiligen Verteilung 123 und von Zeitplanungsparametern 126,
welches Ausführelement
in jeder Gruppe auf jedem Prozessor 131 läuft. Wie
im Vorhergehenden bereits erwähnt,
definiert die ausgewählte
Verteilung 123 die physischen CPUs, die für jede Gruppe
verfügbar
sind. Unter Verwendung der Zeitplanungsparameter 126 bestimmt
die Zeitplanungsroutine 125, welche spezifischen Threads
von einer jeweiligen Gruppe auf welchen CPUs in dieser Liste für dieses
Intervall laufen werden. Die Zeitplanungsparameter 126 zeigen
den historischen Erhalt von Prozessorticks an, die durch die verschiedenen
Ausführelemente
erhalten werden. Ausführelemente,
die die höchsten
Parameterwerte aufweisen, werden für die besten verfügbaren physischen
CPUs ausgewählt.
Auf einen Abschluss eines Zeitplanungsintervalls hin werden bei
Ausführelementen,
die weniger als die durchschnittlichen Prozessorticks ansammeln,
ihre Parameter inkrementiert, und bei Ausführelementen, die mehr als den Durchschnitt
ansammeln, werden ihre Parameter reduziert.
-
Obwohl
Abbildung und Zeitplanung, die virtuellen Prozessoren zugeordnet
sind, erörtert
worden sind, können
andere repräsentative
Ausführungsbeispiele
verwendet werden, um einen beliebigen Typ von Ausführelement
auf einem beliebigen geeigneten Mehrprozessorcomputersystem zeitlich
zu planen. Außerdem
können
die Abbildung und die Zeitplanung für einen beliebigen Typ von
Zeitscheibenressource auf einem Computer erfolgen (z. B. Vernetzungskarten,
Platten-IO-Kanäle, kryptographische Vorrichtungen
und/oder dergleichen).
-
2 zeigt
ein Flussdiagramm zum Erzeugen einer Abbildung von Gruppen von Softwareaufträgen auf
Prozessoren gemäß einem
repräsentativen
Ausführungsbeispiel. 2 wird
unter Verwendung von Softwarecode oder Anweisungen implementiert,
die von einem geeigneten computerlesbaren Medium gewonnen werden.
Bei Schritt 201 wird eine Mehrzahl von Gruppen definiert,
um eine Mehrzahl von Aufträgen
zu unterstützen.
Bei einem Ausführungsbeispiel
wird jeder Auftrag durch eine jeweilige virtuelle Maschine unterstützt. Jede
virtuelle Maschine weist einen oder mehrere virtuelle Prozessoren
auf. Bei Schritt 202 werden Anteile für die Gruppen definiert. Die
Anteile definieren die Menge an Prozessorressourcen, bei denen die
jeweiligen Gruppen eine Möglichkeit
haben, sie durchschnittlich zu erhalten. Bei einem Ausführungsbeispiel
codieren die Anteile Prozessor-„Ticks", wobei 100 Ticks die gesamte Kapazität eines
einzelnen physischen Prozessors in einer Zeitsekunde darstellen.
Bei einigen Ausführungsbeispielen
wird eine Gruppe niedrigster Priorität oder Voreinstellungsgruppe
definiert, die alle Ticks erhält,
die nicht explizit anderen Gruppen zugewiesen sind. Zum Beispiel
sei angenommen, dass ein Computersystem sechs Aufträge (A, B,
C, D und E) unterstützt
und zwei Prozessoren aufweist (200 Anteile sind insgesamt verfügbar). Auftrag
A wird einer Gruppe „hoher" Priorität zugewiesen
und erhält 80
Anteile. Auftrag B wird einer Gruppe „mittlerer" Priorität zugewiesen und erhält 45 Anteile.
Die Aufträge C,
D und E werden der Voreinstellungsgruppe zugewiesen, und der Voreinstellungsgruppe
werden die verbleibenden 75 Anteile zugewiesen, wobei jede Gruppe
durchschnittlich etwa 25 Anteile erhält. Durch ein Zuweisen von
Ausführelementen
zu Gruppen wird die kombinatorische Komplexität des Ganzzahlpartitionsproblems
merklich verringert.
-
Bei
Schritt 203 wird eine Variable (N) gesetzt, um gleich dem
Minimum von (i) der Anzahl von physischen Prozessoren, die in dem
Computersystem für
Zeitplanungszwecke verfügbar
sind, und (ii) der Anzahl von aktiven Aufträgen in der Voreinstellungsgruppe
zu sein.
-
Bei
Schritt 204 wird der Anteilparameter für die Gruppen in gesonderte
Gewichtungen aufgeteilt. Bei einigen Ausfüh rungsbeispielen wird der Anteilparameter
für die
Voreinstellungsgruppe in N gesonderte gleiche Gewichtungen (oder
in etwa gleiche Gewichtungen, um Rundungsfehler zu berücksichtigen) geteilt.
Unter Verwendung des früheren
Beispiels mit zwei Prozessoren kann auf die erste Iteration hin
der Anteilparameter (75) für
die Voreinstellungsgruppe in eine erste Gewichtung von 37 und eine
zweite Gewichtung von 38 geteilt werden. Bei einigen Ausführungsbeispielen
werden die Anteile der Gruppen zusätzlich in gesonderte Gewichtungen
aufgeteilt, um Aufträge
mit mehreren Threads zu berücksichtigen. Z.
B. sei angenommen, dass Auftrag A unter Verwendung einer virtuellen
Maschine implementiert wird, die zwei virtuelle Prozessoren aufweist.
Die 80 Anteile der Gruppe hoher Priorität können in zwei Gewichtungen von
40 geteilt werden, um die Threads der zwei virtuellen Prozessoren
zu unterstützen.
Wenn eine Gruppe (außer
der Voreinstellungsgruppe) keine Aufträge mit mehrere Threads enthält, wird
eine einzige Gewichtung für
die Gruppe erzeugt, die gleich ihrem Anteilparameter ist.
-
Bei
Schritt 205 werden Einschränkungen definiert, um die Verteilung
von Gewichtungen unter Prozessoren zu beschränken. Die Einschränkungen können automatisch
gemäß einem
Satz von vordefinierten Regeln oder Bedingungen erzeugt werden. Falls
z. B. mehrere Ressourcenanforderungsgewichtungen für einen
Auftrag mit mehreren Threads erzeugt werden, wird eine Einschränkung definiert,
um zu verhindern, dass diese Gewichtungen dem gleichen Prozessor
zugewiesen werden. Einschränkungen
können
für spezifische
Systeme auch manuell definiert werden, z. B. um redundante Softwaremodule
zu trennen, die für
Anwendungen hoher Verfügbarkeit
verwendet werden.
-
Bei
Schritt 206 wird ein IPP-Algorithmus verwendet, um eine
Verteilung der Gewichtungen über eine
Liste von Prozessoren auf eine Weise zu erzeugen, die das optimale
Gleichgewicht der Gewichtungen über
die Prozessoren erreicht. Die Erzeugungsverteilung wird vorübergehend
für eine
weitere Analyse gespeichert (siehe Schritt 210). Bekannte IPP-Algorithmen
können
verwendet werden, wie z. B. das „gierige" bzw. „greedy" Verfahren, bei dem dem „Behälter", der insgesamt die
geringsten vorhergehend zugewiesenen Gewichtungen aufweist, die höchste verbleibende
Gewichtung zugewiesen wird, bis alle Gewichtungen zugewiesen worden
sind. Alternativ dazu kann das „Differenz"-Verfahren verwendet werden, bei dem
eine Zuweisung durch ein Platzieren größter Zahlen in unterschiedlichen
Teilsätzen und
ein Einführen
ihrer Differenz als eine neue Zahl erfolgt. Nachdem alle Zahlen
auf diese Weise zugewiesen worden sind, wird die Verteilung der
ursprünglichen
Gewichtungen durch eine Rückwärtsrekursion
bestimmt. Details bezüglich
der Implementierung von IPP-Algorithmen
sind aus einer Anzahl von Quellen erhältlich. Z. B. wird ein Überblick über IPP-Algorithmen
in dem Artikel „On
the Integer Partitioning Problem: Examples, Intuition and Beyond" von Haikun Zhu,
14. Dezember 2002 gegeben, der hier durch Bezugnahme aufgenommen
ist.
-
Gemäß einigen
Ausführungsbeispielen
werden Lösungen
zuerst unter Verwendung des schnellen gierigen Verfahrens berechnet.
Falls die Lösung nicht
perfekt ist, wird ein Ndimensionales Differenzverfahren verwendet,
und die Lösung
mit der höchsten
Genauigkeit wird ausgewählt.
Die Verteilung von Gewichtungen in die Prozessorbehälter bestimmt
die CPU-Wahlen, die für
jede Gruppe verfügbar
sind. Die Gewichtung, die einem bestimmten Auftrag zugeordnet ist,
geteilt durch die Gesamtgewichtung an einer CPU bestimmt den Teil
dieser CPU, der schließlich bereitgestellt
wird. Es sei darauf hingewiesen, dass eine explizite Abbildung von
spezifischen Threads auf CPUs an dieser Stufe nicht stattgefunden
hat. Stattdessen wurden nur Gruppen von Threads auf einen Satz von
CPUs abgebildet. Außerdem
kann, nachdem eine individuelle Verteilung erzeugt worden ist, ein
logischer Vergleich (in dem Flussdiagramm nicht gezeigt) vorgenommen
werden, um zu bestimmen, ob die Verteilung gültig ist (z. B. ob die Einschränkungen
erfüllt
sind). Falls eine Verteilung nicht gültig ist, kann auf eine weitere
Verwen dung der bestimmten Verteilung verzichtet werden. Alternativ dazu
können
die Einschränkungen
während
der Zuweisung von Gewichtungen an die Prozessorbehälter durch
eine Modifizierung der IPP-Algorithmus-Behälterzuweisungslogik berücksichtigt
werden.
-
Bei
Schritt 207 wird ein logischer Vergleich vorgenommen, um
zu bestimmen, ob die Erzeugungsverteilung perfekt ist (z. B. jedem
Prozessor die gleiche Gesamtgewichtung an geplanter Arbeit zugewiesen
ist). Ist dies der Fall, wird die erzeugte Verteilung gespeichert,
um die Verteilung für
nachfolgende Zeitplanungsoperationen verfügbar zu machen (Schritt 211).
Auch können
vorhergehend berechnete nicht perfekte Verteilungen auf die Erzeugung
einer perfekten Verteilung hin gelöscht werden.
-
Ist
dies nicht der Fall, geht der Prozessfluss zu Schritt 208 über, bei
dem ein weiterer logischer Vergleich vorgenommen wird, um zu bestimmen,
ob die Variable N gleich eins ist. Ist dies nicht der Fall, geht
der Prozessfluss zu Schritt 209 über, bei dem N dekrementiert
wird, und der Prozessfluss kehrt zu Schritt 204 zurück. Dementsprechend
wird die Anzahl von Gewichtungen, die der Voreinstellungsgruppe
zugeordnet sind, verändert,
und die Gewichtungswerte werden verändert. Durch ein Modifizieren
des Ganzzahlpartitionsproblems auf diese Weise und ein erneutes
Lösen des
Problems kann eine Genauigkeit der Verteilung verbessert werden,
und die Wahrscheinlichkeit des Erhaltens einer exakten Verteilung wird
erhöht.
-
Falls
N während
des logischen Vergleichs von Schritt 208 gleich eins ist,
geht der Prozessfluss zu Schritt 210 über. Bei Schritt 210 werden
die gespeicherten Verteilungen untersucht, um die M-besten Verteilungen
zu identifizieren (d. h. die Verteilungen, die die Differenz zwischen
den Gewichtungen, die jedem Prozessor zugewiesen sind, minimieren). Bei
Schritt 211 werden die identifizierten Verteilun gen gespeichert,
um die Verteilungen für
nachfolgende Zeitplanungsoperationen verfügbar zu machen.
-
Bei
einigen repräsentativen
Ausführungsbeispielen
wird der Prozessfluss von 2 hinsichtlich Zeitplanungsoperationen
auf einer relativ seltenen Basis durchgeführt. Insbesondere variieren
die Ergebnisse des Prozessflusses nicht, außer die Anzahl von verfügbaren Prozessoren
verändert
sich oder die Zuweisung von Anteilen an die Gruppen ändert sich. Dementsprechend
verursacht der Prozessfluss von 2 keinen
bedeutsamen Mehraufwand und verringert nicht die Arbeitslastleistung.
-
4 zeigt
eine Verteilung 400, die gemäß dem Flussdiagramm von 2 gemäß einem
repräsentativen
Ausführungsbeispiel
erzeugt werden kann. Es sei angenommen, dass ein System acht Aufträge (A-G)
unterstützt.
Das System umfasst drei Prozessoren, und deshalb sind 300 Anteile
verfügbar (3·100).
Es sei auch angenommen, dass Auftrag A ein Anteilswert von 80 zugewiesen
ist und dass derselbe einer virtuellen Maschine von zwei virtuellen Prozessoren
zugeordnet ist. Es sei auch angenommen, dass den Aufträgen B, C
und D jedem Anteilswerte von 60 zugewiesen sind. Die Aufträge A-D sind Einauftragsgruppen
(I-IV) zugewiesen. Die Aufträge E-G
sind einer Voreinstellungsgruppe (Gruppe V) zugewiesen. Die Voreinstellungsgruppe
erhält
einen Anteilswert von 40, d. h. die Anteilsmenge, die keinen anderen
Gruppen zugewiesen ist (300 – 80 – 60 – 60 – 60). Der
Anteilswert von Gruppe I, die Auftrag A umfasst, wird in zwei Gewichtungen
zerlegt, um die zwei virtuellen Prozessoren zu unterstützen. Es
ist auch eine Einschränkung
definiert, um zu verhindern, dass diese Gewichtungen dem gleichen
physischen Prozessor zugewiesen werden.
-
Der
IPP-Lösungsprozess
für diese
Gewichtungen und die Einschränkung
können
zu der Verteilung 400 führen,
wie dieselbe in 4 gezeigt ist. Die erste Gewichtung
von Gruppe I ist einem Prozessor 1 zugewiesen, und die zweite Gewichtung der
Gruppe I ist einem Prozessor 2 zugewiesen. Die Gewichtung von Gruppe
II, die Gewichtung von Gruppe III und die Gewichtung von Gruppe
IV sind Prozessoren 1, 2 bzw. 3 zugewiesen. In diesem Fall wird
der Anteilswert von Gruppe V nicht in mehrere Gewichtungen zerlegt,
und die einzige Gewichtung von Gruppe V ist einem Prozessor V zugewiesen.
Die Zeitplanung der Ausführelemente
der Gruppen A-G erfolgt dann an den Prozessoren, die in der Verteilung 400 identifiziert
sind.
-
3 zeigt
ein Flussdiagramm zum Durchführen
einer Zeitplanung von einzelnen Aufträgen an spezifischen physischen
CPUs gemäß einem
repräsentativen
Ausführungsbeispiel. 3 ist
unter Verwendung von Softwarecode oder Anweisungen implementiert,
die von einem geeigneten computerlesbaren Medium gewonnen werden.
Z. B. kann eine Zeitplanungssoftwareroutine eines Betriebssystems,
die ansprechend auf Systemunterbrechungen aufgerufen wird, verwendet
werden, um das Flussdiagramm von 3 zu implementieren.
-
Bei
Schritt 301 werden Auftragszeitplanungsparameter gemäß dem Erhalt
von Prozessorticks durch die Aufträge aktualisiert. Bei Aufträgen, die
während
eines Zeitabtastintervalls weniger als einen Gruppendurchschnitt
erhalten, werden ihre Parameter inkrementiert. Bei Aufträgen, die
weniger als einen Gruppendurchschnitt erhalten, werden ihre Parameter
dekrementiert. Bei Parameterwerten, die Aufträgen zugeordnet sind, die inaktiv
sind oder eine geringe Nachfrage aufweisen, kann es möglich sein, dass
dieselben im Laufe der Zeit auf Null absinken.
-
Bei
Schritt 302 werden der oder die Gruppenfehler (falls vorhanden)
berechnet. Bei Schritt 303 wird eine Verteilung ausgewählt, um
jeglichen kumulativen Gruppenfehler zu korrigieren. Insbesondere
kann, falls mehrere Verteilungen erzeugt wurden, weil keine exakte
Verteilung identifiziert wurde, ein Abwechseln zwischen Verteilungen
auf verschiedene Iterationen des Prozessflusses hin erfolgen. Falls
z. B. eine Verteilung A die Gruppe 1 begünstigt und eine Verteilung
B die Gruppe 2 begünstigt,
ermöglicht
ein Abwechseln zwischen den beiden Verteilungen, dass eine Zeitplanung
zwischen Aufträgen auf
eine genauere Weise erfolgt. Falls eine exakte Verteilung identifiziert
wurde, wird die exakte Verteilung verwendet.
-
Bei
Schritt 304 werden die Aufträge in jeder Gruppe gemäß der ausgewählten Verteilung
und unter Verwendung der jeweiligen Auftragszeitplanungsparameter
zeitlich geplant. Speziell werden die Aufträge der Gruppe für jede Gruppe
durch ihre jeweiligen Auftragszeitplanungsparameter geordnet. Die Liste
von CPUs für
die Gruppe, wie dieselbe durch die Verteilung definiert ist, wird
nach „Erwünschtheit" geordnet. Insbesondere
besitzen CPUs, die eine geringere Gesamtzeitplanungsgewichtung aufweisen, eine
größere Erwünschtheit,
da die Verarbeitungskapazität
derartiger CPUs in relativ größere Segmente oder
Abschnitte für
die Ausführelemente
von verschiedenen Gruppen aufgeteilt ist. Falls die Gesamtzeitplanungsgewichtung
von mehreren CPUs gleich ist, kann die historische Verwendung der
CPUs verwendet werden, um die relative Erwünschtheit zu bestimmen. Insbesondere
ist es, wenn eine CPU eine geringere historische Verwendung aufweist,
wahrscheinlicher, dass ein Auftrag seinen zeitlich geplanten Teil
der Verarbeitungskapazität
nicht verwendet, und diese Kapazität kann durch einen anderen
Auftrag verwendet werden.
-
Eine
Abbildung von Gruppen von Ausführelementen
auf Prozessoren unter Verwendung eines IPP-Algorithmus und ein Überwachen
des Erhalts von Verarbeitungsressourcen durch Ausführelemente
ermöglicht,
dass jeder Auftrag in einer jeweiligen Gruppe die gleiche Menge
von Prozessorkapazität erfährt. Dementsprechend
liefern einige repräsentative
Ausführungsbeispiele
einen Zeitplanungsalgorithmus, der wesentlich „gerechter" ist als andere bekannte Mehrprozessorzeitplanungsalgorithmen.
Außerdem
beeinflussen nicht perfekte Verteilungen und Aufträge mit geringer
Nachfrage Auf träge
nur für
eine begrenzte Anzahl von Intervallen. Insbesondere verhindert eine
Abbildung von einzelnen Aufträgen
auf spezifische Prozessoren unter Verwendung der Auftragszeitplanungsparameter,
dass derartige Probleme Zeitplanungsoperationen dauerhaft zum Nachteil eines
Teilsatzes von Aufträgen
versetzen. Fehlende Perfektion zwischen Gruppen kann unter Verwendung
eines Abwechselns zwischen mehreren Verteilungen, die durch den
IPP-Algorithmus erzeugt werden, angegangen werden. Außerdem verursachen einige
repräsentative
Ausführungsbeispiele
durch ein Trennen der Gruppenabbildung von einer Ausführelementzuweisung
relativ geringen Mehraufwand, wodurch die Umleitung von Prozessorressourcen
von Anwendungen auf Zeitplanungsoperationen vermieden wird.