DE102006004838A1 - System und Verfahren zum zeitlichen Planen von Ausführelementen - Google Patents

System und Verfahren zum zeitlichen Planen von Ausführelementen Download PDF

Info

Publication number
DE102006004838A1
DE102006004838A1 DE102006004838A DE102006004838A DE102006004838A1 DE 102006004838 A1 DE102006004838 A1 DE 102006004838A1 DE 102006004838 A DE102006004838 A DE 102006004838A DE 102006004838 A DE102006004838 A DE 102006004838A DE 102006004838 A1 DE102006004838 A1 DE 102006004838A1
Authority
DE
Germany
Prior art keywords
scheduling
group
groups
distribution
processors
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.)
Ceased
Application number
DE102006004838A
Other languages
English (en)
Inventor
Scott A. Fort Collins Rhine
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102006004838A1 publication Critical patent/DE102006004838A1/de
Ceased legal-status Critical Current

Links

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

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

Description

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

Claims (25)

  1. Computersystem, das folgende Merkmale aufweist: eine Mehrzahl von Prozessoren (131); eine Mehrzahl von Gruppen von Ausführelementen (143), wobei ein jeweiliger Anteilparameter (122) für jede Gruppe definiert ist, der eine Menge von Prozessorressourcen darstellt, um Ausführelemente der Gruppe zu unterstützen; eine Softwareroutine (124), 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 (125) 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.
  2. Computersystem gemäß Anspruch 1, bei dem die Softwareroutine mehrere Verteilungen erzeugt.
  3. Computersystem gemäß Anspruch 2, bei dem die Softwareroutine mehrere Verteilungen durch ein Variieren einer Anzahl von Gewichtungen erzeugt, die von einem Anteilparameter erzeugt werden, der zumindest einer der Mehrzahl von Gruppen zugewiesen ist.
  4. Computersystem gemäß Anspruch 3, bei dem die variable Anzahl von Gewichtungen von einem Anteilparameter er zeugt wird, der einer Voreinstellungsgruppe zugewiesen ist.
  5. Computersystem gemäß Anspruch 4, bei dem der Anteilparameter (122) gleich einer Menge von Prozessorressourcen ist, die keinen anderen Gruppen zugewiesen sind.
  6. Computersystem gemäß einem der Ansprüche 2 bis 5, bei dem die Zeitplanungssoftwareroutine zwischen den mehreren Verteilungen abwechselt, um Zeitplanungsdifferenzen zwischen der Mehrzahl von Gruppen zu kompensieren.
  7. Computersystem gemäß einem der Ansprüche 1 bis 6, das ferner folgendes Merkmal aufweist: eine Softwareroutine zum Unterhalten von Zeitplanungsparametern für Ausführelemente der Mehrzahl von Gruppen, wobei jeder Zeitplanungsparameter eine Menge von Prozessorressourcen, die durch ein jeweiliges Ausführelement erhalten werden, relativ zu einem Gruppendurchschnitt anzeigt.
  8. Computersystem gemäß Anspruch 7, bei dem die Zeitplanungssoftwareroutine einen Teilsatz von Ausführelementen der Mehrzahl von Gruppen gemäß den Zeitplanungsparameterwerten einem oder mehreren Prozessoren zuweist, die dem Teilsatz von Ausführelementen zusätzliche Möglichkeiten liefern, Prozessorressourcen in einer Zuteilungsperiode zu erhalten.
  9. Verfahren, das folgende Schritte aufweist: Definieren einer Mehrzahl von Anteilparametern, die eine Menge von Prozessorressourcen darstellen, zum zeitlichen Planen von Ausführelementen einer Mehrzahl von Gruppen (202); Erzeugen einer Mehrzahl von Gewichtungen gemäß einem Ganzzahlpartitionsproblem (IPP) unter Verwendung der Mehrzahl von Anteilparametern (204); Bestimmen einer Verteilung der Gewichtungen über eine Mehrzahl von Prozessoren unter Verwendung eines IPP-Algorithmus (206); und zeitliches Planen von Ausführelementen von Gruppen an der Mehrzahl von Prozessoren unter Verwendung der Verteilung (304).
  10. Verfahren gemäß Anspruch 9, das ferner folgenden Schritt aufweist: Unterhalten von Zeitplanungsparametern für Ausführelemente der Mehrzahl von Gruppen, wobei jeder Zeitplanungsparameter eine Menge von Prozessorressourcen, die durch ein jeweiliges Ausführelement erhalten werden, relativ zu einem Gruppendurchschnitt anzeigt.
  11. Verfahren gemäß Anspruch 10, bei dem das zeitliche Planen folgenden Schritt aufweist: Auswählen von Ausführelementen gemäß den Zeitplanungsparameterwerten für einen oder mehrere Prozessoren (131), die den ausgewählten Ausführelementen zusätzliche Möglichkeiten liefern, Prozessorressourcen in einem Zeitplanungsintervall zu erhalten.
  12. Verfahren gemäß einem der Ansprüche 9 bis 11, bei dem das Erzeugen folgenden Schritt aufweist: Erzeugen von mehreren Gewichtungen von einem Anteilparameter, wenn der Anteilparameter einer Gruppe zugeordnet ist, die zumindest ein Ausführelement mit mehreren Threads aufweist.
  13. Verfahren gemäß Anspruch 12, das ferner folgenden Schritt aufweist: Definieren einer Einschränkung für das IPP, um Threads des Ausführelements mit mehreren Threads an unterschiedlichen Prozessoren zeitlichen zu planen.
  14. Verfahren gemäß einem der Ansprüche 9 bis 13, bei dem das Erzeugen und Bestimmen mehrmals durchgeführt werden, um mehrere Verteilungen zu erzeugen, wobei einer der Anteilparameter auf jede Wiederholung hin in eine unterschiedliche Anzahl von Gewichtungen geteilt wird.
  15. Verfahren gemäß Anspruch 14, bei dem das zeitliche Planen zwischen mehreren Verteilungen abwechselt, um eine fehlende Zeitplanungsperfektion zwischen Gruppen auszugleichen.
  16. Verfahren gemäß Anspruch 14 oder 15, bei dem der Anteilparameter einer Voreinstellungsgruppe zugeordnet ist.
  17. Verfahren gemäß Anspruch 16, bei dem der Anteilparameter eine Menge von Ressourcen darstellt, die nach einer Zuweisung von Anteilparametern an andere Gruppen übrig geblieben sind.
  18. Verfahren gemäß einem der Ansprüche 9 bis 17, bei dem die Ausführelemente virtuelle Prozessoren sind, die jeweilige virtuelle Maschinen (141) unterstützen.
  19. Computersystem, das folgende Merkmale aufweist: 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.
  20. Computersystem gemäß Anspruch 19, bei dem die Mehrzahl von Ressourcenvorrichtungen aus der Liste ausgewählt ist, die Folgendes umfasst: Prozessoren, Vernetzungskarten, Platten-Eingangs-/Ausgangs- (I/O-) Kanäle und kryptographische Vorrichtungen.
  21. Computersystem gemäß Anspruch 19 oder 20, das ferner folgendes Merkmal aufweist: eine Softwareroutine zum Unterhalten von Zeitplanungsparametern für Ausführelemente der Mehrzahl von Gruppen, wobei jeder Zeitplanungsparameter eine Menge von Ressourcenvorrichtungszugriff, der durch ein jeweiliges Ausführelement erhalten wird, relativ zu einem Gruppendurchschnitt anzeigt.
  22. Computersystem gemäß Anspruch 21, bei dem die Zeitplanungssoftwareroutine einen Teilsatz von Ausführelementen der Mehrzahl von Gruppen gemäß den Zeitplanungsparameterwerten einer oder mehreren Ressourcenvorrichtungen zuweist, die dem Teilsatz von Ausführelementen zusätzliche Möglichkeiten liefern, einen Ressourcenvorrichtungszugriff in einer Zuteilungsperiode zu erhalten.
  23. Computersystem, das folgende Merkmale aufweist: 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.
  24. Computersystem gemäß Anspruch 23, das ferner folgendes Merkmal aufweist: eine Einrichtung zum Unterhalten von Zeitplanungsparametern für Ausführelemente der Gruppen, wobei jeder Zeitplanungsparameter eine Menge von Ressourcenvorrichtungszugriff, der durch ein jeweiliges Ausführelement erhalten wird, relativ zu einem Gruppendurchschnitt anzeigt.
  25. Computersystem gemäß Anspruch 24, bei dem die Einrichtung zum zeitlichen Planen einen Teilsatz von Ausführelementen der Gruppen gemäß den Zeitplanungsparameterwerten einer oder mehreren Ressourcenvorrichtungen zu weist, die dem Teilsatz von Ausführelementen zusätzliche Möglichkeiten liefern, einen Ressourcenvorrichtungszugriff in einer Zuteilungsperiode zu erhalten.
