DE4227345A1 - Cachescheduler - Google Patents

Cachescheduler

Info

Publication number
DE4227345A1
DE4227345A1 DE4227345A DE4227345A DE4227345A1 DE 4227345 A1 DE4227345 A1 DE 4227345A1 DE 4227345 A DE4227345 A DE 4227345A DE 4227345 A DE4227345 A DE 4227345A DE 4227345 A1 DE4227345 A1 DE 4227345A1
Authority
DE
Germany
Prior art keywords
processes
affinity
execution
machine
cache
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.)
Granted
Application number
DE4227345A
Other languages
English (en)
Other versions
DE4227345C2 (de
Inventor
Andrew J Valencia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
Sequent Computer Systems Inc
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 Sequent Computer Systems Inc filed Critical Sequent Computer Systems Inc
Publication of DE4227345A1 publication Critical patent/DE4227345A1/de
Application granted granted Critical
Publication of DE4227345C2 publication Critical patent/DE4227345C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Description

Die Erfindung betrifft die Ablaufsteuerung von Prozessen, die auf Computern in einem Mehrprozessor-Computersystem ab­ laufen, insbesondere einen Scheduler, der Erosion im Kontext von Cachedaten berücksichtigt, wenn er entscheidet, in wel­ che Ausführungsschlange ein Prozeß eingereiht werden soll.
Fig. 7 ist ein Blockdiagramm von Hauptuntersystemen eines bekannten symmetrischen Mehrprozessor-Computersystems 10. Beispiele für ein System 10 sind die Modelle S27 und S81 der Serie Symmetry, hergestellt von Sequent Computing Systems, Inc., Beaverton, Oregon. Die Modelle der Serie Symmetry ver­ wenden ein UNIX-Betriebssystem mit in der Programmiersprache C geschriebener Software. Das dem Fachmann wohlbekannte UNIX-Betriebssystem wird von M. Bach im Buch "The Design of the UNIX Operating System", Prentice Hall, 1986 diskutiert. Die dem Fachmann ebenfalls wohlbekannte Programmiersprache C wird von B. Kernighan und D. Ritchie im Buch "The C Pro­ gramming Language", 2. Aufl., Prentice Hall, 1988 beschrie­ ben.
Gemäß Fig. 7 weist das System 10 eine Anzahl N an Computer­ maschinen auf, die mit Maschine 1 p, Maschine 2 p, Maschine 3 p, . . ., Maschine Np (gemeinsam als "Maschinen 1 p-Np" be­ zeichnet) auf. Jede der Maschinen 1 p-Np ist ein Hardware­ computer, der einen Mikroprozessor, wie einen Intel 386, und ein zugehöriges Schaltungssystem aufweist. Das System 10 wird symmetrisches Mehrprozessor-Computersystem genannt, da jede der Maschinen 1 p-Np gleiche Steuerung über das gesam­ te System 10 hat.
Jede der Maschinen 1 p-Np weist einen örtlichen Cachespei­ cher auf, die als Cache 1 p, Cache 2 p, Cache 3 p, . . ., Cache Np bezeichnet werden (gemeinsam als "Caches 1 p-Np" be­ zeichnet). Der Zweck eines Cachespeichers ist der, Speiche­ rung und Zugriff mit hoher Geschwindigkeit betreffend Daten zu erzielen, die einem Prozeß zugeordnet sind, die von einer Maschine ausgeführt wird. Ein Systembus 12 p verbindet die Maschinen 1 p-Np mit einem Haupt-RAM 14 p des Systems 10. Daten, die in einem der Cachespeicher 1 p-Np abgelegt sind, können von der zugehörigen Maschine, dem Cachespeicher einer anderen Maschine, dem Hauptspeicher 14 p, einer von einem Plattencontroller 18 gesteuerten Festplatte oder einer ex­ ternen Quelle, wie Anschlüssen über einen Kommunikationscon­ troller 20, herrühren.
Jeder der Cachespeicher 1 p-Np ist als Assoziativspeicher mit einem Pseudo-LRU (least-resently-used = die längste Zeit nicht benutzt)-Datensatz organisiert. Wenn neue Daten in einen der Cachespeicher eingelesen werden, werden zuvor ge­ speicherte Daten im Cachespeicher nach unten verschoben, bis die Daten aus ihm herausgeschoben werden und dadurch verlo­ rengehen. Selbstverständlich können die Daten in den Haupt­ speicher 14 oder einen anderen Cachespeicher kopiert werden, bevor sie aus dem Cachespeicher herausgeschoben werden. Der Kontext der Cachedaten für einen einer Maschine zugeordneten Prozeß "erodiert", wenn dem Prozeß zugeordnete Daten aus dem Cachespeicher der Maschine herausgeschoben werden.
Ein Scheduler bestimmt, welche Maschine einen Prozeß ausfüh­ ren soll, wobei der Prozeß mit höchster Priorität zunächst ausgeführt wird. Bei einem Mehrprozessorsystem wird das Kon­ zept der Priorität darauf erstreckt, daß die größte Anzahl n prioritätshoher Prozesse auf der Anzahl m verfügbarer Ma­ schinen ausgeführt wird, wobei m = n gilt, wenn nicht minde­ stens eine der Maschinen leerläuft. Im System 10 ist der Scheduler eine Softwarefunktion, die vom UNIX-Betriebssystem ausgeführt wird, die Maschinen und Prozesse zuordnet und die hierfür eine solche Ablaufsteuerung vornimmt, daß die Aus­ führung auf Grundlage der Priorität und der Maschinenverfüg­ barkeit erfolgt. Der Scheduler verwendet drei verschiedene Datenstrukturen, um Prozesse im Ablauf zu steuern: (1) eine globale Ausführungsschlange 34 (Fig. 8), (2) eine globale FPA(floating point accelerator = Fließpunktberechnungsbe­ schleuniger)-Ausführungsschlange und (3) eine Maschinenaffi­ nitäts-Ausführungsschlange 38 (Fig. 9) für jede Maschine. Die globale FPA-Ausführungsschlange stimmt mit der globalen Ausführungsschlange 34 mit der Ausnahme überein, daß die globale FPA-Ausführungsschlange Prozesse aufreihen kann, die FPA-Hardware erfordern.
Fig. 8 veranschaulicht die herkömmliche globale Ausführungs­ schlange 34, wie sie vom System 10 verwendet wird. Gemäß Fig. 8 beinhaltet die globale Ausführungsschlange 34 ein Array qs und eine Bitmaske whichqs. Das Array qs besteht aus 32 Paaren (Schlitzen) von 32-Bit-Wörtern, von denen jedes auf eine damit verbundene Liste zeigt. Die Organisation der Prozesse wird durch die Datenstrukturen festgelegt. Jeder Schlitz weist ein Feld ph_link und ein Feld ph_rlink auf, die Adreßzeiger zeigen, die auf die erste Adresse des ersten Prozesses bzw. die letzte Adresse des letzten Prozesses in einer doppeltzirkularen verbundenen Liste aufgereihter Pro­ zesse zeigen. Die 32 Schlitze sind prioritätsmäßig von 0 bis 31 angeordnet, wie in der linken Seite von Fig. 8 aufgeli­ stet, wobei die Priorität 0 die höchste Priorität ist.
Die Bitmaske whichqs zeigt an, welche Schlitze im Array qs Prozesse enthalten. Wenn ein Schlitz im Array qs einen Pro­ zeß enthält, weist whichqs für diesen Schlitz den Wert "1" auf. Andernfalls hat whichqs für diesen Schlitz den Wert "0", Wenn eine Maschine nach einem auszuführenden Prozeß Ausschau hält, findet sie das whichqs-Bit höchster Priorität mit dem Wert "1" auf und entnimmt der Schlange den Prozeß aus dem zugehörigen Schlitz im Array qs.
Fig. 9 veranschaulicht die vom System 10 verwendete Affini­ tätsausführungsschlange 38. Unter Vorgabebedingung erfolgt, nachdem ein Prozeß ausführbar geworden ist, die Einreihung (d. h. das Hinzufügen) entweder zur globalen Ausführungs­ schlange 34 oder zur globalen FPA-Ausführungsschlange statt in eine Affinitätsausführungsschlange 38. Jedoch kann ein Prozeß "harte Affinität" aufweisen, was bedeutet, daß er nur auf einer besonderen Maschine ausgeführt werden kann. In diesem Fall wird der Prozeß nur in die Affinitätsschlange 38 für diese Maschine eingereiht (statt in die globale Ausfüh­ rungsschlange), bis die Bedingung für harte Affinität auf­ gehoben wird. Selbstverständlich bestehen Zeitspannen, z. B. wenn ein Prozeß inaktiv ist, in denen ein Prozeß mit harter Affinität in keine der Ausführungsschlangen eingereiht wird.
Gemäß Fig. 9 ist jede der Maschinen 1 p-Np mit ihrer eige­ nen Affinitätsausführungsschlange 38 versehen. Jede Affini­ tätsausführungsschlange 38 weist ein Feld e_head und eine Datenstruktur e_tail auf, die die Adreßzeiger auf die erste bzw. letzte Adresse für den ersten und letzten Prozeß in einer doppeltzirkularen verbundenen Liste von Prozessen mit Affinität enthalten. Wenn ein Prozeß harte Affinität zu einer Maschine aufweist, wird er auf FIFO-Weise in die dop­ peltzirkulare verbundene Liste der Affinitätsausführungs­ schlange 38 eingereiht, die der Maschine entspricht. Die IFO-Anordnung jeder verbundenen Liste wird durch Fig. 9 veranschaulicht. Jede der verbundenen Listen der Schlitze der globalen Ausführungsschlange 34, wie sie in Fig. 8 dar­ gestellt ist, weist dieselbe Anordnung wie die verbundene Liste auf, die in Fig. 9 dargestellt ist.
Eine Affinitätsausführungsschlange unterscheidet sich von der globalen Ausführungsschlange 34 in folgender Hinsicht. Zunächst weist die globale Ausführungsschlange 34 32 Schlit­ ze auf und kann demgemäß 32 verbundene Listen aufnehmen. Demgegenüber weist jede Affinitätsausführungsschlange 38 nur einen Schlitz und eine verbundene Liste auf. Zweitens ist, als Folge, daß jede Affinitätsausführungsschlange 38 nur eine verbundene Liste aufweist, die besondere Maschine, die der Affinitätsausführungsschlange 38 zugeordnet ist, darauf beschränkt, daß sie nur denjenigen Prozeß aufnehmen kann, der sich am Kopf der verbundenen Liste befindet, obwohl sich Prozesse mit höherer Priorität im Inneren der verbundenen Liste befinden können. Drittens muß die verbundene Prozeß­ liste geleert werden, bevor die Maschine in der globalen Ausführungsschlange nach zusätzlich auszuführenden Prozessen nachsehen kann. Demgemäß weist die Affinitätsausführungs­ schlange 38 keine Prioritätsstruktur auf und führt Prozesse nach round-robin-Art aus. Viertens können, wie oben ange­ geben, nur Prozesse mit harter Affinität in die Affinitäts­ schlange 38 eingereiht werden.
Wegen der nichtdynamischen Art und der Art mit explizitem Aufruf bei harter Affinität wird diese meistens für Analyse der Leistungsfähigkeit und des Aufbaus besonders vorgesehe­ ner Systemkonfigurationen verwendet. Harte Affinität wird nicht in vielen Kundenkonfigurationen verwendet, da die feh­ lende Flexibilität bei harter Affinität nicht gut zur Kom­ plexität vieler wirklicher Anwendungen paßt.
Die Lebensdauer eines Prozesses kann in verschiedene Stadien unterteilt werden, mit: (1) der Prozeß ist "ausführbar" d. h. der Prozeß wird nicht ausgeführt, steht jedoch zur Ausführung bereit, nachdem der Scheduler den Prozeß aus­ wählt), (2) der Prozeß wird auf einer Maschine ausgeführt, und (3) der Prozeß ruht. Der zweite und der dritte Zustand sind dem Fachmann wohlbekannt und werden im folgenden nicht im einzelnen beschrieben.
Wenn ein Prozeß ausführbar ist, überprüft der Scheduler zu­ nächst, ob er harte Affinität zu einer Maschine hat. Wenn dies der Fall ist, wird er in die verbundene FIFO-Liste der Affinitätsausführungsschlange 38 eingereiht, die der Maschine zugeordnet ist.
Wenn der Prozeß keine harte Affinität zu einer Maschine hat und nicht für FPA-Hardware gekennzeichnet ist, wird der Pro­ zeß in eine der verbundenen Listen des Arrays qs in der glo­ balen Ausführungsschlange 34 abhängig von der Priorität des Prozesses eingereiht. Das passende Bit in der Bitmaske whichqs wird aktualisiert, falls erforderlich. Wenn der Pro­ zeß keine harte Affinität aufweist, sich jedoch selbst mar­ kiert hat, daß er FPA-Hardware erfordert, wird er in eine der verbundenen Listen von fpa_qs in der globalen FPA-Aus­ führungsschlange eingereiht, und das geeignet Bit in fpa_whichqs wird aktualisiert, falls erforderlich, wobei fpa_qs und fpa_whichqs analog zu qs und whichqs sind.
Wenn sich eine Maschine nach einem auszuführenden Prozeß um­ sieht, überprüft sie zunächst ihre Affinitätsausführungs­ schlange 38. Wenn diese einen Prozeß enthält, wird der erste Prozeß der verbundenen Liste der Schlange entnommen und aus­ geführt. Wenn die Affinitätsausführungsschlange 38 für eine besondere Maschine leer ist, untersucht der Scheduler die Bitmasken whichqs der globalen Ausführungsschlange 34 und fpa_whichqs der globalen FPA-Ausführungsschlange, um zu er­ mitteln, ob Prozesse aufgelistet sind und, falls ja, mit welchen Prioritäten. Der Prozeß mit höherer Priorität wird als erster ausgeführt. Wenn die höchsten Prioritäten in den Bitmasken whichqs der globalen Ausführungsschlange 34 und fpa_whichqs in der globalen FPA-Ausführungsschlange gleich sind, wird der Prozeß im FPA-Format als erster ausgeführt.
Ein Ziel des Systems 10 liegt darin, einen linear ansteigen­ den Wert der Leistungsfähigkeit (d. h. der Informationsver­ arbeitungskapazität pro Zeiteinheit) zu erzielen, wenn Ma­ schinen und Plattenlaufwerke hinzugefügt werden. Ein Hinder­ nis zum Erreichen dieses Ziels tritt dann auf, wenn die Bus­ bandbreite (Bytes pro Zeiteinheit) nicht dazu ausreicht, frei fließende Datenübertragung zwischen Untersystemelemen­ ten zuzulassen. Eine Lösung könnte darin bestehen, die Band­ breite des Systembusses 12 p zu erhöhen. Jedoch wird die Bandbreite des Systembusses 12 p durch die Abmessung des Ge­ häuses und durch Verbinderspezifikationen beschränkt.
Die Schwierigkeit in Zusammenhang mit nicht ausreichender Bandbreite ist ärgerlich, da es das System 10 dem Kunden er­ laubt, zusätzliche Plattenlaufwerke und Maschinen hinzuzufü­ gen, um die Anzahl Np zu erhöhen, nachdem sich das System in Gebrauch befindet. Zusätzlich können innerhalb des Systems 10 die Maschinen 1 p-Np und die Plattenlaufwerke durch Ma­ schinen und Plattenlaufwerke höherer Leistungsfähigkeit er­ setzt werden. Erhöhte Maschinenleistungsfähigkeit erhöht die Anzahl von Anweisungen, die pro Zeitschlitz des Betriebssy­ stems verarbeitet werden können. Dies wiederum erfordert größere Cachespeicher auf den Prozessorplatinen, um den Ver­ kehr Speicher-Prozessor auf dem Hauptsystembus zu verrin­ gern. Jedoch nimmt der Busverkehr Cache-Cache gemeinsam mit der Cachegröße zu, wodurch dieser Anstrengung entgegenge­ wirkt wird. Entsprechend erhöht das Hinzufügen weiterer Plattenlaufwerke die Anforderungen an die Bandbreite für Platten-Eingabe/Ausgabe und für die Kapazität auf dem Bus.
Wenn ein Prozeß von einer vorigen Maschine auf eine neue Maschine bewegt wird, ist mit dieser Übertragung ein gewis­ ser Aufwand verbunden. Ströme von Cachedaten bewegen sich von der einen Maschine zur anderen, und einige Daten werden aus dem Hauptspeicher 14 kopiert. Bestimmte Verkehrslasten, insbesondere Datenbasisverkehrslasten, können zu einer Bus­ sättigung führen, die die Leistungsfähigkeit des Gesamtsy­ stems verringert. Daten werden über den Systembus 12 p über­ tragen, wenn sie vom Hauptspeicher 14 p oder vom vorigen Cachespeicher auf die neue Maschine und den neuen Cachespei­ cher umgeschaltet werden. Jedesmal dann, wenn ein Prozeß aus der globalen Ausführungsschlange ausgeführt wird, beträgt jedoch die Chance, daß der Prozeß auf derselben Maschine läuft wie zuvor, 1/m, wobei m die Anzahl aktiver on-line-Ma­ schinen ist. Bei einem großen System beträgt m in der Regel 20 oder mehr, was weniger als 5% Chance dafür gibt, daß der Prozeß auf derselben Maschine ausgeführt wird wie zuvor. Jedoch ist es schwierig, das Verhalten eines Betriebssystems genau zu charakterisieren. Die tatsächlichen Chancen hängen selbstverständlich von der Last auf die CPU und auf die Ein­ gabe/Ausgabe und von den Charakteristiken der ausgeführten Jobs ab.
In vielen Situationen ist es wünschenswert, daß eine Maschi­ ne die Ausführung eines nicht abgeschlossenen Prozesses be­ endet und einen anderen Rechenprozeß ausführt. Z. B. kann, während eine Maschine einen Prozeß ausführt, ein Prozeß hö­ herer Priorität ausführbar werden. Der Scheduler wird mit dieser Situation durch eine Technik fertig, die als "nudging = anstoßen" bezeichnet wird. Ein Anstoß ist ein Prozessor/Prozessor-Interrupt, der bewirkt, daß ein Ziel­ prozessor seinen Zustand neu überprüft und entsprechend rea­ giert. Im Fall eines Prozesses höherer Priorität empfängt die "angestoßene" Zielmaschine den Interrupt, tritt wieder in das Betriebssystem ein, stellt fest, daß Arbeit höherer Priorität wartet und schaltet auf diese Arbeit um. Jeder An­ stoß weist einen dementsprechenden Prioritätwert auf, der die Priorität des Ereignisses anzeigt, auf die die Maschine antwortet. Zum Optimieren wird die Priorität des auf eine Maschine wirkenden Anstoßes für jede Maschine aufgezeichnet. Wenn ein Anstoß für eine Priorität aufgerufen wird, die kleiner ist als oder gleich groß ist wie ein Wert, der be­ reits für die Maschine ansteht, wird der redundante Anstoß unterdrückt.
Wenn ein Prozeß ausführbar wird, tastet der Scheduler die Maschinen 1 p-Np für die Maschine (n) ab, die den Prozeß niedrigster Priorität ausführt bzw. die die Prozesse nied­ rigster Priorität ausführen. Wenn der neu ausführbare Prozeß eine Priorität hat, die gleich groß ist wie oder größer ist als die derzeit ausgeführten Prozesse, wird bei der Maschine (oder einer der Maschinen) mit der höchsten Priorität (z. B. Maschine 1 p) angeklopft, um eine Umplanung zugunsten des neu ausführbaren Prozesses vorzunehmen. Demgemäß hört die Aus­ führung eines Prozesses (z. B. eines Prozesses X) auf der Maschine 1 p zumindest vorübergehend auf. Während andere Pro­ zesse auf der Maschine 1 p laufen, erodiert der Cachekontext 4 den Prozeß X.
Zwei Schwierigkeiten mit dem bekannten Scheduler werden da­ durch anschaulich, daß betrachtet wird, was abläuft, wenn der Prozeß X (im obigen Beispiel) ausführbar wird. Wenn der Prozeß X keine harte Affinität aufweist, wird er in die glo­ bale Ausführungsschlange eingereiht. Es besteht jedoch nur, wie angegeben, eine Chance von etwa 1/m, daß der Prozeß X als nächste auf der Maschine 1 p läuft. Selbst wenn der Cachekontext für den Prozeß X im Cache 1 p der Maschine 1 p sehr hoch ist, wird also der Prozeß X wahrscheinlich auf einer anderen Maschine ausgeführt. Wenn der Prozeß X auf einer anderen Maschine ausgeführt wird, wird einiges der Ar­ beitsfähigkeit des Systems 10 dazu verwendet, Daten über den Systembus 12 p zu bewegen. Wenn Daten über den Systembus 12 p an die andere Maschine bewegt werden, verringert dies die Leistungsfähigkeit des Systems.
Wenn, zweitens, der Prozeß X harte Affinität aufweist, wird er in die Affinitätsausführungsschlange 38 der Maschine 1 p eingereiht, unabhängig davon, wieviele andere Prozesse in die Affinitätsausführungsschlange 38 der Maschine 1 p einge­ reiht sind, und unabhängig davon, ob andere Maschinen leer­ laufen. Daher kann die Leistungsfähigkeit des Systems wegen leerlaufender Maschinen verringert werden.
Auf diese Weise nutzt der bekannte Scheduler Cachespeicher nur wenig wieder, wenn nicht die Flexibilität des symmetri­ schen Mehrfachprozesses durch Verwendung harter Affinität aufgegeben wird.
Der Erfindung liegt die Aufgabe zugrunde, einen Scheduler anzugeben, der bewirkt, daß ein ausführbarer Prozeß in die Affinitätsausführungsschlange einer Maschine eingereiht wird, wenn der Cachekontext (oder die Wärme) des Prozesses in bezug auf die Maschine ausreichend hoch ist, und daß er in eine globale Ausführungsschlange eingereiht wird, wenn der Cachekontext ausreichend niedrig ist. Zusätzlich besteht die Aufgabe, periodische CPU-Belastungs-Ausgleichsrechnungen zu verbessern, um eine Langzeitbetrachtung für die Maschi­ nenbelastung aufrechtzuerhalten und ein Umverteilen von Pro­ zessen zu bewirken, wenn ein deutlicher Überschuß an Prozes­ sen für eine beliebige besondere Maschine vorhanden ist. Darüber hinaus könnte eine solche Umverteilung von Prozessen die Priorität der zu bewegenden Prozesse berücksichtigen.
Der Erfindung liegt weiterhin die Aufgabe zugrund, lineare Erhöhung der Leistungsfähigkeit zu gewährleisten, wenn Ma­ schinen mit leistungsfähigeren Mikroprozessoren und größeren Cachespeichern einem System hinzugefügt werden.
Eine andere Aufgabe der Erfindung liegt darin, einen Sche­ duler anzugeben, der Prozesse so in Ausführungsschlangen einreiht, daß im Mittel die Leistungsfähigkeit eines Mehr­ prozessor-Computersystems maximiert wird.
Eine weitere Aufgabe der Erfindung ist es, die Zuordnung von Prozessen zu Maschinen zu optimieren, wenn versucht wird, die Bewegung von Prozessen und des jeweils zugehörigen Cachekontextes von einer Maschine zu einer anderen zu mini­ mieren.
Noch eine andere Aufgabe der Erfindung ist es, die effektive Busbandbreite bei einem Mehrprozessor-Computersystem dadurch zu erhöhen, daß der Aufwand überflüssigen Busverkehrs ver­ ringert wird.
Die vorliegende Erfindung löst die vorigen Aufgaben durch das Realisieren von Datenstrukturen und Algorithmen, die den Prozeßzuordnungs-Wirkungsgrad des Prozeßschedulers dadurch verbessern, daß sie den Verkehr von Cache zu Cache auf dem Bus verringern und dadurch die Leistungsfähigkeit des gesam­ ten Computersystems verbessern. Der Scheduler verwendet das Konzept eines Cachekontextes, wodurch ein ausführbarer Pro­ zeß in die Affinitätsausführungsschlange einer Maschine ein­ geordnet wird, wenn der abgeschätzte Cachekontext des Pro­ zesses in bezug auf die Maschine ausreichend hoch ist, dage­ gen in eine globale Ausführungsschlange eingereiht wird, wenn der abgeschätzte Cachekontext ausreichend niedrig ist.
Eine Prämisse, die der Funktion der vorliegenden Erfindung zugrunde liegt, ist diejenige, daß es oft zu besserem Wir­ kungsgrad führt, auf das Freiwerden einer gerade arbeitenden Maschine zu warten, in der bereits ein Cachekontext besteht, statt zu einer wartenden Maschine überzugehen, für die es erforderlich ist, den Cachekontext zu übertragen oder wieder aufzubauen.
Zusätzliche Aufgaben und Vorteile der Erfindung gehen aus der folgenden detaillierten Beschreibung eines bevorzugten Ausführungsbeispiels hervor, die unter Bezugnahme auf die beigefügten Zeichnungen erfolgt.
Fig. 1 ist ein Blockdiagramm der Hauptuntersysteme eines symmetrischen Mehrprozessor-Computersystems, das gemäß der Erfindung arbeitet.
Fig. 2A ist ein schematisches Diagramm einer globalen Aus­ führungsschlange gemäß der vorliegenden Erfindung.
Fig. 2B ist eine vereinfachte Version des Diagramms von Fig. 2A.
Fig. 3 ist ein schematisches Diagramm einer Affinitätsaus­ führungsschlange gemäß der Erfindung.
Fig. 4 veranschaulicht Beziehungen zwischen Datenstrukturen gemäß der Erfindung.
Fig. 5 veranschaulicht Beziehungen zwischen Datenstrukturen der Erfindung von der Perspektive der Prozeßdatenstruktur aus gesehen.
Fig. 6 veranschaulicht Beziehungen zwischen Datenstrukturen der Erfindung von der Perspektive der Maschinendatenstruktur aus gesehen.
Fig. 7 ist ein Blockdiagramm der Hauptuntersysteme eines be­ kannten symmetrischen Mehrprozessor-Computersystems.
Fig. 8 ist ein schematisches Diagramm einer bekannten globa­ len Ausführungsschlange.
Fig. 9 ist ein schematisches Diagramm einer bekannten Ma­ schinenaffinitätsausführungsschlange.
Hardware
Ein bevorzugtes Ausführungsbeispiel der Erfindung ist in einem symmetrischen Mehrprozessor-Computersystem 50 reali­ siert, wie es in Fig. 1 dargestellt ist. Gemäß Fig. 1 weist das System 50 eine Anzahl N von Computermaschinen auf, die mit Maschine 1, Maschine 2, Maschine 3, . . ., Maschine N (ge­ meinsam als "Maschinen 1-N" bezeichnet) bezeichnet sind. Jede der Maschinen 1-N weist einen örtlichen Cachespeicher auf, die mit Cache 1, Cache 2, Cache 3, . . ., Cache N (ge­ meinsam als "Caches 1-N" bezeichnet) bezeichnet sind, von denen jeder als Pseudo-LRU-FIFO organisiert ist, wie oben beschrieben. Die Hardware des Systems 50 kann mit derjenigen des bekannten Systems 10 übereinstimmen, wobei Änderungen nur in Hinzufügungen und Änderungen in der Software beste­ hen. Alternativ kann sich zusätzlich zu den Änderungen in der Software eine oder mehrere der Maschinen 1-N von den Maschinen 1 p-Np unterscheiden. Die Caches 1-N und der Hauptspeicher 14 können andere Kapazitäten als die Caches 1 p-Np bzw. ein Hauptspeicher 14 p aufweisen. Ein Systembus 12 kann eine andere Anzahl an Leitern aufweisen als der Sy­ stembus 12 p. Zusätzliche mögliche Modifizierungen und Hinzu­ fügungen betreffend das System 10 werden unten beschrieben.
Überblick über Datenstrukturen
Beim bekannten System 10 weist jede Ausführungsschlange, von der die Ablaufsteuerung für einen Prozeß vorgenommen werden kann, eine diskrete Datenstruktur auf. Die globale Ausfüh­ rungsschlange 34 beinhaltete Größen whichqs und qs. Die glo­ bale FPA-Ausführungsschlange beinhaltete Größen whichqs_fpa und qs_fpa. Jede Affinitätsausführungsschlange einer Maschi­ ne beinhaltete Größen e_head und e_tail.
Demgegenüber wird beim bevorzugten Ausführungsbeispiel stattdessen eine einzige Datenstruktur, struct runq, verwen­ det. Wo das bekannte System 12 jede Art an Zeitsteuerungs- Datenstruktur mit einem Sonderfallkode behandelte, wendet das bevorzugte Ausführungsbeispiel denselben Kode an und führt nur eine Änderung dahingehend aus, mit welchem Exem­ plar (welcher Instanz) von struct runq sie arbeitet.
So wie hier verwendet, bedeutet "Cachekontext" ein Maß da­ für, wieviele der Daten, die einem Prozeß zugeordnet sind, sich im Cachespeicher befinden. Wenn die Daten anfangs vom Hauptspeicher 14 in den Cachespeicher kopiert werden, ist der Kontext im Cachespeicher für den Prozeß hoch (tatsäch­ lich 100%). Der Cachekontext des Cachespeichers für den Prozeß nimmt ab oder "erodiert", wenn Daten im Cache aus diesem herausgeschoben werden, wenn diesem Prozeß nicht zu­ geordnete Daten dem Inhalt des Cachespeichers hinzugefügt werden. Ein Cachespeicher ist "warm", wenn sich der abge­ schätzte Wert des Cachekontextes über einem bestimmten Wert befindet. Ein Cachespeicher ist "kalt", wenn der abgeschätz­ te Wert des Cachekontextes unter einem bestimmten Wert liegt. Ein Prozeß weist "Cacheaffinität" in bezug auf eine Maschine auf, wenn ein Zeiger (*p_rq) des Prozesses auf die unten beschriebene Affinitätsausführungsschlange der Maschi­ ne zeigt.
Das System 50 beinhaltet mindestens eine globale Ausfüh­ rungsschlange, wie die in den Fig. 2A und 2B dargestellte globale Ausführungsschlange 54, und eine Affinitätsausfüh­ rungsschlange 58 für jede der Maschinen 1-N, wie sie in Fig. 3 dargestellt ist. Die globale Ausführungsschlange 54 und die Affinitätsausführungsschlange 58 sind Beispiele für die unten beschriebene Datenstruktur "struct runq". Fig. 2B ist eine vereinfachte Version von Fig. 2A. Die Strukturen der globalen Ausführungsschlange 54 und der Affinitätsaus­ führungsschlange 58 sind der Struktur der globalen Ausfüh­ rungsschlange 54 dahingehend ähnlich, daß sie abhängig von der Priorität Prozesse in verschiedenen verbundenen Listen aufreihen können. Jede verbundene Liste in den Mehrfach­ schlitzen der globalen Ausführungsschlange 54 und der Affi­ nitätsausführungsschlange 54 weist dieselbe Struktur auf wie die verbundene Liste im einzigen Schlitz der in Fig. 9 dar­ gestellten bekannten Affinitätsausführungsschlange 34.
Obwohl jede Ausführungsschlange dieselbe Datenstruktur wie die globale Ausführungsschlange 54 aufweist, können besonde­ re Prozeßtypen nur in einen bestimmten Ausführungsschlangen­ typ eingereiht werden. Z. B. könnte eine erste Gruppe von Maschinen 1-N Mikroprozessoren Intel 386 aufweisen, eine zweite Gruppe von Maschinen 1-N könnte Mikroprozessoren Intel 486 aufweisen, und eine dritte Gruppe von Maschinen 1-N könnte Mikroprozessoren Intel 386 mit FPA-Ausrüstung aufweisen. Bei diesem Beispiel würde jede Maschine auf ihre eigene Affinitätsausführungsschlange 58 zeigen. Zusätzlich würde die erste Gruppe von Maschinen 1-N auf die globale Ausführungsschlange 54 zeigen. Die zweite Gruppe von Maschi­ nen 1-N würde auf eine globale Ausführungsschlange für den Typ 486 zeigen. Die dritte Gruppe von Maschinen 1-N würde auf eine globale FPA-Schlange zeigen. Das System 50 könnte weitere Typen globaler Ausführungsschlangen beinhalten, ein­ schließlich globaler Ausführungsschlangen für Maschinen mit erweitertem Befehlssatz, verringertem Befehlssatz, mit on­ chip-Cache oder mit anderen Eigenschaften. Im Fall einer Ma­ schine mit einem Mikroprozessor mit on-chip-Cache würde die vorliegende Erfindung vorzugsweise die Verwendung sowohl des on-chip- als auch des on-board-Cache optimieren.
Unter gewissen Umständen kann ein Prozeß zu verschiedenen Zeitpunkten mehr als einem Typ globaler Ausführungsschlangen zugeordnet werden. Z. B. kann ein Prozeß, der zum Format Intel 386 kompatibel ist, sowohl auf einer Intel-386- als auch auf einer FPA-Maschine laufen. In diesem Fall kann, ab­ hängig von den Anforderungen der verschiedenen Typen von Ma­ schinen, der Prozeß entweder in die globale Ausführungs­ schlange 54 oder die globale FPA-Ausführungsschlange einge­ reiht werden.
Der erfindungsgemäße Scheduler weist den herkömmlichen UNIX- Scheduler auf, dem neue und geänderte Datenstrukturen und Algorithmen hinzugefügt werden, wie sie hier beschrieben werden.
Wenn ein Prozeß ausführbar wird, wählt der Scheduler die Ausführungsschlange aus, in die der Prozeß eingereiht werden soll. Das System 50 kann eine beliebige herkömmliche Ein­ richtung verwenden, um einen Prozeß in eine Ausführungs­ schlange einzureihen. Der Scheduler wählt die Ausführungs­ schlange dadurch aus, daß er einen Schätzwert berücksich­ tigt, der aussagt, wie stark der Cachekontext (falls einer vorhanden ist) des Prozesses in bezug auf den Cache einer Maschine ist. Die Abschätzung des Cachekontextes in bezug auf einen Prozeß erfolgt auf Grundlage der Anzahl von Takt­ pulsen eines Nutzerprozesses (im Gegensatz zu solchen eines Prozesses des Betriebssystemkerns), die die Maschine ausge­ führt hat, seit sie den Prozeß das letzte Mal ausgeführt hat.
Die Prozeßtaktpulse werden von einer Taktroutine erzeugt, die als "Hardclock" bezeichnet wird. Die Hardclock-Routine wird für jede Maschine 100 Mal pro Sekunde eingegeben. Wenn die Routine während einer Zeitspanne eingegeben wird, in der eine besondere Maschine einen Nutzerprozeß ausführt, wird ein 32-Bit-Zähler, der der besonderen Maschine zugeordnet ist, inkrementiert. Die Maschinen 1-N weisen Zähler 1-N auf, wie in Fig. 1 dargestellt. Z. B. ist der Zähler 2 in der Maschine 2 vorhanden. Die Funktionen für den Hardclock und die Zähler 1-N können entweder durch vorhandene Hard­ ware bei einem bekannten System 10 mit zusätzlicher Software oder durch zusätzliche Hardware und Software ausgeführt wer­ den.
Sowie jeder Prozeß eine Maschine verläßt, wird ein Zeiger (*p_runeng) abgespeichert, der auf die Maschine zeigt. Auch wird ein Wert (p_runtime) für den Zähler der Maschine ge­ speichert. Z. B. verläßt ein Prozeß X zu einem Zeitpunkt t1 die Maschine 2. Demgemäß werden *p_runeng = Maschine 2 und der Zählwert (p_runtime) des Zählers 2 zum Zeitpunkt t1 ab­ gespeichert. Zu einem Zeitpunkt t2 wird der Prozeß wieder ausführbar. Zu einem Zeitpunkt t3 berechnet der Scheduler die Differenz (De-p) zwischen dem gespeicherten Wert p_run­ time und dem Zählwert (e_runtime) des Zählers 2 zum Zeit­ punkt t3. De-p ist umgekehrt mit der möglichen Menge an Cachekontext verbunden, der verbleibt. Der Scheduler verwen­ det De-p beim Abschätzen, wieviel Cachekontext für den Pro­ zeß in bezug auf die Maschine verbleibt.
Auf eine Maschine kann von zwei oder noch mehr Ausführungs­ schlangen gezeigt werden, und sie kann zugehörige Prozesse ausführen. Bei den hier beschriebenen Beispielen verwendet das System 50 drei Typen von Ausführungsschlangen, von denen jede identische Datenstruktur aufweist: eine globale UNIX- Ausführungsschlange 54, eine globale FPA-Ausführungsschlange und eine Affinitätsausführungsschlange 58 für jede Maschine. Wenn eine Maschine aktiviert ist, wird auf sie durch eine Liste der geeigneten Ausführungsschlangen gezeigt. Prozesse werden im allgemeinen anfangs an die globale Ausführungs­ schlange angefügt und können in andere Ausführungsschlangen bewegt werden, wie dies unten beschrieben wird.
Dem Konzept nach wählt ein Prozeß nicht die Ausführung auf einer besonderen Maschine an. Stattdessen wird ein Prozeß in eine Ausführungsschlange eingereiht und wird dann von der Maschine ausgeführt, die ein Mitglied der Maschinenliste ist, auf die die Ausführungsschlange zeigt. Wenn die Maschi­ nenliste nur eine einzige Maschine enthält, ist die Ausfüh­ rungsschlange eine Affinitätsausführungsschlange, und der Prozeß ist der Maschine fest zugeordnet. Wenn die Maschinen­ liste nur Maschinen mit FPA-Ausrüstung enthält, ist die Aus­ führungsliste eine FPA-Ausführungsliste, und der Prozeß hat feste Zuordnung zu FPA. Eine globale Ausführungsliste zeigt auf eine Maschinenliste, die alle Maschinen des Systems ent­ hält, die Prozesse des Typs ausführen, die in der globalen Ausführungsliste aufgelistet sind.
Jeder Prozeß weist eine Datenstruktur mit zwei Zeigern auf, um Schlangen auszuführen: einen Zeiger für die aktuelle Aus­ führungsschlange (*p_rq) und einen Zeiger für eine Ausgangs­ ausführungsschlange (*p_rqhome). Der aktuelle erste Zeiger zeigt die Ausführungsschlange an, in die der Prozeß einge­ reiht ist, wenn er ausführbar wird. Der Zeiger für die Aus­ gangsausführungsschlange zeigt die Ausgangsausführungs­ schlange für den Prozeß an. Wenn ein Prozeß zunächst erzeugt wird, zeigen im allgemeinen beide Zeiger auf eine globale Ausführungsschlange. (Die Ausgangsausführungsschlange kann eine Affinitätsausführungsschlange sein, wenn der Prozeß einer Affinitätsausführungsschlange fest zugeordnet ist.) Wenn ein Prozeß in eine Affinitätsausführungsschlange bewegt wird (da ausreichender Cachekontext besteht), wird jedoch der aktuelle Ausführungsschlangenzeiger bewegt, aber der Ausgangszeiger bleibt unverändert. Wenn der Prozeß von sei­ ner augenblicklichen Ausführungsschlange (wegen unzureichen­ den Cachekontextes oder wegen Abschaltens der Maschine) weg­ bewegt werden muß, wird der Zeiger für die aktuelle Ausfüh­ rungsschlange des Prozesses so zurückgestellt, daß dieser Zeiger auf die Ausgangsausführungsschlange zeigt. Für einen FPA-Prozeß zeigt der Zeiger für eine Ausgangsausführungs­ schlange auf eine globale FPA-Ausführungsschlange. Dies er­ laubt es dem Scheduler, Cacheaffinität für mehr als einen globalen Zeitsteuerungspool von Prozessen anzuwenden, ohne daß Sonderfälle berücksichtigt werden müssen.
Der folgende Ablauf von Arbeitsgängen dient als Beispiel für das Handhaben von Prozessen durch den erfindungsgemäßen Cacheaffinitätsscheduler. Wenn ein Prozeß erstmals erzeugt wird, wird er an seine aktuelle Ausführungsschlange ange­ hängt, die im allgemeinen die globale Ausführungsschlange ist. Wenn der Prozeß eine höhere Priorität aufweist als der gerade in irgendeiner Maschine ausgeführte Prozeß, die ein Mitglied der Maschinenliste für die aktuelle Ausführungs­ schlange ist, wird die Maschine angestoßen, um zu entschei­ den, ob sie den neu eingereihten Prozeß statt des gerade ausgeführten Prozesses direkt ausführen will.
Darüber hinaus kann eine Maschine in Leerlauf verfallen und sich nach einem ausführbaren Prozeß in einer beliebigen der Ausführungsschlangen umsehen, die auf der Liste von Ausfüh­ rungsschlangen für diese Maschine stehen. Die Maschine wählt dann den Prozeß mit der höchsten gefundenen Priorität aus und führt ihn aus. Etwas später endet die Ausführung des Prozesses, zu welchem Zeitpunkt der Zählerwert (p_runtime) für den Prozeß gespeichert wird. Oft geht ein Prozeß dann, wenn seine Ausführung endet, in einen Ruhezustand über, in dem der Prozeß auf einen anderen Vorgang wartet, z. B. auf eine Tastenbetätigung, bevor er wieder ausführbar wird.
Wenn der Prozeß anschließend ausführbar wird, wird der Cachekontext berücksichtigt, um zu entscheiden, in welche Ausführungsschlange der Prozeß eingereiht werden sollte. Der Scheduler untersucht zunächst das Feld p_flag des Prozesses, um zu bestimmen, ob das Cacheaffinitätsbit (SAFFIN) gesetzt ist (d. h. = 1 ist). Wenn das Cacheaffinitätsbit gesetzt ist, berücksichtigt der Scheduler, ob der Prozeß Cacheaffi­ nität aufweist, wenn er entscheidet, in welche Ausführungs­ schlange der Prozeß eingereiht werden soll.
Der Scheduler untersucht dann die Maschine, auf der der Pro­ zeß das letzte Mal lief, um den aktuellen Zählerstand (e_runtime) für diese Maschine zu ermitteln. De-p = e_run­ time - p_runtime ist der akkumulierte Taktpulswert für ande­ re Nutzerprozesse, die auf der Maschine liefen oder noch laufen, seit der Prozeß zum letzten Mal dort lief. Wenn der Wert De-p klein ist (z. B. kleiner als 3), ist der abge­ schätzte Cachekontext hoch. Demgemäß wird im Mittel die Lei­ stungsfähigkeit des Systems 50 erhöht, wenn der Prozeß in die Affinitätsausführungsschlange statt in eine globale Aus­ führungsschlange eingereiht wird. In diesem Fall schaltet der Prozeß seinen Zeiger für die aktuelle Ausführungsschlan­ ge von der Ausgangsausführungsschlange für den Prozeß auf die Affinitätsausführungsschlange für diese Maschine um. Wenn De-p groß ist (z. B. größer als 15), ist der abge­ schätzte Cachekontext niedrig, und der Prozeß wird in seine Ausgangsausführungsschlange zurückbewegt.
Beschreibungen von Datenstrukturen
Der Cacheaffinitätsscheduler verwendet einen Satz Daten­ strukturen und Algorithmen, die Prozesse gemäß der obigen allgemeinen Beschreibung verarbeiten. Einige der Datenstruk­ turen sind neu, und andere sind vorhandene Datenstrukturen, für die zusätzliche Felder definiert wurden. Für vorhandene Datenstrukturen werden die zusätzlichen Felder beschrieben. Felder, die gegenüber den herkömmlichen UNIX-Datenstrukturen nicht verändert sind, sind in den Auflistungen mit "..." be­ zeichnet. Was neue Datenstrukturen betrifft, ist die gesamte Vereinbarung aufgeführt.
1. Felder, die in der Prozeßdatenstruktur hinzugeführt sind
struct proc {
. . . @ struct runq *prqhome; /* Ausgangsausführungsschlange eines Prozesses */
struct runq prq; /* aktuelle Ausführungsschlange */
ulonq pruntime; /* Maschinenzeit bei der letzten Ausführung */
struct engine *pruneng; /* Maschine, auf der der Prozeß das letzte Mal lief */
#define SAFIN 0×4000000 /* Affinität bei der Ablaufsteuerung verwenden */
. . . @ };
Das Folgende ist eine Erläuterung der zusätzlichen Felder für die Prozeßdatenstruktur:
*p_rqhome und *p_rq sind Zeiger auf die Ausgangs- bzw. die aktuelle Ausführungsschlange. Wie unten beschrieben, zeigt *p_rq auf die Ausführungsschlange, in die sich der Prozeß selbst einreiht. Wenn der Prozeß es selbst wählt, sich in eine unterschiedliche Ausführungsschlange einzureihen (wegen Cacheaffinitätsbetrachtungen oder wegen einer expliziten An­ forderung wegen fester Affinität) wird demgemäß das Feld *p_rq dementsprechend aktualisiert. *p_rqhome hält sich über die Grund- oder Ausgangsausführungsschlange jedes Prozesses auf dem laufenden. Bei fehlender fester Affinität zeigt *p_rqhome auf eine besondere globale Ausführungsschlange, abhängig vom Typ des Prozesses. Wenn der Prozeß z. B. vom FPA-Typ ist, zeigt *p_rqhome für den Prozeß auf die globale FPA-Ausführungsschlange.
p_runtime speichert den Wert des Maschinen-Hardclock-Zählers für den Zeitpunkt, zu dem dieser Prozeß das letzte Mal aus­ geführt wurde.
*p_runeng ist ein Zeiger auf die Maschine, auf der dieser Prozeß das letzte Mal ausgeführt wurde.
SAFFIN (Cacheaffinitätsbit) ist ein neues Bit im vorhandenen Feld p_flag. Der Cachekontext wird nur für Prozesse berück­ sichtigt, bei denen dieses Bit gesetzt ist. Dieses Bit wird durch Aufspaltung () übernommen, und alle ab dem Anfangs­ start des Systems initiierten Prozesse weisen ein gesetztes Cacheaffinitätsbit auf. Das Bit wird gelöscht, wenn ein Pro­ zeß sich selbst einer Maschine fest zuordnet, da die Cache­ affinität dann ein strittiger Faktor ist.
2. Felder, die zur Maschinendatenstruktur hinzugefügt sind
struct engine {
. . . @ int enpri; /* Priorität des aktuellen Prozesses */
struct runql *erql; /* Liste von Ausführungsschlangen, aus denen zur Ausführung ausgewählt werden soll */
struct runq *erq; /* Affinitätsausführungsschlange für eine Maschine */
ulong eruntime; /* Takt zur Berechnung der "Wärme" eines Cache */
struct runq *epushto; /* Lastausgleich; wohin soll geschoben werden */
int epushcnt; /* # Prozesse, die dorthin geschoben werden sollen */
. . . @ };
Das Folgende ist eine Erläuterung der zusätzlichen Felder in der Maschinendatenstruktur:
e_npri ist ein Feld, das in der Maschinendatenstruktur des bekannten Systems 10 verwendet wird. Obwohl e_npri nicht durch die Erfindung hinzugefügt wird, ist e_npri hier aufge­ nommen, da der Wert unten in bezug auf einen Zeitschlitzal­ gorithmus diskutiert wird. e_npri zeichnet die Priorität eines Prozesses auf, den eine Maschine aktuell ausführen kann. Der Scheduler verwendet e_npri, um Bindungen in bezug auf die Priorität von Prozessen zu korrigieren, so daß Pro­ zesse aus bestimmten Ausführungsschlangen nicht dauernd ig­ noriert werden.
e_rql wartet die verbundene Liste der Ausführungsschlangen, auf die diese Maschine für die Ablaufsteuerung zugreift.
e_rp zeigt die Affinitätsausführungsschlange für diese Ma­ schine an (d. h. eine Ausführungsschlange, deren einziges Mitglied diese Maschine ist).
e_runtime ist der Maschinen-Zählerwert, der mit dem Wert p_runtime verglichen wird, um das Ausmaß des Cachekontextes (Cachewärme) zu berechnen, der für diese Maschine verbleibt.
e_pushto identifiziert die Maschine, in die der Prozeß be­ wegt wird, wenn ein Prozeß-Lastausgleich erforderlich ist. Algorithmen, die den Lastausgleich steuern, werden unten be­ schrieben.
e_pushcnt identifiziert die Anzahl von Prozessen, die in eine andere Maschine verschoben werden, wenn Lastausgleich verwendet wird.
3. Datenstruktur einer Ausführungsschlange
struct runq {
int rwhichqs; /* Bitmaske der Prioritätslevel von runq für wartende Prozesse */
struct prochd rqs (NQS); /* Ausführungsschlangen; eine pro Bit in rwhichqs */
int rpmembers; /* # Prozesse, die zu dieser Schlange gehören */
int remembers; /* # Maschinenablaufsteuerung aus dieser Schlange */
struct engl *rengs; /* eine Liste dieser Maschinen */
unsigned rflags; /* verschiedene Flags */
struct runq *ract; /* ein Zeiger auf den nächsten aktiven Wert runq */
};
Das Folgende ist eine Erläuterung der Datenstrukturfelder der Ausführungsschlange:
r_whichqs und r_qs entsprechen den Strukturen whichqs und qs, wie sie bei der bekannten globalen Ausführungsschlange 34 verwendet werden. prochd ist das Paar ph link und ph_rlink (die in Zusammenhang mit Fig. 8 beschrieben wurden) für jeden Schlitz in einer Ausführungsschlange gemäß der Er­ findung. Jedes Bit in r_whichqs entspricht einem Index in r_qs(NQS); das Bit ist gesetzt, wenn ein Prozeß in diesen Schlitz eingereiht ist. "NQS" bedeutet die "Anzahl von Schlitzen in der Schlange (number of queue slots)", z. B. 32 Schlitze.
r_pmembers und r_emembers zählen die Anzahlen von Prozessen bzw. Maschinen, die zu dieser Ausführungsschlange gehören.
*r_engs ist ein Zeiger, der auf eine verbundene Liste für alle Maschinen zeigt, die Ablaufsteuerung aus dieser Ausfüh­ rungsschlange vornehmen.
r_flags speichert verschiedene Flags.
*r_act ist ein Zeiger auf eine einfach verbundene Liste al­ ler Ausführungsschlangen, die im System aktiv sind. Er wird in erster Linie durch Zeitschlitze () verwendet, um Zeit­ schlitzpriorität für Prozesse gleicher Priorität im System zu realisieren. Zeitschlitzzuteilung wird unten beschrieben.
4. Datenstrukturen für die Liste runq und für Maschinenlisten
struct rungl {
  struct runq *rql_runq;
  struct runql *rql_next;
};
struct engl {
  struct engine *el_eng;
  struct engl *el_next;
};
Die Datenstrukturen struct runql und struct engl definieren zirkular verbundene Listen von Ausführungsschlangen und Ma­ schinenmitgliedern. Die Anweisung struct runql definiert die zirkulare Liste von Ausführungsschlangen, zu denen eine Ma­ schine gehört; auf sie wird vom Feld *e_rql der Maschinenda­ tenstruktur gezeigt. Die Anweisung engl definiert die zirku­ lare Liste von Maschinen, die zu einer Ausführungsschlange gehören; auf sie wird vom Feld *r_engs der Datenstruktur für die Ausführungsschlange gezeigt. Die Listen sind zirkular organisiert, um Realisierung durch eine herkömmliche round­ robin-Ablaufsteuerungsroutine zu erlauben. Um Ungleichför­ migkeiten bei der Ablaufsteuerung zu verhindern, setzt der Ablaufsteuerungskode seinen Listenzeiger (*e_reql für Ma­ schinen; *r_engs für Ausführungsschlangen) auf den letzten Eintrag, mit dem gearbeitet wurde, und beginnt den Schlei­ fenumlauf für einen Eintrag hinter dem letzten Eintrag. Da die Listen zirkular sind, erfordert die Realisierung nur die Zuordnung des letzten Listenzeigers.
Die Fig. 4, 5 und 6 veranschaulichen Beziehungen zwischen verschiedenen Datenstrukturen gemäß der Erfindung. Fig. 4 veranschaulicht nur eine einzige Maschinenliste und eine einzige Ausführungsschlangenliste, wohingegen tatsächlich mehrere Listen für Maschinen und mehrere Listen für Ausfüh­ rungsschlangen vorhanden sind. Fig. 5 veranschaulicht Bezie­ hungen für Datenstrukturen der vorliegenden Erfindung aus der Perspektive der Prozeßdatenstruktur für einen einzigen Prozeß. Fig. 6 veranschaulicht Beziehungen zwischen Daten­ strukturen der Erfindung aus der Perspektive der Maschinen­ datenstruktur für eine einzige Maschine.
Pseudokode für Algorithmen
Das Folgende ist eine Beschreibung der Algorithmen, die den Betrieb und die Beziehung von Prozessen, Ausführungsschlan­ gen, Maschinen und Listen gemäß der Erfindung bestimmen. Die Algorithmen werden im unten angegebenen Pseudokodeformat ausgedrückt. Ein Mehrprozessorsystem 50 kann eine beliebige herkömmliche Einrichtung verwenden, um die Funktionen der Algorithmen auszuführen, die unten im einzelnen beschrieben werden.
1. Ausführbaren Prozeß einstellen (setrun/setrq)
Der folgende Algorithmus wird als setrun/setrq) bezeichnet:
Wenn ein Prozeß Cacheaffinität zuläßt, dann calc_affinity.
Füge Prozeß in r_qs ein, aktualisiere r_whichqs.
Finde Maschine niedrigster Priorität in einer Ausführungs­ schlange.
Wenn sie niedriger ist als die des Prozesses, stoße die Ma­ schine an.
Wenn ein Prozeß neu erzeugt wird oder vom Ruhezustand aus aktiviert wurde, wird ein Prozeß durch den obigen Algorith­ mus setrun/setrq auf ausführbar gesetzt. Die Ausführungs­ schlange, in die der Prozeß eingeordnet wird, hängt davon ab, ob er jemals zuvor ausgeführt wurde, wo er unter Umstän­ den zuvor ausgeführt wurde, und vom berechneten Wert für den Cachekontext für den Prozeß. Der Durchlauf für die Maschine niedrigster Priorität geht die *r_engs-Liste der Datenstruk­ tur für die Ausführungsschlange durch. Wenn der Prozeß einer globalen Affinitätsausführungsschlange zugeordnet ist, ist die Maschine geringster Priorität die einzige Maschine, die einer Affinitätsausführungsschlange zugeordnet ist.
2. Berechnen der Cacheaffinität (calc affinity)
Die Berechnung der Cacheaffinität (d. h. des Wertes calc_ affinity im Algorithmus setrun/setrq) eines neu ausführbaren Prozesses wird in der unten angegebenen Pseudokoderoutine beschrieben. Der folgende Algorithmus wird als calc_affinity bezeichnet:
Wenn ein Prozeß noch nie ausgeführt wurde, dann zurückkeh­ ren.
Wenn ein Prozeß aktuell in einer Affinitätsausführungs­ schlange steht.
  Wenn kein Cache warm ist oder wenn Abschaltung vorliegt
    Verlassen der Affinitätsausführungsschlange.
