DE4227345A1 - Cachescheduler - Google Patents
CacheschedulerInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
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.
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.
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.
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.
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_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.
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.
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.
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.
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.
struct rungl {
struct runq *rql_runq;
struct runql *rql_next;
};
struct engl {
struct engine *el_eng;
struct engl *el_next;
};
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Der Algorithmus schedcpu() ist gegenüber demjenigen bei her
kömmlichen UNIX-Schedulern unverändert.
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.
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.
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.
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.
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.
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)
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 |
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 |
US5404515A (en) * | 1992-04-30 | 1995-04-04 | Bull Hn Information Systems Inc. | Balancing of communications transport connections over multiple central processing units |
US5446893A (en) * | 1992-12-10 | 1995-08-29 | Nec Corporation | Process dispatching method |
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 |
ATE557343T1 (de) | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand |
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 |
US7318218B2 (en) | 2003-09-25 | 2008-01-08 | International Business Machines Corporation | System and method for processor thread for software debugging |
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 |
US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US7523157B2 (en) * | 2003-09-25 | 2009-04-21 | International Business Machines Corporation | Managing a plurality of processors as devices |
US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US7549145B2 (en) | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
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 |
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 |
WO2007017932A1 (ja) | 2005-08-09 | 2007-02-15 | Fujitsu Limited | スケジュール制御プログラム及びスケジュール制御方法 |
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 | 富士通株式会社 | データ移行方法及びデータ移行装置 |
US10162571B2 (en) * | 2014-10-27 | 2018-12-25 | Hitachi, Ltd. | Systems and methods for managing public and private queues for a storage system |
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)
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)
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 |
-
1991
- 1991-08-19 US US07/747,658 patent/US5185861A/en not_active Expired - Lifetime
-
1992
- 1992-08-18 DE DE4227345A patent/DE4227345C2/de not_active Expired - Lifetime
- 1992-08-19 GB GB9217740A patent/GB2258933B/en not_active Expired - Lifetime
Patent Citations (2)
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 |
---|---|
GB2258933A (en) | 1993-02-24 |
GB9217740D0 (en) | 1992-09-30 |
GB2258933B (en) | 1995-10-04 |
DE4227345C2 (de) | 1999-01-14 |
US5185861A (en) | 1993-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4227345A1 (de) | Cachescheduler | |
DE10110504B4 (de) | Verfahren und Computersystem zur Verwaltung von Threads | |
DE69031233T2 (de) | Adaptive Arbeitsfolgeplanung für Mehrfachverarbeitungssysteme | |
DE69129526T2 (de) | Multiprozessorsystem und Verfahren zur Überwachung der Ausführung von Tasks in einem Multiprozesorsystem | |
DE69606648T2 (de) | Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität | |
EP1831786B1 (de) | Verfahren zur verteilung von rechenzeit in einem rechnersystem | |
EP0762274B1 (de) | Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks | |
DE69419680T2 (de) | Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem | |
DE60223394T2 (de) | Verfahren und vorrichtung zum einteilen von anforderungen für einen dynamischen direktzugriffsspeicherbaustein | |
DE69021603T2 (de) | Buszugriffsarbitrierung in digitalen Rechnern. | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE60008267T2 (de) | Verfahren zum planen von zeitverteilten anwendungen in einem rechnerbetriebssystem | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
EP0333123B1 (de) | Modular strukturiertes ISDN-Kommunikationssystem | |
DE112004001320B3 (de) | Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE3884504T2 (de) | Eingabe-Dienstsubsystem zur dynamischer Arbeitsplanung für ein Computersystem. | |
DE602004012492T2 (de) | DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren | |
DE19500957A1 (de) | Verfahren zur Steuerung von technischen Vorgängen oder Prozessen | |
EP0635784A1 (de) | Multiprozessorsystem | |
DE10392278T5 (de) | Verfahren und Vorrichtung zur Speicherzugangssteuerung | |
DE3784998T2 (de) | Verfahren zur Steuerung des Prozessorzugriffs zu Eingangs/Ausgangselementen. | |
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 | |
DE112019000189T5 (de) | Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung |
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 |