DE102006004838A 2005-02-28 2006-02-02 System und Verfahren zum zeitlichen Planen von Ausführelementen Ceased DE102006004838A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/067,852 US20060195845A1 (en) 2005-02-28 2005-02-28 System and method for scheduling executables
US11/067,852 2005-02-28

Publications (1)

Publication Number Publication Date
DE102006004838A1 true DE102006004838A1 (de) 2006-09-07

Family

ID=36848286

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006004838A Ceased DE102006004838A1 (de) 2005-02-28 2006-02-02 System und Verfahren zum zeitlichen Planen von Ausführelementen

Country Status (3)

Country Link
US (1) US20060195845A1 (de)
JP (1) JP4185103B2 (de)
DE (1) DE102006004838A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844968B1 (en) 2005-05-13 2010-11-30 Oracle America, Inc. System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
US7984447B1 (en) * 2005-05-13 2011-07-19 Oracle America, Inc. Method and apparatus for balancing project shares within job assignment and scheduling
US8214836B1 (en) 2005-05-13 2012-07-03 Oracle America, Inc. Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
US20070061813A1 (en) * 2005-08-30 2007-03-15 Mcdata Corporation Distributed embedded software for a switch
US8286170B2 (en) * 2007-01-31 2012-10-09 International Business Machines Corporation System and method for processor thread allocation using delay-costs
US8087028B2 (en) * 2007-03-07 2011-12-27 Microsoft Corporation Computing device resource scheduling
US8046766B2 (en) 2007-04-26 2011-10-25 Hewlett-Packard Development Company, L.P. Process assignment to physical processors using minimum and maximum processor shares
US20090077550A1 (en) * 2007-09-13 2009-03-19 Scott Rhine Virtual machine schedular with memory access control
US8291424B2 (en) * 2007-11-27 2012-10-16 International Business Machines Corporation Method and system of managing resources for on-demand computing
US8245234B2 (en) * 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
US11093235B2 (en) 2015-06-05 2021-08-17 Shell Oil Company System and method for replacing a live control/estimation application with a staged application
US11126641B2 (en) * 2016-02-16 2021-09-21 Technion Research & Development Foundation Limited Optimized data distribution system
US11282027B2 (en) 2019-04-26 2022-03-22 Walmart Apollo, Llc System and method of delivery assignment
CN111732455B (zh) * 2020-06-30 2022-05-31 苏州蓝晶研材料科技有限公司 一种双锡层陶瓷导电材料及其制备方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
JPH05197604A (ja) * 1991-05-21 1993-08-06 Digital Equip Corp <Dec> マルチプロセッサ・コンピュータ及びその動作方法
CA2077061C (en) * 1991-11-22 1998-04-21 Mark J. Baugher Scheduling system for distributed multimedia resources
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5414845A (en) * 1992-06-26 1995-05-09 International Business Machines Corporation Network-based computer system with improved network scheduling system
US5418953A (en) * 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5623404A (en) * 1994-03-18 1997-04-22 Minnesota Mining And Manufacturing Company System and method for producing schedules of resource requests having uncertain durations
US5768389A (en) * 1995-06-21 1998-06-16 Nippon Telegraph And Telephone Corporation Method and system for generation and management of secret key of public key cryptosystem
US6373846B1 (en) * 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5961585A (en) * 1997-01-07 1999-10-05 Apple Computer, Inc. Real time architecture for computer system
US5948065A (en) * 1997-03-28 1999-09-07 International Business Machines Corporation System for managing processor resources in a multisystem environment in order to provide smooth real-time data streams while enabling other types of applications to be processed concurrently
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
GB2332289A (en) * 1997-12-11 1999-06-16 Ibm Handling processor-intensive data processing operations
US6345240B1 (en) * 1998-08-24 2002-02-05 Agere Systems Guardian Corp. Device and method for parallel simulation task generation and distribution
US6295602B1 (en) * 1998-12-30 2001-09-25 Spyrus, Inc. Event-driven serialization of access to shared resources
US6393012B1 (en) * 1999-01-13 2002-05-21 Qualcomm Inc. System for allocating resources in a communication system
US6438704B1 (en) * 1999-03-25 2002-08-20 International Business Machines Corporation System and method for scheduling use of system resources among a plurality of limited users
US6448732B1 (en) * 1999-08-10 2002-09-10 Pacific Steamex Cleaning Systems, Inc. Dual mode portable suction cleaner
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US6868447B1 (en) * 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
EP1182550A3 (de) * 2000-08-21 2006-08-30 Texas Instruments France Aufgabenbasierte Prioritätsarbitrierung
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US6535238B1 (en) * 2001-10-23 2003-03-18 International Business Machines Corporation Method and apparatus for automatically scaling processor resource usage during video conferencing
US7174354B2 (en) * 2002-07-31 2007-02-06 Bea Systems, Inc. System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space
US7437446B2 (en) * 2002-09-30 2008-10-14 Electronic Data Systems Corporation Reporting of abnormal computer resource utilization data
US7007183B2 (en) * 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7178062B1 (en) * 2003-03-12 2007-02-13 Sun Microsystems, Inc. Methods and apparatus for executing code while avoiding interference
US20050149940A1 (en) * 2003-12-31 2005-07-07 Sychron Inc. System Providing Methodology for Policy-Based Resource Allocation
US20060095690A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation System, method, and storage medium for shared key index space for memory regions
US7689993B2 (en) * 2004-12-04 2010-03-30 International Business Machines Corporation Assigning tasks to processors based at least on resident set sizes of the tasks

Also Published As

Publication number Publication date
JP4185103B2 (ja) 2008-11-26
US20060195845A1 (en) 2006-08-31
JP2006244479A (ja) 2006-09-14

Similar Documents

Publication Publication Date Title
DE102006004838A1 (de) System und Verfahren zum zeitlichen Planen von Ausführelementen
US10474501B2 (en) Serverless execution of code using cluster resources
EP3522500B1 (de) Verfahren und system zur mandantenfähigen ressourcenverteilung
DE60307532T2 (de) Paralleles Prozess-Ausführungsverfahren und Mehrprozessorenrechner
DE60221019T2 (de) Verwaltung von serverbetriebsmitteln für hostanwendungen
CN107291546B (zh) 一种资源调度方法及装置
DE102006004839A1 (de) System und Verfahren zum Migrieren virtueller Maschinen bei Clustersystemen
DE102007016060B4 (de) Computerarbeitslastneuverteilung
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
US20060195846A1 (en) Method and system for scheduling jobs based on predefined, re-usable profiles
US6587865B1 (en) Locally made, globally coordinated resource allocation decisions based on information provided by the second-price auction model
CN109857535B (zh) 面向Spark JDBC的任务优先级控制的实现方法及装置
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
Spring et al. Application level scheduling of gene sequence comparison on metacomputers
CN106874115A (zh) 一种虚拟机资源分配方法及分布式虚拟机资源调度系统
CN112463390A (zh) 一种分布式任务调度方法、装置、终端设备及存储介质
DE102020122714A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren
Moulik et al. A deadline-partition oriented heterogeneous multi-core scheduler for periodic tasks
DE19983709B4 (de) Einplanung von Ressourcenanforderungen in einem Computersystem
US8108871B2 (en) Controlling computer resource utilization
Rolia et al. Supporting application quality of service in shared resource pools
DE102020123164A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren
DE102020101940A1 (de) Techniken zur konfiguration eines prozessors zur funktion als mehrere separate prozessoren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection