-
Die
vorliegende Erfindung bezieht sich auf das Gebiet verteilter Systeme.
Insbesondere bezieht sich diese Erfindung auf eine Leistungsüberwachung
in verteilten Systemen unter Verwendung synchronisierter Takte und
verteilter Ereignisprotokolle.
-
Verteilte
Systeme werden bei einer Vielzahl von Anwendungen häufig eingesetzt.
Ein typisches verteiltes System umfasst einen Satz von Knoten, die über ein
Kommunikationsnetzwerk kommunizieren. Einer oder mehrere der Knoten
umfassen üblicherweise
Verarbeitungsressourcen, die eine Software für eine verteilte Anwendung
ausführen.
Beispiele verteilter Anwendungen umfassen Web-Client-Server-Anwendungen, Groupware-Anwendungen
und industrielle und andere Arten von Steuersystemen.
-
Eine
verteilte Anwendung kann als Anordnung von Softwarekomponenten angesehen
werden, die unter den Knoten eines verteilten Systems aufgeteilt
sind. Beispiele von Softwarekomponenten einer verteilten Anwendung
umfassen Prozesse, Dateisysteme, Datenbankserver, Web-Server, Client-Anwendungen, Server-Anwendungen,
Netzwerkkomponenten und Sensor-, Betätigungsglied- und Steuerungsanwendungen. Üblicherweise
interagieren derartige Softwarekomponenten unter Verwendung von
Mechanismen wie z.B. Funktionsaufrufen, Meldungen, HTTP-Befehlen
usw., um nur einige Beispiele zu nennen, miteinander. Eine Interaktion
zwischen Softwarekomponenten einer verteilten Anwendung kann als
Ereignis bezeichnet werden.
-
Ereignisse,
die an einer Stelle einer verteilten Anwendung erzeugt werden, bewirken üblicherweise, dass
Ereignisse an anderen Stellen in der verteilten Anwendung auftreten.
Bei einer Web-basierten Anwendung beispielsweise kann ein Endbenutzer
eine Taste in einem Web-Browser anklicken. Das An klicken erzeugt üblicherweise
Ereignisse in Form von HTTP-Befehlen.
Jeder HTTP-Befehl wiederum erzeugt üblicherweise andere Ereignisse
an anderen Stellen in der verteilten Anwendung, um den HTTP-Befehl
an einen Web-Server zu kommunizieren, beispielsweise über eine
TCP/IP-Verknüpfung,
die durch die Protokollstapel in jedem Knoten eingerichtet ist.
Ansprechend darauf erzeugt ein Web-Server als entfernter Abschnitt
der verteilten Anwendung üblicherweise
Ereignisse wie z.B. SQL-Aussagen für einen Datenbankzugriff oder
Ereignisse für
einen Dateisystemzugriff, um den HTTP-Befehl auszuführen, sowie
Ereignisse, um die entsprechenden Informationen an den anfragenden
Web-Browser zurückzusenden.
-
Eine
Fähigkeit,
die Zeitgebung von Ereignissen in einer verteilten Anwendung aufzuzeichnen,
kann für eine
Vielzahl von Systemverwaltungsaufgaben wie z.B. Leistungsüberwachung,
Diagnose und Kapazitätsplanung,
nützlich
sein. Beispielsweise kann eine Aufzeichnung der Zeitgebung von Ereignissen
bezüglich
eines Identifizierens von Engpässen
in einer verteilten Anwendung, die die Gesamtleistungsfähigkeit
behindern, nützlich
sein. Ungünstigerweise
zeichnen bekannte Verfahren zur Leistungsüberwachung die Zeitgebung von Ereignissen üblicherweise
in einem einzigen Knoten auf. Bekannte Verfahren liefern üblicherweise
keine Ereigniszeitgebung über
mehrere Knoten einer verteilten Anwendung hinweg.
-
Die
EP-A-0585479 offenbart
eine Vorrichtung zum Überwachen
des Verhaltens eines verteilten Systems, das Testsysteme aufweist
und das eine verteilte Aufzeichnungsfunktion aufweist, die Ereigniszeitstempel
bezüglich
eines Ereignisses an den Systemen erhält.
-
Gemäß einem
ersten Aspekt der vorliegenden Erfindung ist eine verteilte Anwendung
mit einer Leistungsüberwachungsfähigkeit
vorgesehen, die folgende Merkmale aufweist: einen Satz von Knotenanwendungen,
die über
ein Netzwerk kommunizieren, wobei jeder Knoten einen Takt aufweist,
wobei die Takte miteinander synchronisiert sind, wobei jede Knotenanwendung
zumindest eine Funktion aufweist und wobei jeder Knoten ferner eine
Aufzeichnungsfunktion aufweist, die, wenn sie durch die Funktion
aufgerufen wird, einen Ereigniscode von der Funktion erhält und einen
Zeitstempel von einem entsprechenden synchronisierten Takt erhält; und
ein Ereignisprotokoll für
jede Knotenanwendung, wobei jedes Ereignisprotokoll zum Halten einer
Aufzeichnung den entsprechenden Ereigniscode und den entsprechenden
Zeitstempel umfasst, derart, dass die Zeitstempel in den Ereignisprotokollen
in der verteilten Anwendung eine synchronisierte Zeitbasis zum Auswerten
eines Satzes von bedeutenden Ereignissen, die durch die Ereigniscodes
identifiziert werden, liefern.
-
Gemäß einem
zweiten Aspekt der vorliegenden Erfindung ist ein Verfahren zur
Leistungsüberwachung in
einer verteilten Anwendung, die einen Satz von Knotenanwendungen
aufweist, die über
ein Netzwerk kommunizieren, wobei das Verfahren folgende Schritte
umfasst: Ausstatten jedes Knotens mit einem Takt, wobei die Takte
miteinander synchronisiert sind, und mit einer Aufzeichnungsfunktion,
die einen Ereigniscode von einer Funktion der entsprechenden Knotenanwendung
erhält
und die eine Aufzeichnung erzeugt, die einen von einem entsprechenden
synchronisierten Takt erhaltenen Zeitstempel umfasst; Durchführen eines
Experiments in der verteilten Anwendung; Erhalten der Aufzeichnungen
von den Knotenanwendungen und Analysieren der Aufzeichnungen, derart,
dass die Zeitstempel in den Aufzeichnungen in der verteilten Anwendung
eine synchronisierte Zeitbasis zum Auswerten eines Satzes von durch
die Ereigniscodes identifizierten bedeutenden Ereignissen liefern
vorgesehen.
-
Ein
bevorzugtes Ausführungsbeispiel
der vorliegenden Erfindung sieht eine Leistungsüberwachungsfähigkeit über mehrere
Knoten einer verteilten Anwendung hinweg vor und umfasst einen Satz
von Knoten, die über
ein Netzwerk kommunizieren. Eine verteilte Anwendung wird durch
einen Satz von koope rierenden Knotenanwendungen, die in den Knoten
ausgeführt
werden, durchgeführt.
Das verteilte System implementiert Techniken zum Erzeugen von Zeitstempelaufzeichnungen
für jedes
eines Satzes von bedeutenden Ereignissen, die einer oder mehreren
der Knotenanwendungen zugeordnet sind. Die Zeitstempelaufzeichnungen
liefern für
die bedeutenden Ereignisse eine synchronisierte Zeitbasis über die
Knoten hinweg. Dies ermöglicht ein
zeitliches Ordnen der bedeutenden Ereignisse.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung ergeben sich aus
der folgenden ausführlichen
Beschreibung.
-
Die
vorliegende Erfindung wird in Bezug auf bestimmte exemplarische
Ausführungsbeispiele
derselben beschrieben, und dementsprechend wird auf die Zeichnungen
Bezug genommen, bei denen:
-
1 ein
verteiltes System zeigt, das die hierin offenbarten Leistungsüberwachungstechniken
umfasst;
-
2 das
Festhalten von Zeitstempelaufzeichnungen für Ereignisse veranschaulicht,
die den Knotenanwendungen zugeordnet sind;
-
3 ein
Graph ist, der aus den festgehaltenen Zeitstempelaufzeichnungen
mit ihrer synchronisierten Zeitbasis aufgebaut ist;
-
4 ein
Verfahren zur Leistungsüberwachung
in einer verteilten Anwendung unter Verwendung der hierin offenbarten
Techniken zeigt;
-
5 einen
synchronisierten Takt bei einem Ausführungsbeispiel eines Knotens
zeigt.
-
1 zeigt
ein verteiltes System 10, das die hierin offenbarten Leistungsüberwachungstechniken
umfasst. Das ver teilte System 10 umfasst einen Satz von
Knoten 20–24,
die über
ein Netzwerk kommunizieren. Jeder der Knoten 20–24 umfasst
Prozessorressourcen zum Ausführen
eines Satzes von Knotenanwendungen 50–54.
-
Die
Knotenanwendungen 50–54 interagieren über das
Kommunikationsnetzwerk 30, wenn sie eine verteilte Anwendung
in dem verteilten System 10 ausführen. Die durch die Knotenanwendungen 50–54 durchgeführte verteilte
Anwendung kann eine beliebige Art einer verteilten Anwendung sein,
z.B. Web-basierte
Client-Server-Anwendungen einschließlich derjenigen, die im E-Commerce,
bei Groupware-Anwendungen, bei Auftragsbearbeitungsanwendungen oder
Lagerbestandsverwaltungsanwendungen verwendet werden, um einige
Beispiele zu nennen. Außerdem
kann die durch die Knotenanwendungen 50–54 durchgeführte verteilte Anwendung
eine Steuersystemanwendung sein, bei der die Knoten 20–24 die
entsprechende Steuersystemhardware umfassen, die Sensoren und Betätigungsglieder
umfasst.
-
Bei
einem Ausführungsbeispiel
umfasst jeder der Knoten 20–24 jeweils einen
entsprechenden synchronisierten Takt 40–44. Die synchronisierten
Takte 40–44 unterhalten
Zeitwerte, die in Bezug aufeinander synchronisiert sind. Diese synchronisierten
Zeitwerte ermöglichen
die Koordination von Ereigniszeitgebungsmessungen in einer gesamten
verteilten Anwendung in dem verteilten System 10.
-
Die
Noten 20–24 implementieren
jeweils eine entsprechende Ereigniszeitstempelaufzeichnungsfunktion 68, 78 und 88.
Jede Ereigniszeitstempelaufzeichnungsfunktion 68, 78 und 88 ist
durch die entsprechende Knotenanwendung 50–54 aufrufbar.
Jede Ereigniszeitstempelaufzeichnungsfunktion 68, 78 und 88 erhält, wenn
sie aufgerufen wird, einen Zeitwert von dem entsprechenden synchronisierten
Takt 40–44 und
schreibt den Zeitwert und einen durch die entsprechende Knotenanwendung 50–54 bereitgestellten
Ereigniscode als Zeitstempelaufzeichnung in ein entsprechendes Ereignisprotokoll 90–94.
-
Anwendungen
in Knoten, die keine synchronisierten Takte aufweisen, können ebenfalls überwacht werden.
Beispielsweise können
den Knoten, die keine synchronisierten Takte aufweisen, zugehörige Knoten zugeordnet
sein. Interessierende Ereignisse an den Knoten, die keine synchronisierten
Takte aufweisen, werden unter Verwendung der entsprechenden zugehörigen Knoten
zeitgestempelt und aufgezeichnet. Kommunikationspfade zu zugehörigen Knoten
können
ein physischer Draht, ein serieller oder paralleler Kommunikationspfad
usw. sein. Bei einem Ausführungsbeispiel
werden Ereigniscodes von einer Anwendung, die an einem Knoten ausgeführt wird,
der keinen synchronisierten Takt aufweist, an die Ereigniszeitstempelaufzeichnungsvorrichtung
an seinem zugehörigen
Knoten über
den Kommunikationspfad an den zugehörigen Knoten geleitet. Ereignisprotokolle
können
an einem der beiden Knoten implementiert werden.
-
Die
in den Ereignisprotokollen 90–94 aufgezeichneten
Informationen können
durch beliebige der Knoten 20–24 oder andere Knoten,
die über
das Netzwerk 30 erreichbar sind, gelesen werden. Diese
Informationen können
dazu genutzt werden, eine Vielzahl von Leistungsangaben für die durch
die Knotenanwendungen 50–54 durchgeführte verteilte
Anwendung zu bestimmen. Die Informationen können dazu verwendet werden, graphische
Anzeigen zu erstellen, die eine Zeitgebung angeben, die einem Satz
von interessierenden vorbestimmten Ereignissen in einer verteilten
Anwendung zugeordnet ist.
-
Bei
einem Ausführungsbeispiel
werden die Zeitwerte in den synchronisierten Takten
40–
44 unter
Verwendung eines in der
US-Patentschrift
Nr. 5,566,180 beschriebenen Synchronisationsprotokolls
synchronisiert.
-
Bei
einem anderen Ausführungsbeispiel
implementieren die Knoten 20–24 das Netzwerkzeitprotokoll (NTP – network
time protocol). Gemäß NTP tauschen
die Knoten 20–24 regelmäßig Meldungen über das
Netzwerk 30 aus. Jede Meldung enthält einen Zeitwert von dem synchronisierten
Takt 40–44 des
Knotens 20–24, der
die Meldung hervorbrachte. Ansprechend darauf passt jeder Knoten 20–24 seinen
entsprechenden synchronisierten Takt 40–44 an. Schließlich konvergieren
die synchronisierten Takte 40–44 in den Knoten 20–24 zu
synchronisierten Zeitwerten.
-
Das
Netzwerk 30 kann ein paketiertes Netzwerk sein, wie z.B.
Ethernet oder ein Netzwerk wie z.B. LonTalk, das an Steuersysteme
angepasst ist. Alternativ dazu kann das Netzwerk 30 als
serieller oder paralleler Kommunikationsbus oder als anderer Mechanismus
zur Kommunikation implementiert sein.
-
2 veranschaulicht
das Festhalten von Zeitstempelaufzeichnungen für Ereignisse, die den Knotenanwendungen 50–52 zugeordnet
sind. Die Knotenanwendung 50 umfasst einen Satz von Funktionen 60–64, die
anwendungsspezifisch sind, und einen Netzwerkstapel 66,
der eine Kommunikation über
das Netzwerk 30 ausführt.
Desgleichen umfasst die Knotenanwendung 52 einen Satz von
Funktionen 70–74,
die anwendungsspezifisch sind, und einen Netzwerkstapel 76,
der eine Kommunikation über
das Netzwerk 30 ausführt.
-
Die
Einzelheiten der Funktionen 60–64 und 70–74 hängen von
der jeweiligen verteilten Anwendung ab, die durch die Knotenanwendungen 50–52 durchgeführt wird.
Beispielsweise können
die Funktionen 60–64 einer
Web-Browser-Anwendung zugeordnet sein, und die Funktionen 70–74 können einer
Web-Server-Anwendung
zugeordnet sein. Die Netzwerkstapel 66 und 76 bilden
eine Brücke
zwischen dem zu Grunde liegenden physischen Netzwerk 30 und
den Knotenanwendungen 50–52.
-
Die
Anwendung 50 ist derart entworfen, dass ein Aufruf der
Funktion 62 durch die Funktion 60 bei der Ausführung der
entsprechenden verteilten Anwendung als Ereignis von Bedeutung erachtet
wird. Folglich ruft die Funktion 60 die Ereigniszeitstempelaufzeichnungsfunktion 68 nahe
der Zeit des Aufrufs der Funktion 62 auf. Die Funktion 60 leitet
einen Ereigniscode = c1-Parameter mit dem Anruf an die Ereigniszeitstempelaufzeichnungsfunktion 68.
Ansprechend darauf liest die Ereigniszeitstempelaufzeichnungsfunktion 68 einen
Zeitwert (t1) aus dem synchronisierten Takt 40 und schreibt
das Wertepaar c1-t1 als Zeitstempelaufzeichnung in einen Eintrag
in dem Ereignisprotokoll 90.
-
Außerdem wird
ein Aufruf der Funktion 64 durch die Funktion 62 als
Ereignis von Bedeutung bei der Ausführung der entsprechenden verteilten
Anwendung erachtet. Folglich ruft die Funktion 62 die Ereigniszeitstempelaufzeichnungsfunktion 68 nahe
der Zeit des Aufrufs der Funktion 64 auf und leitet einen
Ereigniscode = c2-Parameter mit dem Anruf an die Ereigniszeitstempelaufzeichnungsfunktion 68.
Ansprechend darauf liest die Ereigniszeitstempelaufzeichnungsfunktion 68 einen
Zeitwert (t2) aus dem synchronisierten Takt 40 und schreibt
das Wertepaar c2-t2 als Zeitstempelaufzeichnung in einen Eintrag
in dem Ereignisprotokoll 90.
-
Ein
Aufruf der Funktion 72 durch die Funktion 74 wird
als bedeutendes Ereignis erachtet, und es wird ein Aufruf der Ereigniszeitstempelaufzeichnungsfunktion 78 mit
einem Ereigniscode = c3-Parameter getätigt. Ansprechend darauf liest
die Ereigniszeitstempelaufzeichnungsfunktion 78 einen Zeitwert
(t3) aus dem synchronisierten Takt 42 und schriebt das
Wertepaar c3-t3 als Zeitstempelaufzeichnung in einen Eintrag in
dem Ereignisprotokoll 92.
-
Ein
Aufruf der Funktion 70 durch die Funktion 72 wird
als Ereignis von Bedeutung erachtet, und die Funktion 72 ruft
die Ereigniszeitstempelaufzeichnungsfunktion 78 in der
Nähe dieser
Zeit auf und leitet einen Ereigniscode = c4-Parameter mit dem Aufruf
weiter. Ansprechend darauf liest die Ereigniszeitstempelaufzeichnungsfunktion 78 einen
Zeitwert (t4) aus dem synchronisierten Takt 42 und schriebt
das Wertepaar c4-t4 als Zeitstempelaufzeichnung in einen Eintrag
in dem Ereignisprotokoll 92.
-
Bei
manchen Ausführungsbeispielen
kann die Funktion 70 auf die obige Sequenz reagieren, indem
sie die Funktion 72 aufruft, die die Funktion 74 aufruft,
die den Netzwerkstapel 76 aufruft, um eine Meldung zurück zu der
Knotenanwendung 50 und weiter zu der Funktion 60 hinauf
zu transferieren. Die liefert eine Ereignisschleife, die durch die
Knotenanwendung 50 ins Leben gerufen und durch die Knotenanwendung 52 abgeschlossen
wird, wobei die Antwort an die Knotenanwendung 50 zurückgesendet
wird. Auf dem Rückpfad
können
in den Ereignisprotokollen entlang der Funktionsaufrufkette verschiedene
Codes aufgezeichnet werden.
-
Bei
einem beispielhaften Ausführungsbeispiel
ist die Knotenanwendung 50 ein Web-Browser, und die Knotenanwendung 52 ist
ein Web-Server. Die Funktion 60 erzeugt HTTP-Befehle als
Ereignisse und Zeitwerte für
diese Ereignisse, die durch die Ereigniszeitstempelaufzeichnungsfunktion 68 aufgezeichnet
werden. Durch die Knotenanwendung 52 empfangene HTTP-Befehle,
die einen Datenbankzugriff erfordern, bewirken, dass die Funktion 70,
eine Datenbankzugriffsfunktion, aufgerufen wird und Zeitstempelaufzeichnungen
für diese
Ereignisse durch die Ereigniszeitstempelaufzeichnungsfunktion 78 aufgezeichnet
werden. Desgleichen zeichnet die Ereigniszeitstempelaufzeichnungsfunktion 78 auf,
wenn die Funktion 70 einen Datenbankzugriff abschließt, und
die Ereigniszeitstempelaufzeichnungsfunktion 68 zeichnet
auf, wenn die Ergebnisse an die Funktion 60 zurückgeliefert
werden, um eine Web-Browser-Web-Server-Transaktionsschleife abzuschließen.
-
In
manchen zeitkritischen Fällen
zeichnet eine Hardware in einem Knoten automatisch einen Zeitstempel
für ein
bedeutendes Ereignis auf, beispielsweise die Zeit einer Datenerhebung
für einen
Sensor oder eine Ankunftszeit einer Netzwerkmeldung. Dieser Zeitstempel
kann zusammen mit dem gewünschten
Code an eine Ereigniszeitstempelaufzeichnungsvorrichtung geleitet
werden, um in einem Ereignisprotokoll gespeichert zu werden.
-
Tabellen
1 und 2 zeigen Beispiele von Informationen, die in den Ereignisprotokollen
90 bzw.
92 für die oben
beschriebene beispielhafte Sequenz aufgezeichnet sind. Tabelle 1
Ereigniscode | Zeitstempel |
c1 | t1 |
c2 | t2 |
c2(ret) | t7 |
c1(ret) | t8 |
Tabelle 2
Ereigniscode | Zeitstempel |
c3 | t3 |
c4 | t4 |
c4(ret) | t5 |
c3(ret) | t6 |
-
Diese
Sequenz von Einträgen,
die in die Ereignisprotokolle 90 und 92 geschrieben
sind, können
als Entsprechung einer Serie von Zuständen S1 mit S8 in der durch
die Knotenanwendungen 50–52 durchgeführten verteilten
Anwendung angesehen werden. Die Zustände S1 mit S4 entsprechen den
Ereigniscodes-Wertepaaren C1-t1, C2-t2, C3-t3 bzw. C4-t4. Die Zustände S5 mit
S8 entsprechen den Ereigniscodes-Wertepaaren C4(ret)-t5, C3(ret)-t6,
C2(ret)-t7 bzw. C1(ret)-t8.
-
Tabelle
3 vereinigt die Informationen, die in den Ereignisprotokollen
90 bzw.
92 für die oben
beschriebene beispielhafte Sequenz aufgezeichnet sind.
Zustand
Nummer | Knoten | Ereigniscode | Zeitstempel |
S1 | 20 | C1 | T1 |
S2 | 20 | C2 | T2 |
S3 | 22 | C3 | T3 |
S4 | 22 | C4 | T4 |
S5 | 22 | C4(ret) | T5 |
S6 | 22 | C3(ret | T6 |
S7 | 20 | C2(ret | T7 |
S8 | 20 | C1(ret) | T8 |
-
3 ist
ein Graph, der aus den Informationen aufgebaut ist, die aus den
Ereignisprotokollen 90–92 erhalten
werden. Die Zustände
S1 mit S8 sind bezüglich
der entsprechenden Zeitwerte t1 mit t8 aufgetragen gezeigt. Die
Zeitwerte t1 mit t8, die aus den synchronisierten Takten 40–42 erhalten
wurden, liefern eine synchronisierte Zeitbasis zum Analysieren der
Zeitgebung der Zustände
S1 mit S8, obwohl diese Zustände
Ereignisse darstellen, die in den separaten Knoten 20 und 22 auftreten.
-
Eine
Untersuchung der Graphen zeigt, dass die höchste Latenzzeit in den Zuständen S1
mit S8 zwischen den Zuständen
S2 und S3, zwischen den Zuständen
S4 und S5 und zwischen den Zuständen
S6 und S7 auftritt. Die Übergänge zwischen
den Zuständen
S2 und S3 und zwischen den Zuständen
S6 und S7 entsprechen der Latenzzeit einer Meldungsübertragung über das
Netzwerk 30. Die Übergänge zwischen
den Zuständen
S4 und S5 entsprechen der Latenzzeit der Funktion 70, die
bei dem beispielhaften Ausführungsbeispiel
ein Datenbanknachschlag ist.
-
4 zeigt
ein Verfahren zur Leistungsüberwachung
in einer verteilten Anwendung unter Verwendung der hierin offenbarten
Techniken. Bei Schritt 100 wird ein Satz von bedeutenden
Ereignissen in der verteilten Anwendung bestimmt. Die Bedeutung
eines Ereignisses ist allgemein anwendungsspezifisch. Für das obige Beispiel
sind die bedeutenden Er eignisse die Erzeugung von HTTP-Befehlen,
das Senden und der Empfang von Meldungen in dem Netzwerk 30 und
Datenbankzugriffe für
Antworten auf die HTTP-Befehle. Für eine verteilte Steueranwendung,
als weiteres Beispiel, können
die bedeutenden Ereignisse die Erzeugung von Steuerwerten, der Empfang
von Sensordaten und die Anwendung von Steuerwerten auf Betätigungsglieder
usw. sein.
-
Bei
Schritt 102 sind die verteilten Knotenanwendungen, die
die verteilte Anwendung durchführen,
mit einer Funktionalität
zum Erzeugen von Zeitstempelaufzeichnungen in ihren entsprechenden
Ereignisprotokollen, wenn die bedeutenden Ereignisse auftreten,
ausgestattet. Bei dem obigen Beispiel sind die Knotenanwendungen 50–54 mit
den Ereigniszeitstempelaufzeichnungsfunktionen 68, 78 bzw. 88 ausgestattet,
die die entsprechenden synchronisierten Takte 40–44 lesen
und Einträge
in den Ereignisprotokollen 90–94 protokollieren. Alternativ
dazu können
eine oder mehrere der Funktionen 60–64 und 70–74 und
Netzwerkstapel 66–76 die synchronisierten
Takte 40–44 direkt
lesen und direkt Einträge
in die Ereignisprotokolle 90–94 schreiben, oder ihre
Funktionen können
in Hardware und/oder in zugehörigen
Knoten durchgeführt
werden.
-
Bei
Schritt 104 werden in der verteilten Anwendung ein oder
mehrere Experimente durchgeführt,
um die bedeutenden Ereignisse zu erzeugen und Zeitstempelaufzeichnungen
festzuhalten. Bei dem obigen Beispiel werden HTTP-Befehle unter
Verwendung der Knotenanwendung 50 erzeugt und durch die
Knotenanwendung 52 verarbeitet, wodurch bedeutende Ereignisse
erzeugt werden, die in den Ereignisprotokollen 90–92 aufgezeichnet
werden. Ereignisschleifen wie z.B. die Zustände S1 mit S8 können viele
Male ausgeführt
werden, um Zeitstempelaufzeichnungen zu sammeln.
-
Bei
Schritt 106 werden die während des Schritts 104 festgehaltenen
Zeitstempelaufzeichnungen gelesen und analysiert. Bei dem obigen
Beispiel werden die Zeitstempelaufzeichnun gen aus den Ereignisprotokollen 90–94 gelesen.
Jegliches Computersystem oder jeglicher Knoten usw., das bzw. der
einen Zugriff auf das Netzwerk 30 hat, einschließlich der
Knoten 20–24,
kann die Zeitstempelaufzeichnungen lesen und analysieren. Es können Graphen
wie z.B. der der 3 oder eine andere Art von Graph
erzeugt werden. Beispielsweise können
Zeitstempelaufzeichnungen von vielen Schleifen durch die Zustände S1 mit
S8 einem Graphen überlagert
werden und/oder dazu verwendet werden, statistische Verteilungen
von Zeitwerten zu erzeugen, die Übergängen zwischen
den Zuständen
S1 mit S8 zugeordnet sind.
-
5 zeigt
den synchronisierten Takt 40 bei einer exemplarischen Konfiguration
des Knotens 20. Die synchronisierten Takte 42–44 können auf ähnliche
Weise implementiert sein. Der synchronisierte Takt 40 umfasst
eine Zeitpaketerkennungsvorrichtung 214, einen Takt 212 und
einen Zwischenspeicher bzw. ein Latch 210. Der Knoten 20 umfasst
eine physische Schnittstelle 200, die ein Senden und einen
Empfang von Paketen über
das Netzwerk 30 ermöglicht.
Die physische Schnittstelle 200 liefert empfangene Pakete
an die Zeitpaketerkennungsvorrichtung 214.
-
Bei
diesem Beispiel erhält
der synchronisierte Takt 40 ansprechend auf Zeitgebungsdatenpakete
und auf Nachfolgepakete, die über
das Netzwerk 30 transferiert werden, eine synchronisierte
Zeit aufrecht. Beispielsweise werden ein Zeitgebungsdatenpaket 218 und
ein Nachfolgepaket 216 auf dem Netzwerk 30 getragen.
Das Zeitgebungsdatenpaket 218 und das Nachfolgepaket 216 werden
durch einen Master-Takt in dem Netzwerk 30 erzeugt. Der
Master-Takt kann in einem der Knoten 22–24 oder in einem
anderen Knoten, der über
das Netzwerk 30 erreichbar ist, enthalten sein. Der Master-Takt
kann ein Echtzeittakt sein.
-
Das
Zeitgebungsdatenpaket 218 umfasst eine Begrenzungseinrichtung 254,
die es als Zeitgebungsdatenpaket für das Synchronisierungsprotokoll
des synchronisierten Taktes 40 i dentifiziert. Das Nachfolgepaket 216 umfasst
einen Zeitstempel 250. Der Zeitstempel 250 gibt
die lokale Zeit in dem Master-Takt an, zu der das Zeitgebungsdatenpaket 218 erzeugt
wurde.
-
Die
Zeitpaketerkennungsvorrichtung 214 empfängt das Zeitgebungsdatenpaket 218 durch
die physische Schnittstelle 200. Die Zeitpaketerkennungsvorrichtung 214 erfasst
einen eindeutigen Zeitgebungspunkt in dem wiedergewonnenen Bitstrom
für das
Zeitgebungsdatenpaket 218. Auf ein Erfassen des eindeutigen Zeitgebungspunktes
hin bewirkt die Zeitpaketerkennungsvorrichtung 214, dass
das Latch 210 einen Zeitwert von dem Takt 212 zwischenspeichert.
Der in dem Latch 210 gehaltene Zeitwert gibt die lokale
Zeit an, zu der die Zeitpaketerkennungsvorrichtung 214 das
Zeitgebungsdatenpaket 218 empfing. Danach empfängt die
Zeitpaketerkennungsvorrichtung 214 das Nachfolgepaket 216 und
extrahiert den Zeitstempel 250. Der Unterschied zwischen
dem Zeitstempel 250 und dem Zeitwert in dem Latch 210 gibt
die relative Synchronisierung des Master-Taktes und des Taktes 212 an.
Nachdem dieser Unterschied durch den Prozessor 202 errechnet wurde,
wird er dazu verwendet, den Zeitwert in dem Takt 212 anzupassen,
damit er mit dem Master-Takt übereinstimmt.
-
Die
Anpassung des Zeitwertes in dem Takt 212 kann dadurch bewerkstelligt
werden, dass der Takt 212 als Zähler implementiert wird, der
durch einen Oszillator mit ausreichender Stabilität getrieben
wird. Die wenigen niedrigstwertigen Bits des Zählers können als Addierer implementiert
werden, so dass ein Inkrement bezüglich Oszillatorperioden gelegentlich
erhöht
oder verringert werden kann, um den Takt 212 je nach den
Ergebnissen der Berechnung des Unterschiedes zwischen dem Zeitstempel 250 und
der in dem Latch 210 gehaltenen Zeit effektiv zu beschleunigen
oder zu verlangsamen. Der Prozessor 202 liest, wenn er
die Ereigniszeitstempelaufzeichnungsfunktion 68 ausführt, den
Inhalt des Taktes 212, um Zeitstempel zu erhalten.
-
Während eine
verteilte Anwendung ausgeführt
wird, ergeben die vorliegenden Lehren einen Satz von Zeitstempelaufzeichnungen
in jedem Knoten, der an der verteilten Anwendung beteiligt ist.
Synchronisierte Takte in dem Knoten liefern eine synchronisierte
Zeitbasis, die ein zeitliches Ordnen der Zeitstempelaufzeichnungen
ermöglicht.
Diese Informationen sind die Basis für eine Leistungsanalyse der
verteilten Ende-Zu-Ende-Anwendung. Zusätzlich zu einer zusammenfassenden
statistischen Leistungsmetrik (z.B. durchschnittliche Ende-Zu-Ende-Latenzzeit)
können
mit diesem System Einzelheiten über
einzelne verteilte Transaktionen festgehalten werden.
-
Aus
den Zeitstempelaufzeichnungen kann eine einzelne Transaktion analysiert
werden, um zu ermitteln, warum sie von der Norm abweicht. Diese
ausführlichen
Informationen liefern Schlüsseleinsichten
für Softwareingenieure
und Systemprogrammierer bezüglich
eines Verständnisses
des Gesamtverhaltens der verteilten Anwendung.
-
Da
diese Technik Leistungsengpässe über das
verteilte System hinweg rasch identifiziert, können technische Ressourcen
auf die Bereiche zum Optimieren, Abstimmen und/oder Neuentwerfen
von Software/Hardware fokussiert werden. Die sich ergebenden Verbesserungen
können
mit den vorliegenden Techniken überwacht
und analysiert werden, um die echten Vorteile der Veränderungen
zu bewerten und um technische Aktivitäten für die nächste Runde von Verbesserungen
zu fokussieren.
-
Durch
einen iterativen Prozess des Verwendens der vorliegenden Techniken,
um Leistungsengpässe zu
identifizieren und anschließend
technische Ressourcen zu fokussieren, um diese Engpässe zu beseitigen, kann
die Leistungsfähigkeit
der verteilten Anwendung anschließend verbessert werden.
-
Eine
Ereigniszeitstempelaufzeichnungsvorrichtung kann in zwei Modi betrieben
werden, einschließlich eines
solchen, bei dem ein Zeitstempel und ein Code durch eine Anwendung
(üblicherweise
durch die Hardware) bereitgestellt werden), und eines solchen, bei
dem ein Zeitstempel durch die Ereigniszeitstempelaufzeichnungsvorrichtung
gelesen wird, während
der Code von der Anwendung verarbeitet wird.
-
Bei
manchen Ausführungsbeispielen
wird der interessierende Ereigniscode zusammen mit einem Zeitstempel
der Anwendung präsentiert.
Bei diesem Ausführungsbeispiel
speichert eine Ereigniszeitstempelaufzeichnungsvorrichtung sowohl
den Ereigniscode als auch den Zeitstempel und liest keinen lokalen
Takt. Beispielsweise erzeugt ein Messknoten in einem verteilten
Mess- und Steuersystem automatisch einen Zeitstempel, wenn eine
Messung durchgeführt
wird. Wenn die Anwendung diese Messung als interessant erachtet,
leitet sie den entsprechenden Ereigniscode und Zeitstempel zur Speicherung
an eine Ereigniszeitstempelaufzeichnungsvorrichtung.
-
Die
vorliegenden Techniken liefern die Fähigkeit, Wiederholungen einer
Sequenz verteilter Transaktionen zu analysieren. Da Zeitstempelaufzeichnungen
von jeder Wiederholung festgehalten werden, ist es sehr nützlich,
zu analysieren, wie alle Wiederholungen im Vergleich zueinander
abschneiden. Beispielsweise statistische Beschreibungen der vollständigen Transaktion
wie z.B. die durchschnittliche Verzögerung für eine Transaktion, die maximale
Verzögerung,
die minimale Verzögerung
und die statistische Verteilung (d.h. Histogramm).
-
Es
kann ein Paar von Zuständen
ausgewählt
und die Verzögerung
zwischen denselben analysiert werden. Dies liefert einen Teil der
Verzögerung
für die
gesamte Transaktion, und ähnliche
Informationen wie z.B. Durchschnitt, Maximum, Minimum und Verteilung
können
berechnet werden.
-
Die
Tatsache, dass die vorliegenden Techniken einen Zeitstempel für von jedem
Zustand über
eine verteilte Anwendung hinweg ergeben, liefert im Vergleich zu
anderen Messtechniken mehr Informationen. Dadurch wird es möglich, zusätzlich zu
einem einfachen Durchschnitt die statistische Verteilung zu analysieren.
-
Es
kann sinnvoll sein, zu untersuchen, was bei unterschiedlichen Knoten
geschieht. Ein Ziel von verteilten Anwendungen besteht darin, zu
ermöglichen,
dass alle Knoten gleichzeitig sinnvolle Arbeit leisten (z.B. parallele
Ausführung).
Während
der Server arbeitet, führt
der Client ebenfalls eine sinnvolle Tätigkeit aus. Die Ereignisse
und Zeitstempel von den verschiedenen Knoten, die durch die vorliegenden
Techniken geliefert werden, ermöglichen
die Erzeugung von Diagrammen, die beschreiben, wie viel parallele
Arbeit wirklich vorliegt.
-
Zusätzlich zu
einer Bereitstellung von Zeitstempeln liefern die hierin offenbarten
synchronisierten Taktmechanismen auch detaillierte Statistiken darüber, wie
eng ein Slave-Takt
mit dem fernen Master-Takt synchronisiert ist. Eine Statistik, die
zur Verfügung
steht, ist der lokale Taktversatz auf Grund der Beschaffenheit des
Synchronisierungsalgorithmus in manchen Ausführungsbeispielen (ein digitaler
Software-Servo-Algorithmus) – dieser
Wert variiert zwischen den Synchronisierungsgrenzen. Eine Ereigniszeitstempelaufzeichnungsvorrichtung
kann diesen Versatz zusammen mit dem Zeitstempel speichern. In einer
Nachverarbeitungsphase können
diese neuen Informationen beim Vergleichen von Zeitstempeln aus
unterschiedlichen Knoten verwendet werden. Diese können als
Zeitstempelvertrauensgrenzen an den Treppenstufendarstellungen betrachtet werden.
Dies ergibt eine visuelle Angabe, ob zwei Ereignisse zu nahe beieinander
liegen, um zu unterscheiden, welches zuerst eintrat.
-
Zugehörige Knoten
befinden sich, wenn sie verwendet werden, vorzugsweise in unmittelbarer
Nähe der
entsprechenden Knoten und kommunizieren unter Verwendung eines Niedrige- Latenzzeit-Mechanismus wie
z.B. eines Drahtes oder eines Parallelkanals usw.
-
Der
zugehörige
Knoten kann sehr einfach sein und lediglich einen synchronisierten
Takt enthalten. Ein Knoten sendet ein Signal an den zugehörigen Knoten
und empfängt
den aktuellen Zeitstempel. Alle Pufferverwaltungsfunktionen befinden
sich in dem anderen Knoten. Dies ist sinnvoll, wenn der andere Knoten
ein vollständiger
Beteiligter an den vorliegenden Techniken ist, jedoch keinen synchronisierten
Takt aufweist. Beispielsweise kann der andere Knoten ein PC- oder Netzwerk-Server
sein.
-
Alternativ
dazu können
zugehörige
Knoten synchronisierte Takte und die gesamte Pufferverwaltungsfunktion
aufweisen. Der andere Knoten sendet den Ereigniscode. Der zugehörige Knoten
führt anschließend die
Zeitstempelfunktion, Pufferverwaltung usw. durch. Der Code kann über einen
separaten digitalen oder analogen Draht, wobei der zugehörige Knoten
eine Messung des Verhaltens des anderen Knoten durchführt.
-
Es
ist vorzuziehen, dass die Kommunikationslatenzzeit zwischen einem
Knoten und seinem zugehörigen
Knoten auf einem Minimum gehalten wird.
-
Die
Ereignisprotokolle 90–94 können auf
kreisförmige
Weise (kreisförmige
Warteschlange) organisiert werden. Während einer Datensammlung füllen die
Ereignisprotokolle 90–94 die ältesten
Zeitstempelaufzeichnungen in den Ereignisprotokollen 90–94,
und neue Zeitstempelaufzeichnungen ersetzen dieselben. Wenn einer
der Knoten 20–24 eine
abweichende Situation wie z.B. einen langen Umlauf für eine Netzwerktransaktion erkennt,
kann er vorzugsweise unter Verwendung einer Gruppensendung in dem
Netzwerk 30 rasch eine Meldung an alle beteiligten Knoten
aussenden. Diese Meldung umfasst eine interessierende Anfangszeit
und Dauer. Alle beteiligten Knoten nutzen diese Informationen, um
diese Abschnitte ihrer entsprechenden Ereignispuffer 90–94 einrasten
zu las sen, so dass sie nicht mit neuen Zeitstempelaufzeichnungen überschrieben
werden. Danach können
die eingerasteten Abschnitte der Ereignispuffer 90–94 zum
Zweck einer Nachanalyse wiedergewonnen werden. Während die eingerasteten Abschnitte
wiedergewonnen werden, kann der entsprechende Knoten 20–24 die
Einrastung dieser Abschnitte des entsprechenden Ereignispuffers 90–94 rückgängig machen
und weiterhin Zeitstempelaufzeichnungen sammeln. Dies ist besonders
bei Anwendungen sinnvoll, bei denen bedeutende Ereignisse selten
sind. Die Knoten 20–24 sind
dahin gehend konfiguriert, nach einem Bedeutungsereignis auszuschauen,
und wenn es erfasst wird, werden alle anderen Knoten 20–24 benachrichtigt.
-
Es
ist vorzuziehen, dass Ereignisprotokolle 90–94 groß genug
sind, um alle interessanten Ereignisse über die Abrufphase des Nachverarbeitungsintervalls
plus eines Sicherheitsspielraums, um alle Ereignisse, die in letzter
Zeit hereingekommen sind, festzuhalten, zu speichern. Der Sicherheitsspielraum
ist so bemessen, dass jeder Knoten ausreichend Zeit hat, die Bestimmung
durchzuführen,
ob ein Ereignis interessant ist, und die Einrastmeldung auszusenden.
Die Durchlaufzeit und Verarbeitungszeit für die Einrastmeldung sollten ebenfalls
in Betracht gezogen werden.
-
Die
vorliegenden Techniken können
leichte Verzögerungen
bei der Ausführung
der verteilten Anwendung bewirken. Diese Verzögerung kann unter Verwendung
der vorliegenden Techniken gemessen, und die Verzögerungen
in der Nachverarbeitungsphase beseitigt werden. Um diese Korrektur
durchzuführen,
führt eine
Anwendung eine Korrekturschleife wie z.B. die folgende durch:
For
(I = 0; 1 < 10000;
I++) {
EventLog(startCorrectionCode);
EventLog(endCorrectionCode);
}
-
Die
Zeitstempel aus diesen Paaren von Zeitstempelaufzeichnungen können subtrahiert
und anschließend
analysiert werden, um ein Verständnis
der durchschnittlichen Verzögerung,
der maximalen Verzögerung, der
minimalen Verzögerung
und der statistischen Verteilung von Verzögerungen zu erhalten. Diese
Fakten können
dazu verwendet werden, die Nachanalyseergebnisse der vollständigen verteilten
Anwendung zu korrigieren.
-
Da
diese Verzögerungen
variieren können,
während
die verteilte Anwendung läuft,
kann der Anwendungsprogrammierer an irgendeinem Punkt in der Anwendung
zwei aufeinander folgende Aufrufe an die EventLog()-Funktion (EventLog
= Ereignis-Protokoll)
eingeben, wie oben veranschaulicht wurde. Auf Kosten eines Ereignisprotokollraums
kann die Differenz bei diesen beiden Zeitstempeln dazu verwendet
werden, den Zeitgebungsmehraufwand der vorliegenden Techniken zu überprüfen. Es
ist vorzuziehen, dass das EventLog() effizient ist und seine Ausführungszeit
viel kürzer
ist als die laufende verteilte Anwendung.
-
Die
vorstehende detaillierte Beschreibung der vorliegenden Erfindung
ist zu Veranschaulichungszwecken vorgesehen und soll nicht erschöpfend sein
oder die Erfindung auf das genaue offenbarte Ausführungsbeispiel
beschränken.
Demgemäß ist der
Schutzumfang der vorliegenden Erfindung durch die angehängten Patentansprüche definiert.