-
Die
vorliegende Erfindung bezieht sich allgemein auf Computernetzwerke
mit auf Speicher abgebildeten Datenübertragungen, um einen ersten
Computer in die Lage zu versetzen, auf Daten oder Programme zuzugreifen,
die auf einer Platte oder einer anderen nicht-wahlfrei zugreifbaren
Computerspeichereinrichtung gespeichert sind, die physikalisch mit einem
zweiten Computer verbunden ist.
-
HINTERGRUND
DER ERFINDUNG
-
In
vielen Computersystemen mit mehreren Knoten ist es für Prozesse
oder Aufgaben, die auf einem Computerknoten laufen (manchmal der
Client genannt) von Bedeutung, auf Information zugreifen zu können, die
auf einer Platte oder ähnlichen
Einrichtung gespeichert ist, die einem anderen Computerknoten (manchmal
der Server genannt) zugeordnet sind. Allgemein ist ein Zugriff auf
Daten auf einer entfernt gelegenen Platte aufwendig im Hinblick
auf Latenz und verwendete Ressourcen. Die vorliegende Erfindung
stellt ein System und ein Verfahren zur Reduktion sowohl der Latenz
als auch der auf dem Serverknoten verwendeten Ressourcen bereit,
wenn ein Clientknoten einen Plattenlesevorgang von einer auf (oder
am) Serverknoten gelegenen Platte durchführt.
-
Unter
Bezug auf 1 wird eine sehr vereinfachte
Darstellung der zwei Computerknoten, hier Knoten A oder Server 50 und
Knoten B oder Client 52 genannt, gezeigt. Der Computer
bei jedem Knoten kann jede Art von Computer sein. Mit anderen Worten
hat die besondere Marke, Architektur und das Betriebssystem keine
Bedeutung für
die vorliegende Diskussion solange jeder Computerknoten dafür eingerichtet
ist, in einer Netzwerkumgebung zu operieren. Jeder Computerknoten 50, 52 wird
typischerweise eine zentrale Verarbeitungseinheit (central processing
unit, CPU) 54, einen wahlfrei zugreifbaren Speicher 56,
einen internen Speicherbus 58 und eine Kommunikationsschnittstalle 60 beinhalten,
oft als Netzwerkschnittstellenkarte (network interface card, NIC)
bezeichnet. Die Computerknoten kommunizieren miteinander durch Übermitteln
von Nachrichten oder Paketen zueinander über eine Netzwerk-Zwischenverbindung 62,
die eine oder mehrere Arten von Kommunikationsmedien, Umschalt-
bzw. Vermittlungsmechanismen und ähnliches enthalten kann.
-
Für die Zwecke
dieser Diskussion wird angenommen, daß die NIC für eine auf Speicher abgebildete
Nachrichtenweitergabe geeignet ist. Das heißt, die NIC muß unter
Verwendung lokaler physikalischer Adressen direkt adressierbar sein
und direktes Laden und Speichern in und aus den Speicherstellen in
einen entfernt gelegenen Computerknoten kann durch die NIC ausgeführt werden,
ohne die Treibersoftware der NIC benutzen zu müssen. Da sich die vorliegende
Erfindung auf entfernten Plattenzugriff bezieht, hat darüber hinaus
wenigstens einer der Computerknoten 50 eine nicht-flüchtige,
nicht-wahlfrei zugreifbare Speichervorrichtung 64 wie eine Hochgeschwindigkeitsmagnetplatte
und eine entsprechende Plattensteuerung 66. Tatsächlich werden in
vielen Implementierungen die meisten oder alle der Computerknoten
einen oder mehrere lokale Plattentreiber haben. Da wir jedoch nur
daran interessiert sind zu erklären,
wie ein Computerknoten 52 auf Daten auf der Platte 64 zugreift,
die mit einem anderen Computerknoten 50 verbunden ist,
wird nur die Platte 64 für den Serverknoten 50 in 1 gezeigt.
-
Man
beachte, daß der
Begriff „Nachrichtenübertragung" manchmal verwendet
wird, um den Gebrauch eines Nachrichtenübertragungsprotokolls anzuzeigen
oder zu implizieren, in dem das empfangende System automatisch die übertragene
Nachricht verarbeitet, während
der Begriff „Datenübertragung" einfach das Schreiben
oder Kopieren von Daten von einem System zu einem anderen anzeigt.
In diesem Dokument jedoch werden die Begriffe „Nachrichtenübertragung" und „Datenübertragung" austauschbar gebraucht.
-
2 zeigt
eine vereinfachte Darstellung einer herkömmlichen Kommunikationsschnittstelle (oder
NIC) 60, wie die in den Computerknoten 50 von 1 verwendeten,
wobei nur die Komponenten von besonderem Interesse gezeigt werden.
Die NIC 60 beinhaltet üblicherweise
zwei Mechanismen zur Adreßabbildung:
eine eingehende Speicherverwaltungseinheit (incoming memory management
unit, IMMU) 70 und eine ausgehende Speicherverwaltungseinheit
für (outgoing
memory management unit, OMMU) 72. Der Zweck der zwei Speicherverwaltungseinheiten
ist es, lokale physikalische Adressen (physical addresses, PA's) in jedem Computerknoten auf
globale Adressen (global adresses, GA's) abzubilden und umgekehrt. Die Transportlogik 74 in
der NIC 60 handhabt die Mechanik der Übertragung und des Empfangs
von Nachrichtenpaketen einschließlich des Nachsehens und Konvertierens
von Adressen unter Verwendung der IMMU 70 und der OMMU 72.
-
Die
gestrichelten Linien zwischen dem Speicherbus 60 und der
IMMU 70 und der OMMU 72 stellen von der CPU stammende
Steuersignale zum Speichern und Löschen von Adreßübersetzungseinträgen in die
zwei MMU's dar,
typischerweise unter der Steuerung eines NIC Treiberprogramms. Die
gestrichelte Linie zwischen dem Speicherbus 60 und der
Transportlogik 74 stellt von der CP stammende Steuersignale
zur Konfigurierung und Steuerung der Transportlogik 74 dar.
-
Speicherabbildung zwischen
virtuellen, lokalen physikalischen und globalen Adreßräumen
-
In
den 3 und 4 nutzen die Knoten in einem
verteilen Computersystem (wie die in 1 abgebildeten)
einen gemeinsam genutzten globalen Adreßraum (global address) GA.
Jeder Knoten bildet Teile seines lokalen Adreßraums (local address) LA auf „Fenster" in dem globalen
Adreßraum
ab. Darüber
hinaus bilden Prozesse auf jedem der Knoten Teile ihrer privaten
virtuellen Adreßräume (virtual address)
VA auf den lokalen physikalischen Adreßraum (physical address) PA
ab und können
ferner einen Teil des lokalen physikalischen Adreßraumes
PA in ein Fenster in dem globalen Adreßraum GA exportieren. Der Prozeß des „Exportierens" eines Teils des lokalen
physikalischen Adreßraumes
wird manchmal auch als „Exportieren
eines Teils der lokalen physikalischen Adresse auf einen anderen
Knoten" bezeichnet,
weil einem spezifischen anderen Computerknoten ein Lese- und/oder
Schreibzugriff auf den exportierten Teil des lokalen physikalischen
Adreßraumes über einen
abgebildeten bzw. zugeordneten globalen [TEXT UNLESBAR] den 3 und 4 gezeigten lokalen
physikalischen Adressen (z. B. PA1 und PA2) physikalische Busadressen
und nicht notwendigerweise Speicherplatzadressen sind. In der Tat
werden viele physikalische Adressen tatsächlich auf andere Einrichtungen
als Speicher abgebildet, zum Beispiel Netzwerkschnittstellen. Wenn
zum Beispiel physikalischer Speicher auf einem ersten Computer auf
einen zweiten Computer exportiert wird, werden die in dem zweiten
Computer zum Schreiben in den exportierten Speicher verwendeten
physikalischen Adressen nicht auf irgendeinen lokalen Speicher abgebildet;
vielmehr werden sie auf die Netzwerkschnittstelle des zweiten Computers
abgebildet.
-
Wenn
eine eine Zieladresse enthaltende Nachricht von einem Prozeß in Knoten
A 50 zu einem Prozeß in
Knoten B 52 geschickt wird, wird eine Reihe von Adreßübersetzungen
(auch Adreßabbildübersetzungen
genannt) auf der Zieladresse durchgeführt. Eine virtuelle Adresse
VA1 von einem Prozeß in Knoten
A wird zuerst von dem TLB (translation lookaside buffer, Übersetzungs-Vorgriffspuffer) 80-A in
der CPU 54-A von Knoten A in eine lokale physikalische Adresse
PA1 übersetzt.
Die lokale physikalische Adresse PA1 wird dann von der abgehenden
MMU (OMMU) 72-A in der Netzwerkschnittstelle von Knoten
A in eine globale Adresse GAx übersetzt.
Wenn die die globale Adresse enthaltende Nachricht von Knoten B
empfangen wird, wird die globale Adresse GAx von der eingehenden
MMU (IMMU) 70-B in der Netzwerkschnittstelle 60-B von
Knoten B in eine lokale physikalische Adresse PA2 umgewandelt, die dem
Knoten B zugeordnet ist. Die lokale physikalische Adresse PA2 entspricht
einer virtuellen Adresse VA2, die einem Empfangsprozeß zugeordnet
ist. Ein TLB 80-B in CPU 54-B von Knoten B bildet
die virtuelle Adresse VA2 auf die lokalen Adresse PA2 ab, an der
die empfangene Nachricht gespeichert wird.
-
Man
beachte, daß TLBs
allgemein nur virtuelle Adressen in lokale physikalische Adressen übersetzen
und nicht umgekehrt, und daher einige der Pfeile in 4 eher
Abbildungen bzw. Zuordnungen darstellen als tatsächliche Adreßübersetzungen. Wenn
der Empfangsprozeß im
Knoten B eine empfangene Nachricht bei Adresse VA2 liest, wird der TLB 80-B diese
virtuelle Adresse in dieselbe lokale Adresse LA2 übersetzen,
die durch die IMMU 70-B der Netzwerkschnittstelle als die
Zieladresse für
die empfangene Nachricht festgelegt wurde.
-
Adreßraumbereiche
zum Empfang von Nachrichten werden zwischen den sendenden und empfangenden
Knoten mittels Protokollen höherer Schichten
im voraus ausgehandelt, welche typischerweise reservierten Adreßraum, Mailbox
oder paketbasierte Kommunikation benutzen, die zu diesem Zweck eingerichtet
sind. Die Einzelheiten, wie Fenster in dem globalen Adreßraum zugewiesen
werden und wie empfängerseitige
Adressen zum Empfang von Nachrichten bereitgestellt werden, liegen
außerhalb
des Rahmens dieses Dokuments. Darüber hinaus erfordert die vorliegende
Erfindung keinerlei Veränderungen
in solchen die Kommunikation aufbauenden Mechanismen.
-
Empfangspuffer
werden typischerweise in seitengroßen Stücken zugewiesen, da jeder MMU-Eintrag
im allgemeinen eine Abbildung von einer oder mehreren Seiten von
Adreßraum
(und allgemeiner 2n Seiten für ganzzahlige
Werte von n ≥ 0) darstellt.
Größere Empfangspuffer
oder Empfangspuffer unregelmäßiger Größe können unter
Verwendung mehrerer MMU-Einträge
durch Protokolle auf Benutzerebene erstellt werden. Sobald die Empfangspuffer
zugeordnet sind und die entsprechenden MMU-Abbildungen eingerichtet
sind, können
die Programme auf Benutzerebene die Empfangspuffer ohne Eingriff
des Kernes verwalten. Viele unterschiedliche Arten der Nachrich tenweitergabe
auf Benutzerebene (application program interfaces, Anwendungsprogrammierungsschnittstellen) „API's" können
auf dem grundlegenden Empfangspuffermechanismus gebaut werden. Dies
umfaßt
die Sende- und Empfangs-Unix-Primitiven bzw. -Grundfunktionen, Sockets,
ORB (object resource broker, Objektressourcenvermittler), Transport,
entfernte Prozeßaufrufe,
und so weiter. Der grundlegende Mechanismus zur Nachrichtenweitergabe
ist dafür
angelegt, so „leichtgewichtig" und effizient wie
möglich
zu sein, um so wenig Prozessorzyklen wie möglich zu verwenden.
-
Eine
Ausführungsform
der Erfindung kann die lokale physikalische Adresse für den oben
diskutierten globalen Adreßabbildungsmechanismus
verwenden.
-
Konventionelle Methodik
zum Lesen entfernter Platten
-
5 zeigt
den herkömmlichen
Vorgang für einen
Prozeß auf
Knoten B zum Lesen von Information von einer Platte auf Knoten A.
Der erste Schritt für
Knoten B besteht darin, einen Empfangspuffer durch „Exportieren
von Speicher" für Knoten
A aufzubauen (Schritt 80), so daß Knoten A eine Nachricht hineinschreiben
kann. In einigen Implementierungen kann dieser Schritt im voraus
ausgeführt
werden, da es im voraus bekannt ist, daß Knoten B viele Platten-Lesevorgänge von
Knoten A ausführen
wird. Bei den meisten Implementierungen jedoch wird der Schritt
des Exportierens von Speicher in Reaktion auf eine entfernte Plattenleseanforderung
durch einen Benutzer oder Kernprozeß in Knoten B ausgeführt. Der
Speicher exportierende Schritt 80 wird durch das Schaffen
eines IMMU-Eintrags in Knoten B ausgeführt, der den physikalischen
Adreßbereich
eines Empfangspuffers im Speicher von Knoten B auf einen entsprechenden
Bereich von globalen Adressen abbildet. Wie oben angegeben hat Knoten
B typischerweise einen vorab zugewiesenen Bereich von globalen Adressen
für das
Exportieren von Speicher zu anderen Knoten. Andere Mechanismen zum
Zuweisen globaler Adressen könnten
jedoch genauso anwendbar sein.
-
Als
nächstes
wird in Schritt 82 eine Anforderungsnachricht von dem Clientknoten
(Knoten B) in den Serverknoten (Knoten A) übertragen, in der die angeforderte
Information gespeichert ist. Die Anforderungsnachricht spezifiziert:
- – den
Zielknoten, an den die Nachricht übermittelt wird;
- – den
Quellknoten, von dem die Nachricht gesandt wird;
- – die
Informationsquelle, wie eine Plattendatei, Teil einer Plattendatei
oder Speicherbereich einer Platte, die die angeforderte Information
enthält;
- – die
globale Adresse, an die die angeforderte Information übertragen
werden soll; und
- – andere
Parameter wie Protokollparameter, die hier nicht von Bedeutung sind.
-
Wenn
beim Server (Knoten A) die angeforderte Nachricht empfangen wird,
richtet der Server einen OMMU Eintrag ein, um den Speicher zu importieren,
der von dem anfordernden Clientknoten, Knoten B, (Schritt 84)
exportiert wird. Der bei Schritt 84 eingerichtete OMMU-Eintrag
bildet einen Bereich, den globalen Adreßbereich, der in der empfangenen Nachricht
spezifiziert ist, auf einen entsprechenden Bereich des physikalischen
Speichers in dem Serverknoten ab. Falls nötig (z. B. wenn nicht genügend zusammenhängender
Speicher verfügbar
ist und/oder die Größe des abgebildeten
Adreßbereichs
nicht gleich 2n Seiten ist), wird der Serverknoten
zwei oder mehr OMMU- Einträge generieren,
um die spezifizierten globalen Adreßräume auf zwei oder mehr lokale physikalische
Adreßbereiche
abzubilden.
-
Sobald
die IMMU in dem anfordernden Knoten B und die OMMU in dem antwortenden
oder sendenden Knoten A eingerichtet wurden, beginnt die Übertragung
der angeforderten Daten. Insbesondere werden die angeforderten Plattendaten
zuerst von Knoten B in den bzw. die lokalen physikalischen Speicherbereich(e)
kopiert, die zuvor auf die OMMU-Einträge abgebildet wurden (Schritt 86),
typischerweise unter Verwendung einer Plattensteuerungs-DMA-Operation
zur Durchführung
der Datenübertragung.
Dann werden die Inhalte des bzw. der lokalen physikalischen Speicherbereiche(s)
vom lokalen Speicher in die zugewiesenen globalen Adressen geschrieben
(Schritt 88). Das Schreiben der Daten in eine globale Adresse
führt dazu,
daß die
Kommunikationsschnittstelle des sendenden Knotens für die Übertragung
der Daten in den Knoten geschrieben wird, der jenen globalen Adressen
zugeordnet ist, wie in dem bzw. den OMMU-Eintrag bzw. -Einträgen des sendenden
Knotens für
jene globalen Adressen angegeben. Dieser Datenübertragungsvorgang (Schritt 88)
kann unter der direkten Steuerung der CPU durch „programmierte I/O"-Befehle durchgeführt werden, oder
kann durch einen DMA-Vorgang einer Kommunikationsschnittstelle (NIC)
durchgeführt
werden (d. h. in diesem Fall behandelt die DMA-Logik in der Kommunikationsschnittstelle
die Übertragung
der Daten von einem lokalen physikalischen Speicher in das Kommunikationsnetzwerk).
Schließlich
wird, nachdem die angeforderten Daten vollständig in den Empfangspuffer
in dem anfordernden Knoten übertragen
wurden, typischerweise eine „Abgeschlossen"-Nachricht von dem
sendenden Knoten an eine vorher festgelegte Nachrichtenwarteschlangenposition
in dem anfordernden Knoten (Schritt 90) übermittelt,
um den anfordernden Knoten zu informieren, daß die Übertragung der angeforderten
Daten abgeschlossen wurde.
-
Nachdem
der Server die angeforderten Daten an den anfordernden Knoten übertragen
hat (Schritte 86, 88 und 90) „zieht" der Server die Verbindung „herunter", indem der OMMU-Eintrag
(oder Einträge)
für den
importierten Speicher, der mit der Anforderung von Knoten B verbunden
ist, gelöscht
wird.
-
Als
Reaktion auf die Abschluß-Nachricht zieht
der anfordernde Knoten seine Seite der Verbindung durch Löschen des
entsprechenden IMMU-Eintrags (oder der Einträge) herunter wie um den Export des
für die
Anforderung verwendeten Speichers rückgängig zu machen und dem Teil
des lokalen physikalischen Speichers des anfordernden Systems die lokale
Lese-/Schreibsteuerung zurückzugeben (Schritt 94).
Dann oder parallel zum Herunterzieh-Vorgang verarbeitet der anfordernde
Knoten die erhaltenen Daten (Schritt 96).
-
Natürlich umfaßt der Stand
der Technik viele Variationen der Abfolge von Vorgängen, die
oben unter Bezug auf 5 zur Ausführung eines entfernten Plattenlesevorgangs
beschrieben wurden. Die oben beschriebenen Schritte sind jedoch
typisch für
verteilte Computersysteme, die UNIXTM-(eine
Handelsmarke von SCO)-artige Betriebssysteme wie SolarisTM (eine Handelsmarke von Sun Microsystems, Inc.)
verwenden.
-
US-Patent
5394526 offenbart einen Datenserver zur Übertragung ausgewählter Blöcke einer entfernten
Datei an ein Verteilungscomputernetzwerk. Der Datenserver beinhaltet
einen üblichen Interprozessorbus,
der Kommunikationsprozessoren mit einem oder mehreren Geräteprozessoren
verbindet, von denen jeder einen Pufferspeicher hat. Die Pufferspeicher
sind mit der Speichereinrichtung verbunden, die über einen DMA-Übertragungspfad
mit der Speichereinrichtung verbunden ist, die an den relevanten
Geräteprozessor
angeschlossen ist. Im Betrieb wird daher die Datenübertragung
zuerst durch DMA aus der Speichereinrichtung an den Pufferspeicher
und dann durch einen zweiten DMA aus dem Pufferspeicher an den Kommunikationsprozessor ausgeführt. Daher
gibt es nur eine einzige Datenübertragung über den
gemeinsamen Bus.
-
EP 755014 offenbart ein Verfahren
zur Datenübertragung über ein
Mehrknoten-Datenverarbeitungssystem.
Jeder Knoten hat wenigstens einen Prozessor, der mit Speicher, Cachespeicher
und einer Kommunikationsschnittstelle ausgestattet ist. Der Vorgang
der Datenübertragung
verwendet ein Speicher(Cachespeicher)-Kohärenzprotokoll.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Besondere
und bevorzugte Aspekte der Erfindung sind in den anliegenden unabhängigen und abhängigen Ansprüchen dargelegt.
-
Eine
Ausführungsform
der Erfindung stellt ein System und ein Verfahren bereit, um einen
entfernten Plattenzugriff durch das direkte Routing von Daten von
der Platte in dem entfernten Server zu einem Kommunikationsbus effizienter
zu machen, ohne zuvor eine Kopie der Daten in dem Speicher des entfernten
Servers anzufertigen.
-
Eine
Ausführungsform
der Erfindung ermöglicht
es, entferntes Plattenlesen und ähnliche
entfernte Vorgänge
zur Datenbeschaffung aus Speichereinrichtungen auf entfernten Knoten
effizienter zu gestalteten. In einem verteilten Computersystem gibt
es bei Verwendung der vorliegenden Erfindung mehrere Computer oder
Computerknoten, einschließlich
eines, der ein Clientknoten zum Durchführen eines entfernten Lesevorgangs
genannt wird, und eines anderen, der ein Serverknoten genannt wird.
Sowohl der Client- als auch der Serverknoten können tatsächlich Teil eines Clusters
von Computerknoten sein, die aus der Sicht eines Computers außerhalb
des Serverclusters als ein einzelner Serverknoten agieren.
-
Wenn
der Clientknoten Daten von einer Platte oder ähnlichen Einrichtung beim Serverknoten
anfordert, exportiert der Clientknoten den Speicher, der einem zugewiesenen
Lesepuffer zugeordnet ist, durch das Generieren und Speichern von
einem oder mehreren eingehenden MMU-(IMMU)-Einträgen, die den Lesepuffer auf
einen zugewiesenen globalen Adreßbereich abbilden. Die entfernte
Datenleseanfrage wird zusammen mit dem zugewiesenen globalen Adreßbereich
dem Serverknoten übermittelt.
-
Beim
Serverknoten wird die Anfrage bedient, indem ein Speicherimportvorgang
durchgeführt
wird, bei dem ein oder mehrere ausgehende MMU(OMMU)-Einträge generiert
und zum Abbilden des in der Leseanfrage spezifizierten globalen
Adreßbereichs auf
einen entsprechenden Bereich lokaler physikalischer Adressen gespeichert
werden. Die abgebildeten bzw. zugeordneten (mapped) lokalen physikalischen
Adressen in dem Server sind nicht Speicherstellen im Speicher des
Servers. Der Server führt dann
eine DMA-Operation der Plattensteuerung zur direkten Übertragung
der in der Anforderungsnachricht angegebenen Daten von der Platte
an die abgebildeten lokalen physikalischen Adressen durch. Die DMA-Operation überträgt die angegebenen
Daten an die Netzwerkschnittstelle des Servers, wo die abgebildeten
lokalen physikalischen Adressen, an die die Daten übertragen
werden, in die entsprechenden globalen Adressen konvertiert werden.
Die angegebenen Daten mit den entsprechenden Adressen werden dann
an den Clientknoten übertragen.
-
Der
Clientknoten reagiert auf den Empfang der angegebenen Daten mit
der Umwandlung der globalen Adressen in den empfangenen Daten in
die lokalen physikalischen Adressen, die dem zugeordneten Empfangspuffer
entsprechen und Speichern der empfangenen, angegebenen Daten in
dem zugeordneten Empfangspuffer.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Beispielhafte
Ausführungsformen
der Erfindung werden nachfolgend unter Bezug auf die beigefügten Zeichnungen
nur beispielhaft beschrieben, von denen:
-
1 ein
Blockdiagramm zweier Computerknoten in einem Computernetzwerk ist.
-
2 ein
Blockdiagramm ist, das die Komponenten der in jedem Computer eines
Computernetzwerk vorgefundenen Kommunikationsschnittstelle darstellt.
-
3 virtuelle,
lokale und globale Adreßräume und
Abbildung zwischen diesen Adreßräumen darstellt.
-
4 ein
Blockdiagramm der Computermodule ist, die verwendet werden, um Adreßübersetzungen
durchzuführen,
die mit dem Übertragen
von Daten von einem ersten Knoten an einen zweiten Knoten eines
verteilten Computersystems verbunden sind.
-
5 ein
Flußdiagramm
eines herkömmlichen
Vorgangs ist für
einen Prozeß auf
einem ersten Computerknoten B, um Information von einer Platte auf
einem anderen Computerknoten A zu lesen.
-
6 ein
Computersystem mit einem Cluster von Computern darstellt, die als
ein einziger Serverknoten agieren.
-
7 ein
Flußdiagramm
eines Vorgangs ist für
einen Prozeß auf
einem ersten Computerknoten B zum Lesen von Information von einer
Platte auf einem anderen Computerknoten A gemäß einer Ausführungsform
der vorliegenden Erfindung.
-
8 ein
Blockdiagramm eines Server- oder Clientcomputers ist, der eine bevorzugte
Ausführungsform
der vorliegenden Erfindung umfaßt.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
In 6 wird
ein verteiltes Computersystem 200 gezeigt, das einen Mehrfach-CPU-Server 202 und
zahlreiche Clientcomputer 204 umfaßt, die mit dem Server über ein
oder mehrere Kommunikationsnetzwerke 206 verbunden sind.
Der Server 202 umfaßt
ein oder mehrere Cluster 208 von Computern 210,
um damit mehr Berechnungsdienste für die Clients 204 bereitzustellen,
als durch einen einzelnen Servercomputer zur Verfügung gestellt
werden könnten.
Der Server 202 wird manchmal als „der Servercluster" bezeichnet. Für die Zwecke
des vorliegenden Dokumentes ist es irrelevant, ob zwei Servercomputer 210,
die sich Information teilen müssen,
im gleichen oder in verschiedenen Clustern 210 sind.
-
Berechnungsaufgaben
und Aufgaben in Verbindung mit Dateidiensten werden über den
Computer 210 des Servers verteilt. Als ein Ergebnis davon können die
Daten, die von einem Prozeß,
der auf einem Servercomputer läuft,
auf einer Platte oder einer ähnlichen
Speichereinrichtung gelegen sein, die Teil eines anderen Servercomputers
ist (oder damit verbunden ist).
-
Die
vorliegende Erfindung zielt hauptsächlich auf ein Verfahren, mit
dem Vorgänge
zum „entfernten
Plattenlesen" effizienter
gemacht werden. Das heißt,
wenn ein erster Computer 210 im Server 202 Daten
lesen muß,
die auf einer Platte auf einem anderen Computer 210 im
Server gespeichert sind, liefert die vorliegende Erfindung einen
effizienten Mechanismus und eine Methodologie zur Durchführung dieses
Vorgangs, die effizienter sind als der oben zu 5 beschriebene.
-
Für die Zwecke
der Beschreibung der vorliegenden Erfindung werden die Begriffe „Client" und „Server" beide verwendet,
um auf Computer 210 im Server 202 Bezug zu nehmen.
Die vorliegenden Erfindung könnte
jedoch auch benutzt werden, um Datenlesevorgänge auf entfernten Platten
zwischen irgendeinem „echten" Clientcomputer 204 und
einem Servercomputer 210 im Servercluster 202 durchzuführen.
-
7 zeigt
den verbesserten Datenlesevorgang auf entfernten Platten der vorliegenden
Erfindung, der einen Prozeß auf
Knoten B in die Lage setzt, Information von einer Platte auf Knoten
A zu lesen. Einige der Schritte dieses Vorgangs sind dieselben wie
die oben zu 5 beschriebenen und haben daher
dieselben Bezugszahlen wie in 5. Neuen oder
modifizierten Schritten sind neue Bezugszahlen zugewiesen.
-
Der
erste Schritt für
Knoten B ist das Einrichten eines Empfangspuffers durch „Exportieren
von Speicher" an
Knoten A (Schritt 80). In einigen Ausführungsformen kann dieser Schritt
im Vorhinein durchgeführt
werden, da im Vorhinein bekannt ist, daß Knoten B viele Plattenlesevorgänge von
Knoten A durchführen
wird. In den meisten Implementierungen jedoch wird der Schritt des
Exportierens von Speicher als Reaktion auf eine entfernte Plattenleseanforderung
durch einen Nutzer- oder
einen Kernprozeß in
Knoten B durchgeführt.
Der Speicher-Export-Schritt 80 wird durchgeführt, indem
ein IMMU-Eintrag in Knoten B erstellt wird, der den physikalischen
Adreßbereich
eines Empfangspuffers im Speicher von Knoten B auf einen entsprechenden Bereich
globaler Adressen abbildet. Wie oben angegeben wird Knoten B typischerweise
einen Bereich globaler Adressen haben, die ihm im Voraus zum Speicherexport
an andere Knoten zugewiesen wurde. Andere Mechanismen zum Zuweisen
globaler Adressen wären
jedoch gleichermaßen
anwendbar.
-
Als
nächstes
wird in Schritt 82 eine Anforderungsnachricht durch den
Clientknoten (Knoten B) an den Serverknoten (Knoten A) übertragen,
bei dem die angefragte Information gespeichert ist. Die Anforderungsnachricht
spezifiziert:
- – den Zielknoten, an den die
Nachricht übertragen wird;
- – den
Quellknoten, von dem die Nachricht gesandt wird;
- – die
Informationsquelle, wie eine Plattendatei, Teil einer Plattendatei
oder Bereich auf einer Platte, der die angeforderte Information
enthält;
- – die
globale Adresse, an die die angeforderte Information übertragen
werden soll; und
- – andere
Parameter, wie Protokollparameter, die hier nicht relevant sind.
-
Beim
Server (Knoten A) richtet der Server einen OMMU-Eintrag beim Empfang
der Anfragenachricht ein, um den Speicher, der von dem anfragenden Clientknoten,
Knoten B, (Schritt 300) exportiert wird, zu importieren.
Der OMMU-Eintrag, der in Schritt 300 eingerichtet wurde,
bildet einen Bereich, den der globale Adreßbereich in der empfangenen
Nachricht spezifiziert, auf einen entsprechenden Bereich von physikalischem
Speicher in dem Serverknoten ab. Anders als in Schritt 85 in 5 bezeichnen
die abgebildeten lokalen physikalischen Adressen keine Speicherstellen
in dem zweiten Computerspeicher, sondern die abgebildeten lokalen
physikalischen Adressen sind physikalische Adressen, reserviert
für die
Nutzung durch die Netzwerkschnittstelle des Servers. Falls nötig (d.
h., wenn ein ausreichend großer zusammenhängender
Bereich physikalischer Adressen, der der Netzwerkschnittstelle zugeordnet
ist, nicht verfügbar
ist und/oder die Größe des abgebildeten
Adreßbereichs
nicht gleich 2n Seiten ist) wird der Serverknoten
zwei oder mehr OMMU-Einträge generieren,
um so den spezifizierten globalen Adreßraum auf zwei oder mehr lokale
physikalische Adreßbereiche
abzubilden.
-
Sobald
die IMMU in dem anfragenden Knoten B und die OMMU in dem antwortenden
oder sendenden Knoten A eingerichtet wurden, stellt die Plattensteuerung
in dem Server ihre interne DMA 332 so ein (gezeigt in 8),
daß sie
die angeforderten Daten in die lokale physikalische Adresse (im
Server), die dem importierten Speicher zugewiesen ist, kopiert (Schritt 301).
Mit anderen Worten werden zur Durchführung einer direkten Datenübertragung
von der Platteneinrichtung auf die in dem anfordernden Clientcomputer
abgebildeten lokalen physikalischen Adressen die DMA-Quelladresse,
-Zieladresse und Datenmengenzählregister
des DMA auf die zum Durchführen
einer direkten Datenübertragung
nötigen
Werten eingestellt.
-
Als
nächstes
führt der
Server eine „open
barrier"-Operation
(Schritt 302) durch, die im wesentlichen eine Zahl der
aufgetretenen Fehlerereignisse der Netzwerkkommunikation (CEE count,
CEE-Zahlen) in einer lokalen Variablen (LEE count, LEE-Zahlen) speichert.
Wenn eine „close
barrier"-Operation zu
einem späteren
Zeitpunkt durchgeführt
wird, wartet der Treiber für
die Netzwerkschnittstelle auf den Abschluß jedweder noch ausstehenden
Operationen, und dann wird die aktuelle Zahl der aufgetretenen Fehlerereignisse
der Netzwerkkommunikation, die CEE-Zahl, mit dem lokal gespeicherten
Wert der LEE-Zahl verglichen und ein Fehler-Bedingungs-Flag wird
gesetzt, wenn die beiden nicht gleich sind.
-
Bei
dem „open
barrier"-Schritt
wird der Vorgang der Übertragung
der Plattensteuerungs-DMA eingeleitet,
wodurch die Übertragung
der angeforderten Daten von der Platte direkt zu der Server-Netzwerk-Schnittstelle
(304) veranlaßt
wird. Da die Zieladressen für
den DMA-Abgleich von der OMMU abgebildet werden, erhält die NIC-Karte
die Plattendaten direkt von dem relevanten internen Bus und überträgt diese
Daten erneut auf dem Kommunikationskanal zum anfragenden Server,
wobei die lokalen physikalischen Zieladressen in die entsprechenden globalen
Adressen übersetzt
werden. Bei dem anfragenden Clientcomputer werden die globalen Adressen
in den übertra genen
Daten durch die IMMU des empfangenden Clientcomputer in lokale physikalische
Adressen umgewandelt, und dann werden die Daten auf einem lokalen
internen Bus zum Speichern in den Empfangspuffer übertragen,
der jenen lokalen physikalischen Adressen entspricht. Wie vorher
angegeben, sind all die zuvor erwähnten Adreßübersetzungen und Datenrückübertragungen
durch die Netzwerkschnittstelle völlig automatisch und stellen den
Standardbetrieb solcher Einrichtungen dar.
-
Nachdem
der Server die angeforderten Daten an den anfordernden Knoten überträgt (Schritte 301, 302, 304),
führt er
dann eine „close
barrier"-Operation
(Schritt 306) durch, um festzustellen, ob die Datenübertragung
erfolgreich war oder nicht. In der Tat kann die close barrier-Operation
einen Datenübertragungsfehler
entdecken oder einen anderen Fehler des Kommunikationssystems, der
nicht mit der Datenübertragung
verbunden ist, die durch das Befehlspaar „open-close-barrier" geschützt wird. Wenn
die „close
barrier"-Operation
ein Fehlerflag setzt, werden die Schritte 302, 304 und 306 wiederholt.
Wenn nach einer festgelegten Anzahl von Wiederholungen die Datenübertragung
immer noch ohne Erfolg bleibt, wird eine Fehlermeldung an den Client und
die Betreiber des Servercomputers geschickt (was einfach nur das
Schreiben einer Fehlermeldung in eine Protokolldatei sein kann).
-
Nachdem
die DMA-Operation abgeschlossen ist, was dazu führt, daß die angeforderten Daten vollständig an
den Empfangspuffer in dem anfragenden Knoten übertragen werden, wird von
dem sendende Knoten eine „Abgeschlossen"-Nachricht zu einer
vorher festgelegten Stelle in der Nachrichtenwarteschlange in dem
anfordernden Knoten übertragen (Schritt 90),
um den anfordernden Knoten zu informieren, daß die Übertragung der angeforderten
Daten abgeschlossen wurde.
-
Schließlich „zieht" der Server die Verbindung „herunter", indem der OMMU-Eintrag
(oder die Einträge)
für den
importierten Speicher, der mit der Anforderung auf Knoten B verbunden
ist, gelöscht
wird (Schritt 92).
-
Als
Reaktion auf die Abschluß-Nachricht zieht
der anfragende Knoten seine Seite der Verbindung durch Löschen des
entsprechenden IMMU-Eintrags (oder der Einträge) herunter, um den Export
der für
die Anfrage verwendeten Speicher rückgängig zu machen und die lokale
Lese-/Schreibsteuerung
für diesen
Teil des lokalen physikalischen Speichers des anfordernden Systems
zurückzugeben
(Schritt 94). Dann oder gleichzeitig mit dem Vorgang des
Herunterziehens verarbeitet der anfordernde Knoten die empfangenen
Daten (Schritt 96). Natürlich
gibt es viele Variationen des Ablaufs der oben in 7 beschriebenen
Operationen zum Durchführen
eines entfernten Plattenlesevorgangs. Die oben beschriebenen Schritte
der DMA-Operation (Schritte 300, 304) stellen
einen beträchtlichen
Vorteil gegenüber Plattenleseverfahren
nach dem Stand der Technik dar. Insbesondere wird der Plattenlesevorgang schneller
durchgeführt,
da der Vorgang des Speicherns in lokalen Serverspeicher vermieden
wird, was Systemlatenzzeiten reduziert. Ebenso wird, was sehr bedeutsam
ist, die Speichernutzung im Server reduziert, da der Server keine
lokalen Speicherressourcen zur Verwendung durch entfernte Lesevorgänge eines
Clientcomputers belegen muß.
-
8 zeigt
ein Blockdiagramm eines Computers 210 innerhalb des Serverclusters 200 (siehe 6).
Der Computer 210 kann entweder ein Server oder ein Client,
bezogen auf einen bestimmten entfernten Plattenlesevorgang, sein.
Der Computer 210 beinhaltet eine CPU 320, einen internen
Kommunikations- oder Speicherbus 322, wahlfrei zugreifbaren Speicher 324,
eine Kommunikations- oder Netzwerkschnittstelle (communications
or network interface, NIC) 326 und eine nicht-flüchtige,
nicht wahlfrei zugreifbare Speichereinrichtung 328 wie
eine Hochgeschwindigkeits-Magnetplatte
und eine entsprechende Plattensteuerung 330. Die Plattensteuerung 330 beinhaltet
die DMA-Logik 332 zum Durchführen von Datenübertragungen
mittels direktem Speicherzugriff (direct memory access, DMA) in
und aus der Plattenspeichervorrichtung 328.
-
Nach
einer bevorzugten Ausführungsform sind
der NIC 326 und die Plattensteuerung 330 an einen
PCI-Bus 334 angeschlossen, der wiederum an den Hauptspeicherbus 322 durch
eine Busbrücke 336 angeschlossen
ist. Der Speicher 324 des Computers speichert üblicherweise
in Verbindung mit der Plattenspeichereinrichtung 328:
- – ein
Betriebssystem 340 (z. B. das Sun Microsystems Betriebssystems
SolarisTM);
- – Anwendungsprogramme 342,
einschließlich
Anwendungsprogrammen, die Daten aus einer entfernt gelegenen Plattenspeichervorrichtung
anfordern können;
- – ein
Dateisystem 341, das unter anderem Dateiübertragungen
zwischen Computerknoten in Reaktion auf Befehle des Anwendungsprogramms behandelt,
wobei das Dateisystem Client- und Serverdateisystemanteile zum Behandeln
der Seiten von Client und Server einer Dateiübertragung beinhaltet;
- – einen
NIC-Treiber 344 zum Steuern der Netzwerkschnittstelle 326 und
zum Verwalten der IMMU und OMMU darin (nicht in 8 abgebildet);
- – eine
Prozedur zum Lesen entfernter Platten 346 (die vorzugsweise
als Teil des Betriebssystems 340 implementiert ist) zum
Durchführen
des clientseitigen Teils des entfernten Plattenlesevorgangs, in
Verbindung mit NIC-Treiber 344;
- – ein
Plattensteuerungstreiber 348 zum Steuern der Verwendung
der Plattensteuerung, einschließlich
des Einrichtens der Plattensteuerungs-DMA;
- – Empfangspuffer 350 zum
Empfang der angeforderten Daten von einem entfernten Knoten; und
- – eine
Empfangswarteschlange 352 zum Empfang von „Abschluß"-Nachrichten und
dergleichen von entfernten Knoten, nachdem diese Daten an den Computer 210 übermittelt
haben.
-
Der
clientseitige Teil des Dateisystems 341 führt Schritt 82 durch,
welcher die gesamte Kette von Ereignissen zur Durchführung eines
entfernten Platten-I/O-Vorgangs anstößt.
-
Die
Serverseite des entfernten Plattenlesevorgangs ist, wie in 7 gezeigt,
in dem Dateisystem 341 implementiert (zur Durchführung von
Schritt 90), im Schritt NIC-Treiber 344 (d. h.
zur Durchführung
der Schritte 300, 302, 306, 308 und 92)
und dem Plattensteuerungstreiber 348 (d. h. zur Durchführung der
Schritte 301 und 304). Obwohl in 7 nicht
gezeigt, wird die gesamte Kette von Schritten, die auf der Serverseite
durchgeführt
werden, unter der Steuerung des serverseitigen Teils des Dateisystems 341 durchgeführt (d.
h. Schritt 82 auf der Clientseite spricht die Serverseite
des Dateisystems 341 an, was dann auf der Serverseite den
in 7 gezeigten Satz von Schritten einleitet).
-
Schreiben
auf entfernte Platten
-
Genau
dieselben Techniken wie die oben beschriebenen können auch zum Durchführen eines Schreibvorgangs
auf entfernte Platten ausgeführt werden.
Das bedeutet, ein Clientknoten kann unter Verwendung derselben Vorgangs
wie in 7 beschrieben mit den folgenden geringfügigen Änderungen
Daten direkt auf die Platte auf einem Serverknoten schreiben. In
Schritt 80 wird der Speicher, der die auf die Platte zu
schreibenden Daten enthält,
exportiert. In Schritt 82 zeigt die Anforderungsnachricht den
Plattenschreibvorgang an, der durchzuführen ist. In Schritt 301 wird
die Plattensteuerungs-DMA eingestellt, um die Daten aus der Entfernung
auf die Platte zu lesen und in Schritt 304 wird das entfernte
Lesen der DMA auf eine Platte durchgeführt (d. h. Daten von dem Client
werden auf die Platte geschrieben).
-
Während die
vorliegende Erfindung unter Bezugnahme auf einige spezifische Ausführungsformen
beschrieben wurde, ist die Beschreibung für die Erfindung beispielhaft
erläuternd
und soll nicht als Beschränkung
der Erfindung ausgelegt werden. Verschiedene Änderungen können Fachleuten auf dem Gebiet
in den Sinn kommen, ohne von dem Schutzumfang der Erfindung, wie
in den beigefügten
Ansprüchen
definiert, abzuweichen.