DE69716663T2 - Prozesszuweisung in einem Mehrrechnersystem - Google Patents

Prozesszuweisung in einem Mehrrechnersystem

Info

Publication number
DE69716663T2
DE69716663T2 DE69716663T DE69716663T DE69716663T2 DE 69716663 T2 DE69716663 T2 DE 69716663T2 DE 69716663 T DE69716663 T DE 69716663T DE 69716663 T DE69716663 T DE 69716663T DE 69716663 T2 DE69716663 T2 DE 69716663T2
Authority
DE
Germany
Prior art keywords
memory
pool
nodes
multiprocessor
node
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.)
Expired - Fee Related
Application number
DE69716663T
Other languages
English (en)
Other versions
DE69716663D1 (de
Inventor
Mark Robert Funk
Larry Keith Mcmains
Donald Arthur Morrison
Robert Anthony Petrillo
Robert Carl Seemann
Arthur Douglas Smet
Timothy Joseph Torzewski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69716663D1 publication Critical patent/DE69716663D1/de
Publication of DE69716663T2 publication Critical patent/DE69716663T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff.
  • Der ständig zunehmende Bedarf an Rechenleistung hat Computerarchitekturen mit Mehrprozessor- oder Parallelprozessorsystemen erforderlich gemacht. Während die Komponenten und die Signalgeschwindigkeit von Einzelprozessoren das gleichzeitige Verarbeiten von nur wenigen Anweisungen erlauben, enthält ein Mehrprozessor mehrere unabhängige Prozessoren, die mehrere Anweisungen parallel ausführen können und dadurch die Verarbeitungsgeschwindigkeit beträchtlich erhöhen. Eine Prozessorgruppe innerhalb des Mehrprozessors kann als Knoten oder Cluster definiert werden, wobei jeder Prozessor des Knotens Anweisungen eines oder mehrerer Prozesse ausführt, um eine leistungsfähige, parallele Verarbeitung dieser Prozesse zu ermöglichen. Einige moderne Mehrprozessoren enthalten mehrere Knoten und weisen unterschiedlichen Knoten im System Prozesse zu, um die parallele Verarbeitung mehrerer Prozesse zu gewährleisten.
  • In einem enggekoppelten Mehrprozessorsystem sind die zahlreichen Prozessoren des Systems in einem leitungsvermittelten Hochgeschwindigkeitsnetzwerk untereinander verbunden und benutzen normalerweise gemeinsam ein einzelnes Speichersystem. Die Prozessoren werden üblicherweise vom selben Steuerprogramm gesteuert und können direkt miteinander kommunizieren. Ein Benutzer kann dieses Systems als Einzelprozessorsystem verwenden, aber wenn ein Benutzerprogramm mehrere Tasks erzeugt, kann das Betriebssystem diese Tasks verschiedenen Prozessoren zuweisen. Beim Verarbeiten von Prozessen, die keine Teilprozesse erzeugen, kann ein Multitasking-fähiges Betriebssystem die Prozessoren eines Mehrprozessors als einfachen Rechenressourcensatz auffassen, in dem mehrere Programme über einen verfügbaren Prozessor gestartet werden.
  • Eine bei enggekoppelten Mehrprozessorsystemen immer häufiger eingesetzte Speicherarchitektur ist die Speicherarchitektur für den uneinheitlichen Speicherzugriff (Non-Uniform Memory Access, NUMA). Verglichen mit dem bisherigen Stand der Technik bietet die NUMA-Speicherarchitektur allgemeine Vorteile bei der Geschwindigkeit. Außerdem kombiniert diese Architektur eine enorme Skalierbarkeit auf bis zu 250 Prozessoren mit dem vereinfachten Programmiermodell der symmetrischen Mehrprozessortechnologie. Das NUMA-Mehrprozessorsystem besteht aus einem Satz Knoten mit symmetrischem Mehrprozessorbetrieb (Symmetric Multiprocessing, SMP), die über eine Verbindung hoher Bandbreite so miteinander verbunden sind, dass alle Prozessoren auf einen beliebigen Hauptspeicher im System zugreifen können. Die Knoten benutzen gemeinsam denselben adressierbaren Hauptspeicher, der auf die lokalen Hauptspeicher der Knoten verteilt ist. Die Zugriffszeit auf den lokalen Hauptspeicher innerhalb eines Knotens ist für alle Prozessoren des Knotens gleich lang. Beim Zugriff auf den Hauptspeicher eines anderen Knotens kommt es jedoch zu einer längeren Latenzzeit als bei einem vergleichbaren Zugriff auf den lokalen Hauptspeicher. Angesichts dieser längeren Latenzzeit bei Zugriffen auf nichtlokalen Speicher könnte die Systemleistung verbessert werden, wenn die Speicherverwaltungsfunktion des Betriebssystems in der Lage wäre, die Speichernutzung so zusteuern, dass der prozentuale Anteil der Prozessorzugriffe auf nichtlokalen Speicher minimiert wird. Ohne die Entwicklung einer solchen Funktion wird es den Herstellern von Mehrprozessorsystemen folglich nicht möglich sein, die höhere Leistung der NUMA- Speicherarchitektur voll auszuschöpfen.
  • US-Patentschrift 5 269 013 beschreibt ein adaptives Speicherverwaltungsverfahren für Mehrprozessorcomputersysteme mit gekoppelten Speichern. In einem Mehrprozessorsystem mit gekoppelten Speichern befinden sich alle Daten und Stapelseiten von Prozessen, die einzelnen Mehrprozessoren zugewiesen sind, vorzugsweise in einem Speicherbereich, der mit dem zugewiesenen Prozessor verbunden ist. Suboptimale Verweise auf Daten und Stapelseiten im globalen Speicher werden erkannt, und diese Seiten werden in den verbundenen Speicherbereich des CPU-Moduls verschoben, das häufig auf, die Seiten Bezug nimmt.
  • Demgemäß stellt die vorliegende Erfindung ein Verfahren der Prozesszuweisung in einem Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff bereit, bei dem das Mehrprozessorsystem über mehrere miteinander verbundene Knoten (101-106) mit Mehrprozessorbetrieb und über einen auf, die Knoten mit Mehrprozessorbetrieb verteilten Hauptspeicher verfügt, wobei jeder Knoten mit Mehrprozessorbetrieb einen oder mehrere Prozessoren sowie einen lokalen Hauptspeicher enthält, wobei das Verfahren durch folgende Schritte gekennzeichnet ist:
  • dynamisches Reservieren eines Speicherpools innerhalb des Hauptspeichers; Zuweisen des reservierten Speicherpools zu einem oder mehreren Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers des einen oder der mehreren Knoten mit Mehrprozessorbetrieb umfasst; und Zuweisen eines mit dem Speicherpool verknüpften Prozesses zu einem Knoten mit Mehrprozessorbetrieb, dem der Speicherpool zugewiesen wurde.
  • Einem Prozess wird vorzugsweise ein Attribut zugeordnet, das den mit dem Prozess verknüpften Speicherpool angibt, und dem Prozess wird ein Speicherbereich aus dem verknüpften Speicherpool innerhalb des Knotens zugeteilt, der dem Prozess zugewiesen ist.
  • Wenn der Speicherpool zwei oder mehr Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb zugeordnet ist, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers der zwei oder mehr Knoten mit Mehrprozessorbetrieb umfasst, wird ein Prozess an einem bestimmten Knoten mit Mehrprozessorbetrieb der zwei oder mehr Knoten mit Mehrprozessorbetrieb in Abhängigkeit von der Leistungsstatistik für jeden Knoten mit Mehrprozessorbetrieb zugewiesen.
  • Der oben beschriebene Ansatz der Speicherpool- und Prozesszuweisungsmechanismen ermöglicht eine verbesserte Speicherverteilung in einem Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff, sodass mehr Zugriffe auf lokale Hauptspeicher erfolgen können und eine bessere Systemleistung erzielt wird.
  • Die Erfindung stellt außerdem ein Computerprogrammprodukt bereit, das einen Programmcode umfasst, der geeignet ist, in einem Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff das oben beschriebene Verfahren auszuführen.
  • Die Erfindung stellt außerdem ein Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff bereit, wobei das Mehrprozessorsystem umfasst: eine Vielzahl untereinander verbundener Knoten mit Mehrprozessorbetrieb, wobei jeder Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb einen oder mehrere Prozessoren und einen lokalen Hauptspeicher enthält und wobei das System dadurch gekennzeichnet ist, dass es außerdem umfasst: einen Hauptspeicher, der in einer Speicherarchitektur für den uneinheitlichen Speicherzugriff auf die Knoten mit Mehrprozessorbetrieb dergestalt verteilt ist, dass der Hauptspeicher die lokalen Hauptspeicher aus der Vielzahl der untereinander verbundenen Knoten mit Mehrprozessorbetrieb enthält, und wobei auf jeden lokalen Hauptspeicher durch jeden lokalen Prozessor aus der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb zugegriffen werden kann; ein Poolreservierungsmechanismus, dar einen oder mehrere Speicherpools innerhalb des Hauptspeichers dynamisch reserviert; einen Poolzuweisungsmechanismus, der einem oder mehreren Knoten mit Mehrprozessorbetrieb der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb einen reservierten Speicherpool zuweist; sowie einen Prozesszuweisungsmechanismus, der einen mit einem reservierten Speicherpool verknüpften Prozess einem Knoten mit Mehrprozessorbetrieb zuweist, dem der Speicherpool zugewiesen wurde.
  • Vorzugsweise weist außerdem der Prozesszuweisungsmechanismus jeden Prozess einer Vielzahl von Prozessen, die auf den Speicherpool zugreifen, einem Knoten mit Mehrprozessorbetrieb zu, dem dieser Speicherpool zugewiesen wurde.
  • In der bevorzugten Ausführungsform umfassen der Poolreservierungs-, der Poolzuweisungs- und der Prozesszuweisungsmechanismus jeweils ein oder mehrere Softwareobjekte, die im Hauptspeicher gespeichert sind und innerhalb der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb ausgeführt werden.
  • Infolgedessen können die Poolzuweisungs- und Prozesszuweisungsmechanismen durch das Erzeugen einer Affinität zwischen Prozess und Knoten eine höhere Leistung in einem NUMA-Mehrprozessorsystem erzielen, das eine Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb enthält, die jeweils einen oder mehr Prozessoren und einen lokalen Hauptspeicher enthalten, wobei der Hauptspeicher des Systems in einer NUMA-Architektur auf die lokalen Hauptspeicher der Knoten mit Mehrprozessorbetrieb verteilt ist. Mit einem Poolreservierungsmechanismus können Speicherpools innerhalb des logischen Hauptspeichers reserviert werden, wobei der Poolzuweisungsmechanismus diese Pools realen Seiten im lokalen Hauptspeicher der Knoten mit Mehrprozessorbetrieb zuweist. Den an einem Mehrprozessor zu erzeugenden Prozessen kann anschließend ein Attribut zugeordnet werden, das einen verknüpften Speicherpool angibt. Bei der Erzeugung weist der Prozesszuweisungsmechanismus einen Prozess nur einem Knoten mit Mehrprozessorbetrieb zu, dem der vom Attribut des Prozesses angegebene Speicherpool zugewiesen wurde. Diese Affinität zwischen Prozess und Knoten erhöht die Anzahl der vom zugewiesenen Prozess erfolgenden Zugriffe auf den lokalen Hauptspeicher des Knotens und verbessert dadurch die Systemleistung.
  • Nachfolgend werden bevorzugte Ausführungsformen der vorliegenden Erfindung jeweils nur als Beispiel und in Bezug auf die begleitenden Zeichnungen beschrieben:
  • Fig. 1 ist ein Blockschaltbild, das ein Mehrprozessorsystem mit gemeinsam benutztem Speicher und NUMA-Speicherarchitektur darstellt:
  • Fig. 2 ist ein logisches Blockdiagramm, das die Speicherverwaltung und die Prozesszuweisungsmechanismen des Mehrprozessor-Datenverarbeitungssystem aus Fig. 1 veranschaulicht.
  • Fig. 3 ist ein Diagramm, das die im Speicherpoolverzeichnis eines Knotens von einem Poolzuweisungsmechanismus 132 ausgeführte Speicherpoolzuweisung veranschaulicht.
  • Fig. 4 ist ein logisches Flussdiagramm, das das Verfahren der Prozesszuweisung in einem Mehrprozessorsystem mit NUMA- Speicherarchitektur beschreibt.
  • Fig. 1 ist ein Blockschaltbild, das ein Mehrprozessorsystem mit gemeinsam benutztem Speicher und einer Speicherarchitektur für den uneinheitlichen Speicherzugriff (Non-Uniform Storage Access, NUMA) darstellt, das auch als SMC-Speicherarchitektur (Shared Memory Cluster, Gruppen gemeinsam genutzter Speicher, SMC) bezeichnet wird. Das in allgemeiner Form 100 dargestellte NUMA-Mehrprozessorsystem mit gemeinsam benutztem Speicher besteht aus einem Satz symmetrischer Knoten mit Mehrprozessorbetrieb (Symmetric Multiprocessing, SMP), die jeweils über einen eigenen Satz Prozessoren, Hauptspeicher und potenzieller E/A-Verbindungen verfügen und die untereinander durch eine Verbindung mit hoher Bandbreite verbunden sind, die es ermöglicht, dass alle Prozessoren auf die Inhalte aller Hauptspeicher im System zugreifen können. Genaugenommen wird das System durch folgende Attribute charakterisiert:
  • 1) Eine Verbindung zwischen einem Satz SMP-Knoten und jedem einzelnen SMP-Knoten, wobei der Satz Folgendes enthält:
  • A) 1 bis N Prozessoren;
  • B) Hauptspeicherkarten;
  • C) Cachespeicher, der einzeln mit jedem Prozessor und/oder mit Teilmengen der Prozessoren des Knotens verbunden ist;
  • D) 1 oder mehr potenzielle Verbindungen mit E/A- Bussen und -Einheiten.
  • 2) Alle Prozessoren können auf den Inhalt jedes Knotenhauptspeichers zugreifen;
  • 3) Der Inhalt des Hauptspeichers in Prozessor-Cachespeichern (oder in Cachespeichern von Prozessorteilmengen) kann mit allen Änderungen kohärent bleiben, die am Inhalt eines beliebigen Hauptspeichers vorgenommen werden. Die Speicherorganisation und die Unteilbarkeit können ebenfalls verwaltet werden.
  • 4) Der Begriff "lokal" bezieht sich per Definitionem auf die Prozessoren und Hauptspeicher am selben Knoten, während mit dem Begriff "nichtlokal" bzw. "entfernt" Hauptspeicher und Prozessoren an anderen Knoten gemeint sind. Die Zeit, (beispielsweise die Latenzzeit beim Füllen des Cachespeichers) die ein Prozessor für den Lese- oder Schreibzugriff auf den Inhalt eines lokalen Hauptspeichers benötigt, ist tendenziell kürzer als die Zeit für den Zugriff auf nichtlokale Hauptspeicher.
  • 5) E/A-Interrupts und Interrupts zwischen Prozessoren können an jeden Knoten oder Prozessor (oder dessen Teilmenge) gesendet werden.
  • Wie aus der Darstellung der Ausführungsform in Fig. 1 hervorgeht, umfasst das System vier Knoten 101, 102, 104 und 106 mit Mehrprozessorbetrieb. Im Allgemeinen sind innerhalb eines Knotens mit Mehrprozessorbetrieb ein oder mehrere Prozessoren durch einen knoteninternen Verbindungsmechanismus, z. B. durch einen speziellen Kreuzschienenbus oder Kreuzschienenschalter, mit einem lokalen Hauptspeicher verbunden. Wie in Fig. 1 dargestellt, enthält jeder Knoten 101 bis 106 mit Mehrprozessorbetrieb eine Vielzahl von Prozessoren P&sub1;-PN, den diesen Prozessoren zugeordneten Cachespeicher sowie einen auf die Prozessoren des Knotens verteilten lokalen Hauptspeicher (bzw. die Hauptspeicher 108 bis 114). Die Knoten 101 und 102 mit Mehrprozessorbetrieb enthalten außerdem eine E/A-Einheit, die die Verbindung zum E/A-Bereich unterstützt, zu dem unter anderem Drucker, Kommunikationsverbindungen, Arbeitsplatzrechner oder Einheiten für den Direktspeicherzugriff (Direct Access Storage Devices, DASD) gehören.
  • Die Mehrprozessorknoten sind in einem SCI-Verbindungsnetzwerk untereinander verbunden, das dem Standard IEEE 1596-1992 entspricht. Bei SCI (Scalable Coherent Interface) handelt es sich um ein Verbindungsnetzwerk mit hoher Bandbreite, das durch einen 18 Bit breiten getakteten Bus realisiert wird, der Datenpakete mit einer Übertragungsrate von 16 Datenbits pro 2 ns (Spitzenwert 1 GB/s) über jede einzelne Punkt-zu-Punkt- Verbindung sendet und die Cachespeicherkohärenz im gesamten. System aufrecht erhält. Pro Knoten mit Mehrprozessorbetrieb stellt eine Verbindungseinheit der Verbindungseinheiten 116 bis 122 die Verbindung zum SCI-Netzwerk her und ermöglicht dadurch die Verbindung der Mehrprozessoren untereinander.
  • Alle Prozessoren im gesamten System benutzen gemeinsam denselben adressierbaren Hauptspeicher, der auf die Knoten mit Mehrprozessorbetrieb als lokale Hauptspeicher verteilt ist und auf den alle Prozessoren Zugriff haben Infolgedessen besteht der gesamte adressierbare Hauptspeicher innerhalb des Systems 100 aus der Kombination aller lokalen Hauptspeicher 108 bis 114. Jedes Byte des Hauptspeichers ist durch eine eindeutige reale Adresse adressierbar. Die Buslogik überwacht für jeden Knoten mit Mehrprozessorbetrieb die von den Prozessoren oder der E/A-Einheit des Knotens erfolgenden Speicherzugriffe und leitet lokale Speicherzugriffe an den lokalen Hauptspeicher des Knotens weiter. Zugriffe auf nichtlokalen Speicher werden über die Verbindungseinheit an das Verbindungsnetzwerk weitergeleitet.
  • Fig. 2 ist ein logisches Blockdiagramm, das die Poolreservierungs-, Poolzuweisungs- und Prozesszuweisungsmechanismen des in Fig. 1 dargestellten Systems gemäß einer veranschaulichenden Ausführungsform der vorliegenden Erfindung darstellt. Das Betriebssystem für das Mehrprozessorsystem enthält einen Poolreservierungsmechanismus 130, einen Poolzuweisungsmechanismus 132 und einen Prozesszuweisungsmechanismus 134. Wie bereits oben beschrieben, ist der Hauptspeicher des Systems in einer NUMA- Speicherarchitektur so auf die Knoten 101 bis 106 mit Mehrprozessorbetrieb (in Fig. 2 als N1, N2, N3 bzw. N4 dargestellt) verteilt, dass der Hauptspeicher in den lokalen Hauptspeichern 108 bis 114 der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb enthalten ist. Die in den lokalen Hauptspeichern enthaltene Gesamtspeicherkapazität des Systems wird als logischer Hauptspeicher 136 angezeigt. Der logische Hauptspeicher 136 ist eine logische Darstellung der Gesamtheit der realen Speicherseiten, die in allen lokalen Hauptspeichern 108 bis 114 verfügbar sind. In diesem Beispiel wird der logische Hauptspeicher mit einer Kapazität von 4 GB dargestellt. Dies entspricht in etwa einer Million Seiten mit einer Größe von jeweils 4 KB.
  • Der Poolreservierungsmechanismus 130, der Teil des in das Betriebssystem integrierten Speicherverwaltungssystems ist, reserviert einen oder mehrere Speicherpools mit einer vorab festgelegten oder vorab berechneten Anzahl realer Speicherseiten innerhalb des logischen Hauptspeichers 136. Gemäß dem Stand der Technik handelt es sich bei einem Speicherpool um eine von einem Benutzer (oder vom Betriebssystem) für einen benutzerdefinierten Zweck reservierten Bereich oder prozentualen Anteil des Hauptspeichers. Der Poolreservierungsmechanismus 130 unterstützt eine Vielzahl von Speicherpools, deren Größe jeweils zwischen null Seiten und dem Großteil des Hauptspeichers variieren kann. In dem in Fig. 2 dargestellten Beispiel reserviert der Poolreservierungsmechanismus 130 die Speicherpools A, B und C in der jeweils vorab zugewiesenen oder berechneten Größe.
  • Der Poolzuweisungsmechanismus 132 weist Speicherpools vorzugsweise in den lokalen Hauptspeichern 108 bis 114 der Knoten 101 bis 106 mit Mehrprozessorbetrieb zu. Auf der Grundlage vorab ausgewählter Kriterien oder eines Zuweisungsalgorithmus, die verschiedene Faktoren, wie z. B. die Auslastung des Prozessors, berücksichtigen, weist der Poolzuweisungsmechanismus 132 einen bestimmten reservierten Speicherpool einem oder mehreren Knoten mit Mehrprozessorbetrieb der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb zu. Der lokale Hauptspeicher eines Knotens aus einer Vielzahl von Knoten mit Mehrprozessorbetrieb, dem ein bestimmter Speicherpool zugewiesen wird, kann jederzeit den gesamten Speicherpool, einen Teil des Speicherpools oder gar keine Speicherpoolseiten enthalten. Die Zuweisungsfunktion bezeichnet die Seiten eines im logischen Hauptspeicher 136 reservierten Speicherpools so, dass sie in einem oder mehreren bestimmten Knoten bestimmte reale Seiten darstellen. Diese Zuweisung wird, wie weiter unten beschrieben, in einem Speicherpoolverzeichnis ausgeführt. In dem in Fig. 2 dargestellten Beispiel weist der Poolzuweisungsmechanismus 132 den Speicherpool A dem Knoten 106 (N4) mit Mehrprozessorbetrieb und den Speicherpool B den Knoten 102 (N2) und 104 (N3) mit Mehrprozessorbetrieb zu. Da der Speicherpool A nur einem Knoten mit Mehrprozessorbetrieb zugewiesen wurde, befinden sich alle Seiten des Speicherpools im lokalen Hauptspeicher 114. Die Speicherseiten von Pool B werden auf die lokalen Hauptspeicher 110 und 112 verteilt, wobei jeder lokale Hauptspeicher eine Anzahl Speicherseiten zwischen null und der Gesamtzahl der Seiten erhält. Es ist nachvollziehbar, dass das Zuweisen eines Speicherpools zu einem Knoten mit Mehrprozessorbetrieb nicht zwingend einschließt, dass bestimmte Daten im lokalen Hauptspeicher des Knotens gespeichert werden.
  • Fig. 3 ist ein Diagramm, das die im Speicherpoolverzeichnis eines Knotens von einem Poolzuweisungsmechanismus 132 ausgeführte Speicherpoolzuweisung veranschaulicht. Im Mehrprozessor wird für jeden Knoten ein Speicherpoolverzeichnis verwaltet, das Verzeichniseinträge enthält, die auf jede Speicherseite im Knoten einen Speicherpool-Kennzeichner abbilden. Es ist nachvollziehbar, dass jeder der Einträge im Speicherpoolverzeichnis eine Eins- zu-Eins-Beziehung zu einer realen Speicherseite im Knoten hat. In dem in Fig. 3 dargestellten Beispiel umfasst das Speicherpoolverzeichnis 146 einen Satz Verzeichniseinträge für Speicherpool 1, die in einer Ringliste 140 miteinander verbunden sind, sowie einen Satz Verzeichniseinträge für Speicherpool 2, die in einer Ringliste 142 miteinander verbunden sind.
  • Der Poolzuweisungsmechanismus 132 weist einem Knoten einen reservierten Speicherpool zu, indem er in der Poolgrundstruktur 144 einen Eintrag für den Speicherpool erzeugt und im Speicherpoolverzeichnis 1916 eine Liste miteinander verbundener Einträge für den Speicherpool erstellt. Wie aus Fig. 3 hervorgeht, wurden in der Poolgrundstruktur Einträge für Pool 1 bis Pool N erzeugt. Jeder Eintrag in der Poolgrundstruktur enthält Informationen über die Größe des Speicherpools, die Adresse des ersten Eintrags im Speicherpoolverzeichnis des Pools sowie fortlaufende Statistiken über die Auslastung des Speicherpools, beispielsweise Informationen über den Anteil der geänderten Seiten, den Anteil der ungültig gemachten und nicht geänderten Seiten sowie über den Anteil spezifischer Seitentypen (d. h. für Datenbanken, E/A-Einheiten usw.). Die Adresse des ersten Eintrags im Speicherpoolverzeichnis indexiert die anderen Einträge im Speicherpoolverzeichnis, und anschließend wird der Speicherpool durch die Ringliste (die potenziell Millionen von Seiten enthalten kann) definiert. Die Ringliste wird aktualisiert, wenn Einträge (und die ihnen zugeordneten Seiten) in den Speicherpool verschoben oder aus diesem entfernt werden. Ein Speicherpool kann einem Knoten zugewiesen werden, indem in der Poolgrundstruktur 144 ein Eintrag erzeugt wird, wenn in diesem Knoten keine Poolverzeichniseinträge und somit keine realen Speicherseiten enthalten sind (siehe z. B. Pool N).
  • Die in Fig. 2 dargestellten Prozesse 1, 2 und 3 wurden für die Ausführung im Mehrprozessorsystem erzeugt oder bereitgestellt. Jedem der Prozesse 1 bis 3 wurde ein vom Benutzer festgelegtes Attribut zugeordnet, das einen mit, dem Prozess zu verknüpfenden Speicherpool angibt. Der Prozesszuweisungsmechanismus 134 weist jeden dieser Prozesse vorzugsweise einem Knoten mit Mehrprozessorbetrieb zu, der als eine Funktion des prozesseigenen Speicherpoolattributs ausgeführt werden soll. Wurde der durch das Speicherpoolattribut angegebene Speicherpool nur einem Knoten zugewiesen, wird der Prozess diesem Knoten zugeordnet. Wurde, der Speicherpool mehreren Knoten zugewiesen, ermittelt der Prozesszuweisungsmechanismus 134 anhand einer Verwendungsstatistik (die z. B. Angaben zur Paging-Rate und zur Speicherverfügbarkeit für den Speicherpool enthält), welchem Knoten der Vielzahl von Knoten der Prozess zugewiesen wird. Unter Berücksichtigung dieses Kriteriums wählt der Prozesszuweisungsmechanismus 134 tendenziell einen Knoten mit einer niedrigeren Paging-Rate aus, bei dem es sich üblicherweise um den Knoten handelt, der im Speicherpool über die meisten verfügbaren Seiten verfügt.
  • Beim Zuweisen eines Speicherpools zu einem Knoten mit Mehrprozessorbetrieb meldet in einer bevorzugten Ausführungsform der Poolzuweisungsmechanismus 132 die Zuweisung dem Prozesszuweisungsmechanismus 134. Der Prozesszuweisungsmechanismus 134 verwaltet einen Zuweisungsdatensatz 136 für die Knoten, denen reservierte Speicherpools zugewiesen wurden. Auf diesen Datensatz wird zugegriffen, um eine Übereinstimmung zwischen dem mit dem Prozess verknüpften Speicherpool und einem im Zuweisungsdatensatz enthaltenen Speicherpool zu suchen. Wird eine Übereinstimmung gefunden, wird der Prozess dem Knoten mit Mehrprozessorbetrieb oder einem der Knoten aus der Vielzahl von Knoten mit Mehrprozessorbetrieb zugewiesen, die im Zuweisungsdatensatz 136 für den Speicherpool aufgelistet sind. Da der mit dem Prozess verknüpfte Speicherpool diesem Knoten zugewiesen wurde, ist es wahrscheinlich, dass die vom Prozess angesteuerten Speicheradressen im lokalen Hauptspeicher des Knotens mit Mehrprozessorbetrieb enthalten sind. Außerdem bleiben die für einen Knoten erzeugten Prozesse tendenziell in diesem Knoten (d. h., sie werden auf die Prozessoren des Knotens verteilt), sodass Speicher tendenziell nur lokal zugewiesen wird. Der Poolzuweisungsmechanismus erstellt weiterhin fortlaufende Leistungsstatistiken hinsichtlich der Auslastung (d. h. hinsichtlich der Paging-Raten und der Verfügbarkeit) des Hauptspeichers, der jedem Speicherpool an jedem Knoten zugeordnet ist, und weist Speicherpools ggf. erneut zu. Es ist nachvollziehbar, dass die Prozesse nach ihrer Zuweisung zu einem Knoten zwischen den Knoten mit Mehrprozessorbetrieb verschoben werden können. Ob und an welchen Zielknoten ein Prozess verschoben wird, wäre in diesem Fall ebenfalls von der Verfügbarkeit und der Auslastung des Speicherpools abhängig.
  • In dem in Fig. 2 dargestellten Beispiel sind Prozess 1 und Prozess 3 mit Speicherpool B verknüpft, während Prozess 2 mit Speicherpool A verknüpft ist. Der Zuweisungsdatensatz 136 zeigt die Zuweisung von Speicherpool A zu N4 (Knoten 106 mit Mehrprozessorbetrieb), die Zuweisung von Speicherpool B zu N2 und N3 (Knoten 101 und 102 mit Mehrprozessorbetrieb) sowie die Zuweisung von Speicherpool C zu N1. Daher hat der Prozesszuweisungsmechanismus 134 Prozess 1 dem Knoten N2, Prozess 2 dem Knoten N4 und Prozess 3 dem Knoten N3 zugewiesen. In einer alternativen Ausführungsform wird kein Zuweisungsdatensatz erstellt, und der Prozesszuweisungsmechanismus fragt die Poolgrundstruktur jedes Knotens ab, um die Zuweisung von Speicherpools festzustellen.
  • Wenn ein Prozess (mit seinen Task(s)/Thread(s)) im virtuellen Adressraum auf eine noch nicht im realen Adressraum abgebildete Seite zugreift, teilt der Poolzuweisungsmechanismus 132 die Seite dem Prozess zu und bildet die angesteuerte Seite im virtuellen Adressraum des Knotens auf einer physischen Seite ab, die sich in dem mit dem Prozess verknüpften Speicherpool befindet. Als weitere Einschränkung zum Erzielen einer höheren Leistung kann es erforderlich sein, dass die für einen Prozess abgebildete Seite nur an dem Knoten, der dem Prozess zugewiesen ist, in dem mit dem Prozess verknüpften Speicherpool abgebildet werden kann. Mit anderen Worten, einem zugewiesenen Prozess, der an dem Prozessor eines bestimmten Knotens ausgeführt wird, wird nur der Speicher aus dem Speicherpool dieses Knotens zugewiesen. Der vom Speicherpoolattribut des Prozesses angegebene Speicherpool befindet sich in der Poolgrundstruktur 144, und die im Speicherpoolverzeichnis 146 enthaltene und Von der Poolgrundstruktur indexierte Verbundliste wird nach einer im Speicherpool Verfügbaren Seite durchsucht. Wird eine verfügbare Seite gefunden oder erzeugt, wird der für die Seite im Speicherpoolverzeichnis 146 enthaltene Eintrag der virtuellen Adresse zugeordnet, die den Seitenfehler verursacht. Wenn der Benutzer oder das System ähnliche Prozesse fachgerecht mit demselben Speicherpool verknüpft hat, enthalten die im Speicherpoolverzeichnis eines bestimmten Knotens befindlichen Einträge sehr, wahrscheinlich Seiten, die von mehr als einem mit dem Speicherpool verknüpften Prozess benötigt werden, sodass es zu weniger Seitenfehlern und/oder Zugriffen auf nichtlokalen Speicher kommt. Daher bleiben sowohl die Prozesse als auch die Speicherpools, auf die diese Prozesse zugreifen, dem Knoten tendenziell zugeordnet, wodurch die Anzahl der Zugriffe auf lokalen Hauptspeicher im gesamten Mehrprozessorsystem erhöht wird.
  • Es ist ersichtlich, dass durch diesen Ansatz eine "Knotenaffinität" zwischen Prozessen und dem Speicher geschaffen wird, auf den die Prozesse zugreifen. Mit anderen Worten, es werden Prozesse Knoten zugewiesen, denen ein Speicherpool zugeordnet ist, der mit großer Wahrscheinlichkeit die von dem Prozess benötigten Daten enthält. Darüber hinaus bleiben die Daten für einen gegebenen Speicherpool sehr wahrscheinlich in den zugewiesenen Knoten gespeichert, weil die Prozesse, die auf diese Daten Zugriff haben müssen, nur diesen Knoten zugewiesen werden. Wenn ferner der Poolzuweisungsmechanismus einzelne Speicherpools so wenigen Knoten wie möglich zuweist, verkürzt die. Affinität zwischen Prozessen und Knoten die Speicherzugriffszeiten, indem die Anzahl der Zugriffe auf nichtlokalen Speicher außerhalb der Knotengrenzen verringert wird. Diese verstärkte Gebundenheit der Bezüge erhöht die Leistung der NUMA-Speicherarchitektur erheblich.
  • Fig. 4 ist ein logisches Flussdiagramm, das das Verfahren der Prozesszuweisung in einem Mehrprozessorsystem mit NUMA- Speicherarchitektur gemäß einer veranschaulichenden Ausführungsform der vorliegenden Erfindung beschreibt. Der Prozess wird mit Schritt 200 gestartet und mit Schritt 210 fortgesetzt, in dem ein oder mehrere Speicherpools innerhalb des Hauptspeichers reserviert werden. Dieser reservierte Bereich adressierbaren Speichers ist einem bestimmten benutzerdefinierten Zweck vorbehalten. Das Betriebssystem reserviert dynamisch Speicherpools, deren Größe zwischen null Seiten und Speicherblöcken aus mehreren Millionen Seiten variiert. Das Verfahren wird anschließend mit Schritt 220 fortgesetzt, in dem ein reservierter Speicherpool einem oder mehreren Knoten mit Mehrprozessorbetrieb im System zugewiesen wird. Das Betriebssystem (oder der Systembediener) legt die Poolgröße fest und weist neben allgemeinen Angaben des Systembenutzers den Speicherpool auf der Grundlage der aktuellen und der wahrscheinlichen Systemauslastung einem bestimmten Knoten zu. Diese Festlegungen und Zuweisungen werden vom System dynamisch angepasst, wenn Leistungsstatistiken erstellt werden. In Abhängigkeit von den Systemdaten kann das Betriebssystem einen Speicherpool außerdem mehr als einem Knoten mit. Mehrprozessorbetrieb zuweisen oder erneut zuweisen.
  • Das Verfahren wird mit Schritt 240 fortgesetzt, in dem anhand des vom Systembediener festgelegten Speicherpoolattributs ermittelt wird, auf welchen Speicherpool der Prozess während seiner Ausführung zugreift. Das Verfahren wird am Entscheidungsblock 250 fortgesetzt, an dem ermittelt wird, ob der durch das Speicherpoolattribut angegebene Speicherpool mehr als einem Knoten mit Mehrprozessorbetrieb zugewiesen wurde. Wenn der Speicherpool nur einem Knoten mit Mehrprozessorbetrieb zugewiesen wurde, muss der Prozess, wie in Schritt 260 beschrieben, dem Knoten zugewiesen werden, dem der Speicherpool zugeordnet ist. Wenn am Entscheidungsblock 250 ermittelt wird, dass der Speicherpool mehr als einem Knoten mit Mehrprozessorbetrieb zugewiesen wurde, wird das Verfahren mit Schritt 270 fortgesetzt, in dem der Auslastungsgrad für den Speicherpool an jedem Knoten mit Mehrprozessorbetrieb festgestellt wird, dem der Speicherpool zugeordnet ist. Die Speicherpoolauslastung lässt sich pro Knoten durch das Rückverfolgen der Paging-Raten und der Verfügbarkeit des mit dem Speicherpool verknüpften Hauptspeichers ermitteln. Der Knoten mit Mehrprozessorbetrieb mit der geringsten Auslastung wird als Knoten bestimmt, der die niedrigsten Paging-Raten und die höchste Verfügbarkeit an lokalem Hauptspeicher innerhalb des Speicherpools aufweist. Das Verfahren wird anschließend mit Schritt 280 fortgesetzt, in dem der Prozess dem Knoten zugewiesen wird, der als Knoten ermittelt wurde, an dem der mit dem Prozess zu verknüpfende Speicherpool die geringste Auslastung aufweist. Der Prozess kann einem anderen Knoten zugewiesen werden, doch eine höhere Leistung lässt sich am besten dann erzielen, wenn der Prozess einem Knoten mit Mehrprozessorbetrieb zugewiesen wird, dem der verknüpfte Speicherpool zugewiesen wurde. Im Schritt 290 wird das Verfahren beendet.
  • Obwohl die Poolreservierungs-, Poolzuweisungs- und Prozesszuweisungsmechanismen in der bevorzugten Ausführungsform als Objekte der Betriebssystemsoftware beschrieben wurden, die auf beschreibbaren Medien, wie z. B. Disketten und CD-ROMs, oder über Übertragungsmedien, wie z. B. digitale und analoge Kommunikationsverbindungen, bereitgestellt werden können, ist für den Fachmann nachvollziehbar, dass diese Mechanismen auch in Hardware, Software oder einer Kombination aus Hardware und Software ausgeführt werden können.
  • So verfügt ein verbessertes Mehrprozessorsystem mit gemeinsam benutztem Speicher über eine NUMA-Speicherarchitektur, die einen Prozess einem Knoten zuweist, dem ein verknüpfter Speicherpool zugeordnet ist und die anschließend dafür sorgt, dass dem Prozess nur Speicher aus diesem Speicherpool zugeteilt wird. Dies führt zu einer zahlenmäßigen Maximierung der Zugriffe auf den lokalen Hauptspeicher jedes Prozessors, der einen gegebenen Prozess unterstützt, wodurch die Leistung des Mehrprozessorsystems beträchtlich erhöht wird. Der Systembenutzer bzw. der vom Betriebssystem unterstützte Systembenutzer hat daher die Möglichkeit, die Abläufe an einem ausgewählten Prozessorsatz dort leistungsfähiger zu verwalten, wo sich der Speicherbereich dieses Satzes befindet und kann dadurch die Anzahl der Zugriffe auf den lokalen Hauptspeicher und die Speicherleistung erhöhen.