Sonst.
  Wenn ein Cache warm ist und keine Abschaltung vorliegt
    In die Affinitätsausführungsschlange einfügen.
Dieser Pseudokode repräsentiert den Grundprozeß zum Verwen­ den der Cacheaffinität. Wenn der Prozeß Cachewärme aufweist, ist der Prozeß in die Affinitätsausführungsschlange einzu­ reihen. Wenn der Cache kalt ist, wird der Prozeß in die Aus­ gangsausführungsschlange eingereiht. Die exakte Anzahl von Taktpulsen für "kalt" und "warm" für die Cachewerte sind temporär änderbare Parameter, die die Realisierung besonde­ rer Anwendungen erlauben. Ein Wert von De-p, der geringer ist als eine untere Grenze Llower, zeigt einen warmen Cache an. Ein Wert von De-p, der größer ist als eine obere Grenze Lupper, zeigt einen kalten Cache an. Bei einem bevorzugten Ausführungsbeispiel ist Llower = 3 und Lupper = 15.
Wenn der Wert von De-p zwischen Llower und Lupper liegt, be­ rücksichtigt der Scheduler den aktuellen Zustand des Ausfüh­ rungsschlangenzeigers *p_rq, wenn er entscheidet, in welche Ausführungsschlange der Prozeß eingereiht werden soll. Wenn ein Prozeß einer Maschine fest zugeordnet ist, zeigt, wie oben beschrieben, *p_rq auf die Affinitätsausführungsschlan­ ge dieser Maschine. Wenn der Prozeß nicht fest zugeordnet ist, zeigt *p_rq auf die Ausgangsausführungsschlange, die typischerweise die globale Ausführungsschlange 54 ist. Im wesentlichen stellt der Algorithmus fest, wenn ein Prozeß keine feste Zuordnung hat, daß sich die Ausführungsschlange, auf die *p_rq zeigt, nicht ändert, falls nicht der Cachekon­ text hoch ist. Wenn ein Prozeß fest zugeordnet ist, ändert sich die Ausführungsschlange, auf die *p_rq zeigt, dann nicht, wenn der Cachekontext niedrig ist. Die Spanne zwi­ schen Llower und Lupper bildet dadurch eine Hysterese für den Umschaltalgorithmus für die Ausführungsschlangen und verhindert ein Oszillieren eines Zeigers.
Das Hystereseschema wird durch die folgende Tabelle zusam­ mengefaßt:
Wie aus der Tabelle erkennbar, wird, falls De-p < Llower gilt, der Prozeß in die Affinitätsausführungsschlange der Maschine (*p_runeng) eingereiht, auf der der Prozeß zuletzt lief, unabhängig davon, ob *p_rq auf die Affinitätsausfüh­ rungsschlange oder die globale Ausführungsschlange zeigt. Wenn Llower De-p Lupper zeigt, wird der Prozeß in jede beliebige Ausführungsschlange eingereiht, auf die *p_rq ge­ rade zeigt. Wenn De-p < Lupper gilt, wird der Prozeß in die globale Ausführungsschlange eingereiht, unabhängig davon, ob *p_rq zuvor auf die Affinitätsausführungsschlange oder die globale Ausführungsschlange zeigte. Im Fall mit De-p < Lupper wird, wenn *p_rq zuvor auf die Affinitätsausführungs­ schlange zeigte, *p_rq so verändert, daß auf die globale Ausführungsschlange gezeigt wird.
Das Hystereseschema wird durch das folgende Beispiel veran­ schaulicht. Zu einem Zeitpunkt t0 zeigen sowohl *p_rq (Zei­ ger auf die aktuelle Ausführungsschlange) und *p_rqhome (Ausgangsausführungsschlange) für den Prozeß X auf die glo­ bale Ausführungsschlange 54. Zu einem Zeitpunkt t1 wird der Prozeß X von der Maschine 1 ausgeführt, und *p_rq zeigt auf die Maschine 1. Zu einem Zeitpunkt t2 beendet die Maschine 1 die Ausführung des Prozesses X, der dann ruht. Zu einem Zeitpunkt t2 ist der Zählwert des Zählers des Maschinenzäh­ lers 1 C1, welcher Wert im Speicher als p_runtime abgelegt wird. Zu einem Zeitpunkt t3 wird der Prozeß X ausführbar, und zu einem Zeitpunkt t4 entscheidet der Scheduler, ob der ausführbare Prozeß X in die Affinitätsausführungsschlange 58 der Maschine 1 oder die globale Ausführungsschlange 54 ein­ gereiht werden soll. Zum Zeitpunkt t4 ist der Zählwert des Zählers der Maschine 1 C1 + 5, welcher Wert als e_runtime gespeichert wird. Daher ist De-p = (C1 + 5) - C1 = 5. Wie oben angegeben, ist bei einem bevorzugten Ausführungsbei­ spiel Llower = 3 und Lupper = 15. Da Llower 5 Lupper ist, zeigt *p_rq weiterhin auf die globale Ausführungs­ schlange.
Unter Fortsetzung des Beispiels sei angenommen, daß der Pro­ zeß X zu einem Zeitpunkt t5 von der Maschine 5 ausgeführt wird. Demgemäß zeigt *p_rq auf die Maschine 5. Zu einem Zeitpunkt t6 beendet die Maschine 5 die Ausführung des Pro­ zesses X, der dann ruht. Zum Zeitpunkt t6 ist der Zählwert des Zählers für die Maschine mit der Nummer 5 C2, welcher Wert im Speicher als p_runtime abgelegt wird. Zu einem Zeit­ punkt t7 wird der Prozeß X ausführbar, und zu einem Zeit­ punkt t8 entscheidet der Scheduler, ob der ausführbare Pro­ zeß X in die Affinitätsausführungsschlange 58 der Maschine 5 oder die globale Ausführungsschlange 54 eingereiht werden soll. Zum Zeitpunkt t8 ist der Zählwert des Zählers der Ma­ schine 1 C2 + 2, welcher Wert als e_runtime abgespeichert wird. Daher gilt De-p = (C2 + 2)-C2 = 2. Da De-p = 2 Llower gilt, wird der Prozeß in die Affinitätsausführungs­ schlange 58 der Maschine 5 eingereiht.
Zum nächsten Zeitpunkt, zu dem der Prozeß X ausführbar wird, entscheidet der Scheduler, ob er in die Affinitätsausfüh­ rungsschlange 58 der Maschine 5 oder die globale Ausfüh­ rungsschlange 54 eingereiht werden sollte. Da der Prozeß X jedoch der Maschine 5 zugeordnet ist, muß De-p größer sein als Llower = 15, damit der Prozeß X in die globale Ausfüh­ rungsschlange 54 eingereiht werden kann.
Bei einem bevorzugten Ausführungsbeispiel erfolgt die Be­ rechnung von De-p, bevor die Entscheidung gefällt wird, in welche Ausführungsschlange der Prozeß eingeordnet werden soll. Es besteht daher eine gewisse Latenzzeit zwischen dem Zeitpunkt der Entscheidung, in welche Ausführungsschlange der Prozeß eingereiht werden soll, und dem Zeitpunkt, ab dem der Prozeß tatsächlich auf einer Maschine ausgeführt wird. Der Cachekontext für diesen Prozeß kann während der Latenz­ zeit erodiert sein. Daher sollte die Latenzzeit berücksich­ tigt werden, wenn die Werte für Llower und Lupper ausgewählt werden. Die relativ niedrigen Werten, die Llower und Lupper beim bevorzugten Ausführungsbeispiel zugeordnet sind, kom­ pensieren in gewisser Weise das "Abkühlen" des Cachekontex­ tes während der Latenzzeit.
3. Umschalten auf einen neuen Prozeß (swtch)
Der folgende Algorithmus wird als swtch bezeichnet:
Aufzeichnen der aktuellen Maschine und der Maschinenzeit in proc
Schleife:
  Wenn shutdown
    dann abschalten
  Prozeß höchster Priorität in der Ausführungsschlange su­ chen.
  Wenn etwas gefunden
    dann ausführen.
  Leerlauf (runq zurückgeben)
  Wenn im Leerlauf etwas aufgefunden wurde
    dann ausführen.
Schleife beenden.
Der erste Schritt aktualisiert die Felder p_runtime und *p_runeng. Diese werden dann vom Algorithmus setrq() verwen­ det, um die Cacheaffinität zu ermitteln. Die Schleife ruft auch eine Funktion zum Auffinden der Ausführungsschlange auf, die den Prozeß höchster Priorität in der Liste der Ma­ schine enthält. Wenn eine Ausführungsschlange mit einem aus­ führbaren Prozeß gefunden wird, wird der nächste Prozeß aus dieser Ausführungsschlange entnommen und ausgeführt. Wenn kein ausführbarer Prozeß gefunden wird, wird eine Unterrou­ tine, Leerlauf() aufgerufen, um Leerlaufbetrieb auszuführen. Leerlauf() führt auch eine Ausführungsschlange zurück, wenn Leerlauf() diese Information hierfür hatte. Diese Schleife entnimmt dann den nächsten Prozeß aus dieser Ausführungs­ schlange und führt ihn aus. Leerlauf() kann auch feststel­ len, daß für die leerlaufende Maschine eine Anforderung zum Abschalten ausgegeben wurde. In diesem Fall läuft Leerlauf() ohne eine Ausführungsschlange. Dies bewirkt, daß swtch zum Anfang der Schleife zurückgeht, feststellt, daß eine Auffor­ derung zum Abschalten der Maschine erfolgt, und sich selbst abschaltet.
4. Algorithmus für Priorität und Lastausgleich
In einem System mit mehreren Maschinen und mehreren Prozeß­ ausführungen besteht das Erfordernis, periodisch die Priori­ tät aufzugreifen und einzustellen, die Prozessen und den Ma­ schinen zugeordnet sind, für die diese Prozesse aufgelistet sind, um auf ihnen ausgeführt zu werden. Die drei Hauptalgo­ rithmen sind: (1) Zeitschlitz(), der Timesharing für Prozes­ se gleicher Priorität innerhalb eines besonderen Ausfüh­ rungsschlangenschlitzes vornimmt; (2) schedcpu(), der perio­ disch die Priorität von Prozessen einstellt, die verschiede­ nen Ausführungsschlangenschlitzen in derselben Ausführungs­ schlange zugeordnet sind; und (3) last_ausgleich(), der pe­ riodisch Prozesse von einer Ausführungsschlange in eine an­ dere bewegt, um die Arbeitsmenge auszumitteln, die von jeder Maschine auszuführen ist. Der Pseudokode für diese Algorith­ men wird nachstehend angegeben.
a. Verursachen einer Zeitschlitzverarbeitung (timeslice)
Der folgende Algorithmus wird als timeslice bezeichnet:
Für jede aktive Ausführungsschlange
  Warteprozeß höchster Priorität finden.
  Wenn höher als oder gleich groß wie die niedrigste Ma­ schinenpriorität, Maschine anstoßen.
Der Zeitschlitzalgorithmus ist gegenüber einem solchen bei einem herkömmlichen UNIX-Scheduler unverändert. Was sich ge­ ändert hat, ist die Art, in der der Algorithmus auf die Af­ finitätsausführungsschlangen, die globale Ausführungsschlan­ ge 54 und die FPA-Ausführungsschlange angewendet wird. Im Systemkode des bekannten Systems 10 sind sowohl die FPA-Aus­ führungsschlange als auch die Affinitätsausführungsschlangen Sonderfälle. Bei der Erfindung wird dieselbe Datenstruktur (struct runq) für alle Typen von Ausführungsschlangen ver­ wendet, wodurch es möglich wird, den Kode zu verallgemei­ nern und denselben Algorithmus in jeder Ausführungsschlange der aktiven Liste auszuführen. Eine mögliche Schwierigkeit entsteht dann, wenn eine Maschine Mitglied von mehr als einer Ausführungsschlange ist. Jedoch zeigt das Feld e_npri korrekt an, welche Priorität an dieser Maschine ansteht (Über das Anklopfen), so daß jede nachfolgende Ausführungs­ schlange, wenn sie in Zeitschlitzen bearbeitet wird, die Ma­ schine entsprechend behandelt.
b. Prozeßpriorität ändern (schedcpu)
Der Algorithmus schedcpu() ist gegenüber demjenigen bei her­ kömmlichen UNIX-Schedulern unverändert.
c. Lastausgleich bewirken (last_ausgleich())
Der folgende Algorithmus wird als last_ausgleich bezeichnet:
Alle on-line-Maschinen abtasten
  Maschine mit dem kleinsten Wert maxnrun registrieren
  Maschine mit dem höchsten Wert maxnrun registrieren
Wenn der kleinste um zwei Werte niedriger ist als der höch­ ste
  Bewege (höchst-niedrigst)/2 Prozesse vom höchsten zum niedrigsten.
Wert maxnrun für alle Maschinen löschen.
d. maxnrun berechnen
Der folgende Algorithmus wird als runq_maxnrun bezeichnet:
Für jede on-line-Maschine
  Zähle, wieviele Prozesse aufgelistet sind
  Wenn eine Maschine läuft, dann addiere 1 zu diesem Zähl­ wert
  Wenn der Zählwert größer ist als maxnrun für diese Ma­ schine
    Füge 1/8 zu maxnrun für diese Maschine hinzu.
Die Routine maxnrun sammelt Information über die gesamte Prozeßlast der verschiedenen Maschinen. Der Wert von maxnrun wird im Algorithmus last_ausgleich verwendet. Durch Abtasten der Anzahl von Prozessen, die für jede Maschine aufgelistet sind, nähert die Routine an, wieviele Prozesse für jede Ma­ schine im Wettbewerb stehen. Durch Erhöhen des Wertes maxnrun in Zählintervallen von 1/8, filtert die Routine den Wert und verhindert, daß Nutzungsspitzen den Wert von maxnrun nachteilig verzerren. maxnrun wird 10 Mal pro Sekun­ de abgetastet. Der Algorithmus runq_maxnrun kann den Schritt des Addierens von 1 zum Zählwert löschen, wenn eine Maschine läuft.
Die Routine last_ausgleich läuft alle fünf Sekunden, was 50 Proben für den Wert maxnrun für jede Maschine entspricht. Die Routine last_ausgleich stellt deutliche Lastungleichhei­ ten fest und bewirkt dann, daß ein Teil der Prozesse von der am meisten belasteten Maschine zur geringstbelasteten Ma­ schine bewegt wird. maxnrun wird nach jedem Abtastintervall gelöscht. Wenn Verbindungen zwischen der am meisten und der geringstbelasteten Maschine bestehen, arbeitet die Routine last_ausgleich mit der ersten aufgefundenen Verbindung. Ein round-robin-Abtastvorgang wird verwendet, um "Bevorzugung" seitens der Lastausgleichsroutine zu minimieren.
Der Vorteil des Algorithmus für eine Mehrfach-Ausführungs­ schlange ist der, daß die Kodepfade für die Ablaufsteuerung nach wie vor so kurz sind wie beim Stand der Technik. Die Cacheaffinitätsentscheidung wird einmal zum Zeitpunkt vorge­ nommen, wenn der Prozeß ausführbar wird, und es besteht kei­ ne Möglichkeit, daß derselbe Prozeß mehrfach berücksichtigt wird, wenn sich jede Maschine nach Arbeit umsieht. Da ge­ trennte Ausführungsschlangen vorliegen, besteht auch die Möglichkeit, die Ausführungsschlangensperre in die Ausfüh­ rungsschlange selbst zu bewegen, wodurch es erlaubt wird, daß mehrere Maschinen ihre Arbeitsbelastungen parallel im Ablauf steuern und unter Zurverfügungstellen von Prozessor­ zeit abfertigen können.
Alternative Ausführungsbeispiele der Erfindung
Für den Fachmann ist es ersichtlich, daß viele Änderungen an Details des oben beschriebenen Ausführungsbeispiels der Er­ findung vorgenommen werden können, ohne daß die dieser zu­ grunde liegenden Prinzipien verlassen werden.
Z. B. ist die Erfindung auch auf andere Mehrprozessor-Compu­ tersysteme anwendbar als auf solche, die UNIX-Betriebssyste­ me verwenden.
Das System 50 könnte mehr als nur einen Maschinentyp bein­ halten, aber nur eine globale Ausführungsschlange. Diese globale Ausführungsschlange könnte Prozesse von mehr als einem Typ auflisten, wie z. B. Prozesse vom Typ 386 oder vom Typ FPA.
Die Berechnung des Cachekontextes könnte dichter beim Zeit­ punkt erfolgen, ab dem ein Prozeß tatsächlich ausgeführt Wird, z. B. wenn nur ein Prozeß vor dem in Frage stehenden Prozeß vorliegt.
Die Abschätzung des Cachekontextes kann sowohl Betriebssy­ stemkern-Prozesse als auch Nutzerprozesse berücksichtigen. Z. B. kann der Zähler einer Maschine jedesmal dann inkremen­ tiert werden, wenn eine Hardclockroutine eingegeben wird, während eine Maschine einen Betriebssystemkern-Prozeß aus­ führt.
Beim oben beschriebenen bevorzugten Ausführungsbeispiel be­ rücksichtigt der Scheduler nur den Wert De-p, und er berück­ sichtigt, ob ein Prozeß eine feste Zuordnung hat oder nicht, wenn er entscheidet, ob ein Prozeß in eine Affinitätsausfüh­ rungsschlange oder eine globale Ausführungsschlange einge­ reiht werden sollte. Alternativ kann der Scheduler andere Faktoren berücksichtigen, wie die Anzahl und/oder die Prio­ rität von Prozessen in der Affinitätsausführungsschlange. Der Scheduler könnte auch berücksichtigen, wieviele Prozesse in anderen Ausführungsschlangen vorliegen und wieviele Daten vermutlich über den Systembus 12 in der nächsten kurzen Zeitspanne laufen werden.
Beim bevorzugten Ausführungsbeispiel liegt nur ein Cache­ speicher für jede Maschine vor. Alternativ kann eine Maschi­ ne mehr als nur einen Cachespeicher aufweisen oder einen Cachespeicher mit einer anderen Maschine oder mehreren Tei­ len.
Beim bevorzugten Ausführungsbeispiel wird dieselbe Daten­ struktur für jede Ausführungsschlange verwendet. Alternativ könnten verschiedene Datenstrukturen für verschiedene Typen von Ausführungsschlangen verwendet werden.
Das bevorzugte Ausführungsbeispiel verwendet den Algorithmus last_ausgleich. Alternativ oder zusätzlich könnte eine Ma­ schine Arbeit wie folgt "stehlen". Eine leerlaufende Maschi­ ne könnte die Affinitätsausführungsschlangen anderer Maschi­ nen nach wartenden Prozessen abtasten, die auf der leerlau­ fenden Maschine ausgeführt werden könnten. Dies könnte die Wirkung des Algorithmus last_ausgleich haben, könnte diesen Effekt jedoch mit geringerer Latenzzeit erzielen. Diese Technik könnte die Auswirkungen der Cacheaffinität verei­ teln, indem sie viel mehr Umschaltungen von Prozessen von einer Maschine zur anderen bewirken würde, als sie sonst auftreten würden. Die Fälle, in denen diese Technik mit gu­ ter Wirkung verwendet werden kann, werden dadurch durch die Geschwindigkeit der Maschinen, die Größe der Cachespeicher und die CPU-Nutzungscharakteristik der im Ablauf zu steuern­ den Prozesse bestimmt.
Der Schutzbereich der vorliegenden Erfindung sollte nur durch die folgenden Ansprüche bestimmt sein.

Claims (25)

1. Computersystem mit:
  • - mehreren Computermaschinen (Maschinen 1-N), die Prozesse ausführen, welchen mehreren Computermaschinen jeweilige Cachespeicher (Cache 1-N) und jeweilige Affinitätsausfüh­ rungsschlangen zugeordnet sind;
  • - einer Cachekontext-Abschätzeinrichtung zum Abschätzen des Ausmaßes von Cachekontext für einen besonderen der Cache­ speicher in bezug auf einen besonderen der Prozesse;
  • - einer Einreihungseinrichtung zum Einreihen bestimmter der Prozesse in die Affinitätsausführungsschlangen; und
  • - einer Entscheidungseinrichtung, die auf das abgeschätzte Ausmaß des Cachekontextes anspricht, um zu entscheiden, ob ein besonderer Prozeß in eine besondere der Affinitätsaus­ führungsschlangen eingereiht werden soll.
2. System nach Anspruch 1, dadurch gekennzeichnet, daß die besonderen der Prozesse, die in die Affinitätsausführungs­ schlangen eingereiht werden, einen ersten Satz von Prozessen aufweisen, und die Einreihungseinrichtung auch einen zweiten Satz von Prozessen in mindestens eine globale Ausführungs­ schlange einreiht, wobei einige der Prozesse sowohl im ers­ ten als auch im zweiten Satz von Prozessen enthalten sind, und daß die Entscheidungseinrichtung entscheidet, ob ein besonderer Prozeß in die besondere Affinitätsausführungs­ schlange oder eine der globalen Ausführungsschlangen einge­ reiht werden soll.
3. System nach Anspruch 2, dadurch gekennzeichnet, daß eine der Affinitätsausführungsschlangen und jede der globa­ len Ausführungsschlangen ein Array von prioritätsmäßig ge­ ordneten Schlitzen aufweist, wobei jeder Schlitz dazu in der Lage ist, eine verbundene Liste von Prozessen aufzureihen.
4. System nach Anspruch 2, dadurch gekennzeichnet, daß eine der Affinitätsausführungsschlangen und eine der globa­ len Ausführungsschlangen im wesentlichen dieselben Daten­ strukturen aufweisen.
5. System nach Anspruch 2, dadurch gekennzeichnet, daß mindestens zwei globale Ausführungsschlangen vorhanden sind und die Prozesse einen solchen von besonderem Typ aufweisen und daß eine der globalen Ausführungsschlangen Prozesse des besonderen Typs aufreihen kann und andere der globalen Aus­ führungsschlangen dies nicht können.
6. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung berücksichtigt, ob der besondere Prozeß eine feste Zuordnung oder nicht zu einer Maschine hat, wenn entschieden wird, ob ein Einreihen des besonderen Prozesses in die besondere Affinitätsausführungsschlange er­ folgen soll.
7. System nach Anspruch 1, dadurch gekennzeichnet, daß die Cachekontext-Abschätzeinrichtung eine Maschinenaktivität- Meßeinrichtung aufweist, um die Maschinenaktivitätszeit zu messen, die ab dem Zeitpunkt, zu dem der besondere Prozeß die besondere Computermaschine verläßt, bis zu einem späte­ ren Zeitpunkt läuft.
8. System nach Anspruch 7, dadurch gekennzeichnet, daß die Maschinenaktivität-Meßeinrichtung einen Zähler aufweist, der Einheiten für die Maschinenaktivität zählt.
9. System nach Anspruch 7, dadurch gekennzeichnet, daß der spätere Zeitpunkt ein solcher ist, zu dem die Entscheidungs­ einrichtung entscheidet, ob der besondere Prozeß in die be­ sondere Affinitätsausführungsschlange einzureihen ist.
10. System nach Anspruch 7, dadurch gekennzeichnet, daß die Prozesse Nutzerprozesse und Betriebssystemkern-Prozesse um­ fassen, und daß die Maschinenaktivität-Meßeinrichtung die Aktivitätszeit während Nutzerprozessen, nicht während Be­ triebssystemkern-Prozessen, mißt.
11. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungsschaltung auf eine Anzahl von Prozessen an­ spricht, die in der besonderen Affinitätsausführungsschlange aufgelistet sind, wenn sie entscheidet, ob der besondere Prozeß in die besondere Affinitätsausführungsschlange einzu­ reihen ist.
12. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung auf die Priorität der besonderen Prozesse anspricht, wie sie in der besonderen Affinitäts­ ausführungsschlange aufgelistet sind, wenn sie entscheidet, ob der besondere Prozeß in die besondere Affinitätsausfüh­ rungsschlange einzureihen ist.
13. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung auf die Anzahl von Prozessen an­ spricht, die in die Affinitätsausführungsschlange der beson­ deren Computermaschine eingereiht sind, und auch auf die Anzahl von Prozessen, die in die Affinitätsausführungs­ schlangen anderer Computermaschinen eingereiht sind.
14. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung auf die Anzahl von Prozessen an­ spricht, die in anderen Affinitätsausführungsschlangen ein­ gereiht sind als in der besonderen Affinitätsausführungs­ schlange, wenn sie entscheidet, ob der besondere Prozeß in die besondere Affinitätsausführungsschlange einzureihen ist.
15. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung auf eine angenommene Menge von Da­ en anspricht, die auf einem Systembus laufen, wenn sie ent­ scheidet, ob der besondere Prozeß in die besondere Affini­ tätsausführungsschlange einzureihen ist.
16. System nach Anspruch 1, dadurch gekennzeichnet, daß die Entscheidungseinrichtung abhängig davon, ob der besondere Prozeß in einem vorgegebenen Abschnitt der Affinitätsent­ scheidungsschlange aufgelistet ist, entscheidet, ob der be­ sondere Prozeß in die besondere Affinitätsausführungsschlan­ ge eingereiht werden soll.
17. Computersystem mit:
  • - mehreren Computermaschinen (Maschinen 1-N), die Prozesse ausführen, wobei jeder der mehreren Computermaschinen ein Cachespeicher (Cache 1-N) und eine Affinitätsausführungs­ schlange zugeordnet ist;
  • - einer Cachekontext-Abschätzeinrichtung zum Abschätzen, in bezug auf einen besonderen der Prozesse, des Umfangs des Cachekontextes des Cachespeichers, der derjenigen der meh­ reren Computermaschinen zugeordnet ist, die den besonderen Prozeß ausführte;
  • - einer Einreiheinrichtung zum Einreihen bestimmter der Pro­ zesse in die Affinitätsausführungsschlangen; und
  • - einer Entscheidungseinrichtung, die auf das Ausmaß des Cachekontextes anspricht, um zu entscheiden, ob der besonde­ re Prozeß in die Affinitätsausführungsschlange eingereiht werden soll, die der besonderen Computermaschine zugeordnet ist.
18. Computersystem mit:
  • - mehreren Computermaschinen, die Prozesse ausführen, welche mehreren Computermaschinen jeweils mit einem jeweiligen Cachespeicher, einer jeweiligen Affinitätsausführungsschlan­ ge und mindestens einer globalen Ausführungsschlange verse­ hen sind;
  • - einer Cachekontext-Abschätzeinrichtung zum Abschätzen des Ausmaßes von Cachekontext für einen besonderen der Cache­ speicher in bezug auf einen besonderen der Prozesse;
  • - eine Einreiheinrichtung zum Einreihen bestimmter der Pro­ zesse in die Affinitätsausführungsschlangen; und
  • - einer Entscheidungseinrichtung, die auf das Ausmaß von Cachekontext anspricht, um zu entscheiden, ob der besondere Prozeß in die Affinitätsausführungsschlange einzureihen ist, die der besonderen Computermaschine zugeordnet ist, oder in eine der globalen Ausführungsschlangen.
19. Computersystem mit:
  • - mehreren Computermaschinen, die Prozesse ausführen, zu de­ nen sowohl Prozesse gehören, die einer Maschine nicht fest zugeordnet sind, als auch solche, die einer Maschine fest zugeordnet sind, welche mehreren Computermaschinen mit je­ weiligen Cachespeichern, jeweiligen Affinitätsausführungs­ schlangen und mindestens einer globalen Ausführungsschlange versehen sind;
  • - einer Cachekontext-Abschätzeinrichtung zum Abschätzen des Ausmaßes von Cachekontext für einen besonderen der Cache­ speicher in bezug auf einen besonderen der Prozesse;
  • - eine Einreiheinrichtung zum Einreihen bestimmter der Pro­ zesse in die Affinitätsausführungsschlangen; und
  • - einer Entscheidungseinrichtung, die auf das abgeschätzte Ausmaß von Cachekontext anspricht, um zu entscheiden, ob ein besonderer Prozeß ohne feste Zuordnung eine feste Zuordnung zu einer besonderen der Computermaschinen erhalten soll und in die Affinitätsausführungsschlange der besonderen Compu­ termaschine eingereiht werden soll, und zum Entscheiden, ob ein besonderer Prozeß mit fester Zuordnung die feste Zuord­ nung verlieren soll und in eine der globalen Ausführungs­ schlangen eingereiht werden soll.
20. Computersystem mit:
  • - mehreren Computermaschinen, die Prozesse ausführen und de­ nen jeweilige Affinitätsausführungsschlangen zugeordnet sind, wobei jeweilige besondere Anzahlen von Prozessen jeder Computermaschine zugeordnet sind, wobei die jeweilige beson­ dere Anzahl mindestens 2 beträgt;
  • - einer Speichereinrichtung zum Speichern mehrerer Variab­ len, von denen jede einen Wert aufweist und jede jeweils den mehreren Computermaschinen zugeordnet ist, wobei jede beson­ dere Anzahl einer der Variablen entspricht;
  • - einer Abtasteinrichtung zum wiederholten Abtasten der je­ weiligen besonderen Anzahlen von Prozessen, die jeder Compu­ termaschine zugeordnet sind;
  • - einer Bestimmungseinrichtung zum Bestimmen, welche der je­ weiligen besonderen Anzahlen von Prozessen größer sind als die zugehörigen Variablenwerte;
  • - einer Erhöhungseinrichtung zum Erhöhen jedes der Variab­ lenwerte für die festgestellt wird, daß die zugehörige je­ weilige besondere Anzahl größer ist; und
  • - einer Bewegungseinrichtung zum Übertragen bestimmter der Prozesse von einer der Affinitätsausführungsschlangen, die einer der Computermaschinen mit höchstem Variablenwert zuge­ ordnet sind, in eine der Affinitätsausführungsschlangen, die einer der Computermaschinen mit dem niedrigsten Variablen­ wert.
21. System nach Anspruch 20, dadurch gekennzeichnet, daß jede der jeweiligen besonderen Anzahlen der Prozesse eine ganze Zahl ist, die der Anzahl der Prozesse in der Affini­ tätsausführungsschlange der jeweiligen Computermaschine zu­ züglich 1 entspricht, wenn einer der Prozesse von der jewei­ ligen Computermaschine ausgeführt wird, wenn eine Stichprobe ausführt wird.
22. Verfahren zum Zuordnen von Prozessen zu Ausführungs­ schlangen in einem Computersystem mit mehreren Maschinen, welches Verfahren folgende Schritte aufweist:
  • - Einreihen eines Prozesses in eine globale Ausführungs­ schlange;
  • - Ausführen des Prozesses in einer ersten Computermaschine, die mit einem ersten Cachespeicher versehen ist;
  • - Speichern des Prozesses in einem Speicher;
  • - Speichern eines ersten Zählwertes eines Zählers, der der ersten Computermaschine zugeordnet ist, zum Zeitpunkt, zu dem der Prozeß abgespeichert wird;
  • - Speichern eines zweiten Zählwertes des Zählers zu einem Zeitpunkt, zu dem der Prozeß ausführbar wird;
  • - Vergleichen des ersten mit dem zweiten Zählwert, um das Ausmaß von Speicherkontext abzuschätzen, der im ersten Cachespeicher in bezug auf den Prozeß verbleibt; und
  • - Entscheiden, ob der Prozeß in einer zur ersten Computerma­ schine gehörige Affinitätsausführungsschlange eingereiht werden soll oder in eine andere Ausführungsschlange, was auf Grundlage des abgeschätzten Ausmaßes des Cachekontextes er­ folgt.
23. System nach Anspruch 21, dadurch gekennzeichnet, daß es weiter eine Berücksichtigungseinrichtung aufweist, zum Be­ rücksichtigen der Priorität einer der Prozesse beim Bestim­ men, ob der Prozeß übertragen werden soll.
24. Computersystem mit:
  • - mehreren Computermaschinen (Maschine 1-N), die Prozesse ausführen und mit jeweiligen Affinitätsausführungsschlangen versehen sind, wobei jeweilige besondere Anzahlen von Pro­ zessen jeder Computermaschine zugeordnet sind, wobei die je­ weiligen besonderen Anzahlen mindestens 0 sind;
  • - einer Speichereinrichtung zum Speichern mehrerer Variab­ len, von denen jede einen Wert aufweist und jede jeweils einer der mehreren Computermaschinen zugeordnet ist, wobei jede jeweilige besondere Anzahl einer der Variablen ent­ spricht;
  • - einer Bestimmungseinrichtung zum Bestimmen, welche der be­ sonderen jeweiligen Anzahlen von Prozessen größer ist als der entsprechende Variablenwert;
  • - einer Erhöhungseinrichtung zum Erhöhen jedes der Variab­ lenwerte, für den festgestellt wird, daß eine jeweilige zu­ gehörige besondere Anzahl größer ist; und
  • - einer Bewegungseinrichtung zum Übertragen bestimmter der Prozesse von einer der Affinitätsausführungsschlangen, die einer der Computermaschinen mit einem besonderen Variablen­ wert zugeordnet sind, in eine andere der Affinitätsausfüh­ rungsschlangen, die einer der Computermaschinen zugeordnet sind, die zu einem niedrigeren Variablenwert gehören.
25. System nach Anspruch 24, dadurch gekennzeichnet, daß es außerdem eine Prioritätsberücksichtigungseinrichtung auf­ weist, um die Priorität eines der Prozesse zu berücksichti­ gen, wenn bestimmt wird, ob der Prozeß übertragen werden sollte.
DE4227345A 1991-08-19 1992-08-18 Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem Expired - Lifetime DE4227345C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/747,658 US5185861A (en) 1991-08-19 1991-08-19 Cache affinity scheduler

Publications (2)

Publication Number Publication Date
DE4227345A1 true DE4227345A1 (de) 1993-02-25
DE4227345C2 DE4227345C2 (de) 1999-01-14

Family

ID=25006082

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4227345A Expired - Lifetime DE4227345C2 (de) 1991-08-19 1992-08-18 Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem

Country Status (3)

Country Link
US (1) US5185861A (de)
DE (1) DE4227345C2 (de)
GB (1) GB2258933B (de)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093777A (en) * 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
JPH04195577A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサにおけるタスクスケジューリング方式
US5506987A (en) * 1991-02-01 1996-04-09 Digital Equipment Corporation Affinity scheduling of processes on symmetric multiprocessing systems
US5506999A (en) * 1992-01-22 1996-04-09 The Boeing Company Event driven blackboard processing system that provides dynamic load balancing and shared data between knowledge source processors
US5317738A (en) * 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5404515A (en) * 1992-04-30 1995-04-04 Bull Hn Information Systems Inc. Balancing of communications transport connections over multiple central processing units
US5444848A (en) * 1992-04-30 1995-08-22 Bull Hn Information Systems Inc. Distribution of communications connections over multiple service access points by choosing remote and local access points having lowest number of connections
KR970007002B1 (ko) * 1992-12-10 1997-05-01 니뽄 덴끼 가부시끼가이샤 다중처리 시스템에서 프로세스 디스패치 방법
US5491786A (en) * 1993-03-12 1996-02-13 International Business Machines Corporation Method and system for management of units within a data processing system
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US5687369A (en) * 1993-09-02 1997-11-11 International Business Machines Corporation Selecting buckets for redistributing data between nodes in a parallel database in the incremental mode
US5594886A (en) * 1994-10-23 1997-01-14 Lsi Logic Corporation Pseudo-LRU cache memory replacement method and apparatus utilizing nodes
JPH08249864A (ja) * 1995-03-13 1996-09-27 Pioneer Video Corp 情報編集方法及び装置
US5784614A (en) * 1995-07-27 1998-07-21 Ncr Corporation Cache affinity scheduling method for multi-processor nodes in a split transaction bus architecture
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
DE19530483A1 (de) * 1995-08-18 1997-02-20 Siemens Ag Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
JPH09330237A (ja) 1996-06-07 1997-12-22 Toshiba Corp プロセス切り替え装置およびプロセス切り替え方法
US5872972A (en) * 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
US5724586A (en) * 1996-09-30 1998-03-03 Nec Research Institute, Inc. Method for improving cache locality of a computer program
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US6128711A (en) * 1996-11-12 2000-10-03 Compaq Computer Corporation Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US6829764B1 (en) * 1997-06-23 2004-12-07 International Business Machines Corporation System and method for maximizing usage of computer resources in scheduling of application tasks
US6418517B1 (en) 1997-08-29 2002-07-09 International Business Machines Corporation Optimized function execution for a multiprocessor computer system
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US5931791A (en) * 1997-11-05 1999-08-03 Instromedix, Inc. Medical patient vital signs-monitoring apparatus
GB2336449A (en) * 1998-04-14 1999-10-20 Ibm A server selection method in an asynchronous client-server computer system
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
ATE467171T1 (de) * 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP3780732B2 (ja) * 1999-03-10 2006-05-31 株式会社日立製作所 分散制御システム
US7401112B1 (en) * 1999-05-26 2008-07-15 Aspect Communication Corporation Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors
US6665699B1 (en) * 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
US6745262B1 (en) * 2000-01-06 2004-06-01 International Business Machines Corporation Method, system, program, and data structure for queuing requests having different priorities
US6658449B1 (en) 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
US6748593B1 (en) 2000-02-17 2004-06-08 International Business Machines Corporation Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
US7221377B1 (en) 2000-04-24 2007-05-22 Aspect Communications Apparatus and method for collecting and displaying information in a workflow system
US7739325B1 (en) 2000-04-24 2010-06-15 Aspect Software, Inc. Apparatus and method for extensible real-time workflows
US7310649B1 (en) * 2000-05-15 2007-12-18 Microsoft Corporation Data structure for efficient enqueuing and dequeuing
US6742086B1 (en) * 2000-08-11 2004-05-25 Unisys Corporation Affinity checking process for multiple processor, multiple bus optimization of throughput
US6829769B2 (en) * 2000-10-04 2004-12-07 Microsoft Corporation High performance interprocess communication
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7158964B2 (en) 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) * 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) * 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) * 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) * 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US7149226B2 (en) * 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US7475257B2 (en) 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US7318218B2 (en) 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US20050144415A1 (en) * 2003-12-30 2005-06-30 Intel Corporation Resource management apparatus, systems, and methods
WO2007012919A2 (en) * 2005-07-27 2007-02-01 Adaptec, Inc. Ripple queuing algorithm for a sas wide-port raid controller
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
KR100942740B1 (ko) 2005-08-09 2010-02-17 후지쯔 가부시끼가이샤 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법
US7865895B2 (en) * 2006-05-18 2011-01-04 International Business Machines Corporation Heuristic based affinity dispatching for shared processor partition dispatching
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
JP6365085B2 (ja) * 2014-08-04 2018-08-01 富士通株式会社 データ移行方法及びデータ移行装置
JP6251417B2 (ja) * 2014-10-27 2017-12-20 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US20160179680A1 (en) * 2014-12-18 2016-06-23 Dell Products L.P. Systems and methods for integrated rotation of processor cores
JP6459784B2 (ja) * 2015-06-03 2019-01-30 富士通株式会社 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
CN109298888B (zh) * 2018-10-31 2021-08-24 杭州迪普科技股份有限公司 队列的数据存取方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3848234A (en) * 1973-04-04 1974-11-12 Sperry Rand Corp Multi-processor system with multiple cache memories
US4695951A (en) * 1983-07-07 1987-09-22 Honeywell Bull Inc. Computer hierarchy control
US4638427A (en) * 1984-04-16 1987-01-20 International Business Machines Corporation Performance evaluation for an asymmetric multiprocessor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system

Also Published As

Publication number Publication date
DE4227345C2 (de) 1999-01-14
GB2258933B (en) 1995-10-04
US5185861A (en) 1993-02-09
GB9217740D0 (en) 1992-09-30
GB2258933A (en) 1993-02-24

Similar Documents

Publication Publication Date Title
DE4227345A1 (de) Cachescheduler
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE60027298T2 (de) Verfahren und system zum regeln von hintergrundprozessen mit leistungsmessdaten
EP0762274B1 (de) Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
DE60223394T2 (de) Verfahren und vorrichtung zum einteilen von anforderungen für einen dynamischen direktzugriffsspeicherbaustein
EP0771444B1 (de) Verfahren zur steuerung von technischen vorgängen oder prozessen
DE60008267T2 (de) Verfahren zum planen von zeitverteilten anwendungen in einem rechnerbetriebssystem
EP0333123B1 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE69729822T2 (de) Echtzeit-Taskzuweiser
DE69732020T2 (de) Wiedereinordnung von Speicheranforderungen in einem Datenverarbeitungssystem
US5261053A (en) Cache affinity scheduler
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE102004054571B4 (de) Verfahren zur Verteilung von Rechenzeit in einem Rechnersystem
EP0635784A1 (de) Multiprozessorsystem
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE10392278T5 (de) Verfahren und Vorrichtung zur Speicherzugangssteuerung
DE1549532B1 (de) Unterbrechungs direktorschaltwerk fuer eine datenverarbei tungsanlage mit mehreren rechenanlagen und mehreren peri pheren geraeten
DE102008022080A1 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
DE102013214756A1 (de) Verfahren und vorrichtung zum verbessern des verarbeitungsleistungsvermögens eines mehrkernprozessors
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE202004021684U1 (de) Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: INTERNATIONAL BUSINESS MACHINES CORP., ARMONK,, US

8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7

8320 Willingness to grant licences declared (paragraph 23)
R071 Expiry of right
R071 Expiry of right