Claims (13)

1. Verfahren der Prozesszuweisung in einem Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff, bei dem das Mehrprozessorsystem über mehrere miteinander verbundene Knoten mit Mehrprozessorbetrieb (101-106) und über einen auf die Knoten mit Mehrprozessorbetrieb verteilten Hauptspeicher verfügt, wobei jeder Knoten mit Mehrprozessorbetrieb einen oder mehrere Prozessoren sowie einen lokalen Hauptspeicher (108-114) enthält, und wobei das Verfahren durch folgende Schritte gekennzeichnet ist:
dynamisches Reservieren eines Speicherpools innerhalb des Hauptspeichers;
Zuweisen des reservierten Speicherpools zu einem oder mehreren Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers des einen oder der mehreren Knoten mit Mehrprozessorbetrieb umfasst; und
Zuweisen eines mit dem Speicherpool verknüpften Prozesses zu einem Knoten mit Mehrprozessorbetrieb, dem der Speicherpool zugewiesen wurde;
2. Verfahren der Prozesszuweisung nach Anspruch 1, wobei Prozessen ein Attribut zugeordnet wird, das den mit dem Prozess verknüpften Speicherpool angibt.
3. Verfahren der Prozesszuweisung nach Anspruch 1 oder 2, wobei einem Prozess ein Speicherbereich aus dem verknüpften Speicherpool innerhalb des Knotens zugeteilt wird, der dem Prozess zugewiesen ist.
4. Verfahren der Prozesszuweisung nach einem beliebigen der vorherigen Ansprüche, das außerdem das Zuweisen des Speicherpools zu zwei oder mehr Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb umfasst, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers der zwei oder mehr Knoten mit Mehrprozessorbetrieb umfasst.
5. Verfahren der Prozesszuweisung nach Anspruch 4, wobei der Prozess an einem bestimmten Knoten mit Mehrprozessorbetrieb der zwei oder mehr Knoten mit Mehrprozessorbetrieb in Abhängigkeit von der Leistungsstatistik für jeden Knoten mit Mehrprozessorbetrieb zugewiesen wird.
6. Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff, wobei das Mehrprozessorsystem umfasst:
eine Vielzahl miteinander verbundener Knoten mit Mehrprozessorbetrieb (101-106), wobei jeder Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb einen oder mehrere Prozessoren und einen lokalen Hauptspeicher (108-114) enthält und wobei das System dadurch gekennzeichnet ist, dass es außerdem Folgendes umfasst:
einen Hauptspeicher, der in einer Speicherarchitektur für den uneinheitlichen Speicherzugriff auf die Knoten mit Mehrprozessorbetrieb dergestalt verteilt ist, dass der Hauptspeicher die lokalen Hauptspeicher aus der Vielzahl der untereinander verbundenen Knoten mit Mehrprozessorbetrieb enthält, und wobei auf jeden lokalen Hauptspeicher durch jeden Prozessor aus der Vielzahl von untereinander verbundenen Knoten mit Mehrprozessorbetrieb zugegriffen werden kann;
einen Poolreservierungsmechanismus (130), der einen oder mehrere Speicherpools innerhalb des Hauptspeichers dynamisch reserviert;
einen Poolzuweisungsmechanismus (132), der einem oder mehreren Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb einen reservierten Speicherpool zuweist, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers des einen oder der mehreren Knoten mit Mehrprozessorbetrieb umfasst; und
einen Prozesszuweisungsmechanismus, der einen mit einem reservierten Speicherpool verknüpften Prozess einem Knoten mit Mehrprozessorbetrieb zuweist, dem der Speicherpool zugewiesen wurde.
7. Mehrprozessorsystem nach Anspruch 6, wobei Prozessen ein Attribut zugeordnet wird, das den mit dem Prozess verknüpften Pool angibt.
8. Mehrprozessorsystem nach Anspruch 6 oder 7, wobei einem Prozess ein Speicherbereich aus dem verknüpften Speicherpool innerhalb des Knotens zugeteilt wird, der dem Prozess zugewiesen ist.
9. Mehrprozessorsystem nach einem der Ansprüche 6, 7 oder 8, wobei der Poolzuweisungsmechanismus den Speicherpool zwei oder mehr Knoten mit Mehrprozessorbetrieb der Vielzahl von Knoten mit Mehrprozessorbetrieb zuweist, sodass der Speicherpool einen Speicherbereich innerhalb des lokalen Hauptspeichers der zwei oder mehr Knoten mit Mehrprozessorbetrieb umfasst.
10. Mehrprozessorsystem nach den Ansprüchen 6 bis 9, wobei der Prozessor an einem bestimmten Knoten mit Mehrprozessorbetrieb der zwei oder mehr Knoten mit Mehrprozessorbetrieb in Abhängigkeit von der Leistungsstatistik für jeden Knoten mit Mehrprozessorbetrieb zugewiesen wird.
11. Mehrprozessorsystem nach einem beliebigen der Ansprüche 6 bis 10, wobei der Poolreservierungsmechanismus, der Poolzuordnungsmechanismus und der Prozesszuweisungsmechanismus jeweils ein oder mehrere Softwareobjekte umfassen, die im Hauptspeicher gespeichert sind und innerhalb der Vielzahl miteinander verbundener Knoten mit Mehrprozessorbetrieb ausgeführt werden.
12. Mehrprozessorsystem nach einem beliebigen der Ansprüche 6 bis 11, wobei der Prozesszuweisungsmechanismus jeden Prozess aus einer Vielzahl von Prozessen, die auf den Speicherpool zugreifen, einem Knoten mit Mehrprozessorbetrieb zuweist, dem der Speicherpool zugewiesen wurde.
13. Computerprogrammprodukt, das einen Programmcode umfasst, der in der Lage ist, in einem Mehrprozessorsystem mit einer Speicherarchitektur für den uneinheitlichen Speicherzugriff das Verfahren gemäß einem beliebigen der Ansprüche 1 bis 5 auszuführen, wenn das Programm auf einem Computer läuft.
DE69716663T 1996-03-27 1997-02-19 Prozesszuweisung in einem Mehrrechnersystem Expired - Fee Related DE69716663T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/622,230 US5784697A (en) 1996-03-27 1996-03-27 Process assignment by nodal affinity in a myultiprocessor system having non-uniform memory access storage architecture

Publications (2)

Publication Number Publication Date
DE69716663D1 DE69716663D1 (de) 2002-12-05
DE69716663T2 true DE69716663T2 (de) 2003-07-24

Family

ID=24493417

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69716663T Expired - Fee Related DE69716663T2 (de) 1996-03-27 1997-02-19 Prozesszuweisung in einem Mehrrechnersystem

Country Status (6)

Country Link
US (1) US5784697A (de)
EP (1) EP0798639B1 (de)
JP (1) JPH1011305A (de)
KR (1) KR100234654B1 (de)
DE (1) DE69716663T2 (de)
TW (1) TW308660B (de)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058460A (en) * 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
JP3875749B2 (ja) * 1996-08-08 2007-01-31 富士通株式会社 マルチプロセッサ装置及びそのメモリアクセス方法
US5918249A (en) * 1996-12-19 1999-06-29 Ncr Corporation Promoting local memory accessing and data migration in non-uniform memory access system architectures
US6205528B1 (en) * 1997-08-29 2001-03-20 International Business Machines Corporation User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
US6049853A (en) * 1997-08-29 2000-04-11 Sequent Computer Systems, Inc. Data replication across nodes of a multiprocessor computer system
US6167437A (en) * 1997-09-02 2000-12-26 Silicon Graphics, Inc. Method, system, and computer program product for page replication in a non-uniform memory access system
US6249802B1 (en) 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6094710A (en) * 1997-12-17 2000-07-25 International Business Machines Corporation Method and system for increasing system memory bandwidth within a symmetric multiprocessor data-processing system
US6230183B1 (en) * 1998-03-11 2001-05-08 International Business Machines Corporation Method and apparatus for controlling the number of servers in a multisystem cluster
US6038651A (en) * 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
FR2786288B1 (fr) * 1998-11-23 2001-08-10 Bull Sa Systeme de traitement par ensembles de ressources
US6334177B1 (en) 1998-12-18 2001-12-25 International Business Machines Corporation Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system
US6701420B1 (en) * 1999-02-01 2004-03-02 Hewlett-Packard Company Memory management system and method for allocating and reusing memory
US6839739B2 (en) * 1999-02-09 2005-01-04 Hewlett-Packard Development Company, L.P. Computer architecture with caching of history counters for dynamic page placement
US6769017B1 (en) 2000-03-13 2004-07-27 Hewlett-Packard Development Company, L.P. Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems
US6981027B1 (en) 2000-04-10 2005-12-27 International Business Machines Corporation Method and system for memory management in a network processing system
US6928482B1 (en) 2000-06-29 2005-08-09 Cisco Technology, Inc. Method and apparatus for scalable process flow load balancing of a multiplicity of parallel packet processors in a digital communication network
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6981244B1 (en) * 2000-09-08 2005-12-27 Cisco Technology, Inc. System and method for inheriting memory management policies in a data processing systems
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US6922791B2 (en) * 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US20040088498A1 (en) * 2002-10-31 2004-05-06 International Business Machines Corporation System and method for preferred memory affinity
US20040153481A1 (en) * 2003-01-21 2004-08-05 Srikrishna Talluri Method and system for effective utilization of data storage capacity
US7334230B2 (en) * 2003-03-31 2008-02-19 International Business Machines Corporation Resource allocation in a NUMA architecture based on separate application specified resource and strength preferences for processor and memory resources
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
ATE375553T1 (de) 2003-06-24 2007-10-15 Research In Motion Ltd Erkennung von speichermangel und feinabschaltung
US20060015589A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Generating a service configuration
US20060015772A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Reconfigurable memory system
US7433901B2 (en) * 2004-09-17 2008-10-07 International Business Machines Corporation Apparatus, system, and method for using multiple criteria to determine collocation granularity for a data source
US8255591B2 (en) * 2004-09-23 2012-08-28 International Business Machines Corporation Method and system for managing cache injection in a multiprocessor system
US7302533B2 (en) * 2005-03-11 2007-11-27 International Business Machines Corporation System and method for optimally configuring software systems for a NUMA platform
US7493400B2 (en) * 2005-05-18 2009-02-17 Oracle International Corporation Creating and dissolving affinity relationships in a cluster
US8037169B2 (en) * 2005-05-18 2011-10-11 Oracle International Corporation Determining affinity in a cluster
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
US7895596B2 (en) * 2005-09-13 2011-02-22 Hewlett-Packard Development Company, L.P. Processor assignment in multi-processor systems
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US20070214333A1 (en) * 2006-03-10 2007-09-13 Dell Products L.P. Modifying node descriptors to reflect memory migration in an information handling system with non-uniform memory access
US7774554B2 (en) * 2007-02-20 2010-08-10 International Business Machines Corporation System and method for intelligent software-controlled cache injection
US20080244118A1 (en) * 2007-03-28 2008-10-02 Jos Manuel Accapadi Method and apparatus for sharing buffers
US8082330B1 (en) * 2007-12-28 2011-12-20 Emc Corporation Application aware automated storage pool provisioning
US8332595B2 (en) * 2008-02-19 2012-12-11 Microsoft Corporation Techniques for improving parallel scan operations
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
WO2017011223A1 (en) 2015-07-10 2017-01-19 Rambus, Inc. Thread associated memory allocation and memory architecture aware allocation
JP6464980B2 (ja) 2015-10-05 2019-02-06 富士通株式会社 プログラム、情報処理装置及び情報処理方法
US10691590B2 (en) 2017-11-09 2020-06-23 International Business Machines Corporation Affinity domain-based garbage collection
US10552309B2 (en) 2017-11-09 2020-02-04 International Business Machines Corporation Locality domain-based memory pools for virtualized computing environment
US10445249B2 (en) 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
US11573904B2 (en) * 2018-10-12 2023-02-07 Vmware, Inc. Transparent self-replicating page tables in computing systems
US20230046354A1 (en) * 2021-08-04 2023-02-16 Walmart Apollo, Llc Method and apparatus to reduce cache stampeding
KR20240047259A (ko) 2022-10-04 2024-04-12 (주)엔팩코리아 풍량 제어가 가능한 선실 공기정화 필터 장치
KR20240062541A (ko) 2022-11-02 2024-05-09 (주)엔팩에스앤지 풍량표시구를 가진 선실 디퓨저 전용 스마트 공기정화 필터 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4754394A (en) * 1984-10-24 1988-06-28 International Business Machines Corporation Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage
US5228127A (en) * 1985-06-24 1993-07-13 Fujitsu Limited Clustered multiprocessor system with global controller connected to each cluster memory control unit for directing order from processor to different cluster processors
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US5093913A (en) * 1986-12-22 1992-03-03 At&T Laboratories Multiprocessor memory management system with the flexible features of a tightly-coupled system in a non-shared memory system
JP2753706B2 (ja) * 1987-12-09 1998-05-20 富士通株式会社 計算機におけるipl方法
JPH0291747A (ja) * 1988-09-29 1990-03-30 Hitachi Ltd 情報処理装置
US5404521A (en) * 1990-07-31 1995-04-04 Top Level Inc. Opportunistic task threading in a shared-memory, multi-processor computer system
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
US5325526A (en) * 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
JP2809962B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 資源管理方式

Also Published As

Publication number Publication date
DE69716663D1 (de) 2002-12-05
US5784697A (en) 1998-07-21
KR100234654B1 (ko) 1999-12-15
TW308660B (en) 1997-06-21
JPH1011305A (ja) 1998-01-16
EP0798639A1 (de) 1997-10-01
KR970066925A (ko) 1997-10-13
EP0798639B1 (de) 2002-10-30

Similar Documents

Publication Publication Date Title
DE69716663T2 (de) Prozesszuweisung in einem Mehrrechnersystem
DE69522916T2 (de) Paralleles Verarbeitungssystem und -verfahren
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE102016221811B4 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE69320847T2 (de) Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System
DE68927375T2 (de) Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69024078T2 (de) Mehrprozessoranordnung mit Vervielfältigung von globalen Daten und mit zwei Stufen von Adressübersetzungseinheiten
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69910826T2 (de) Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE3586389T2 (de) Dynamisch zugeordnete lokale/globale speicheranordnung.
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE69737709T2 (de) Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung
DE69526751T2 (de) Multiprozessorsystem zur lokalen Verwaltung von Adressenübersetzungstabellen
DE3856030T2 (de) Vorrichtung und Verfahren zur Durchführung von änderbarer Betriebsmittelaufteilung in einem Datenverarbeitungssystem mit zentralen Datenverarbeitungseinheiten mit verschiedenen Betriebssystemen
DE69803478T2 (de) Ein/ausgabe weiterleitung in einem cachekohärenten rechnersystem mit gemeinsam genutztem plattenspeicher
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69619531T2 (de) Dynamischer lastausgleich

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee