DE69422476T2 - Betriebssystembasierte Programmleistungsüberwachung - Google Patents

Betriebssystembasierte Programmleistungsüberwachung

Info

Publication number
DE69422476T2
DE69422476T2 DE69422476T DE69422476T DE69422476T2 DE 69422476 T2 DE69422476 T2 DE 69422476T2 DE 69422476 T DE69422476 T DE 69422476T DE 69422476 T DE69422476 T DE 69422476T DE 69422476 T2 DE69422476 T2 DE 69422476T2
Authority
DE
Germany
Prior art keywords
code
executed
program
kernel
processor
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 - Lifetime
Application number
DE69422476T
Other languages
English (en)
Other versions
DE69422476D1 (de
Inventor
William J. Bolosky
Richard F. Rashid
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of DE69422476D1 publication Critical patent/DE69422476D1/de
Application granted granted Critical
Publication of DE69422476T2 publication Critical patent/DE69422476T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

  • Die vorliegende Erfindung betrifft im allgemeinen Datenverarbeitungssysteme und im besonderen auf die Ausführung der Überwachung von Programmen, die auf Datenverarbeitungssystemen laufen.
  • Der Erfindung zugrundeliegender Stand der Technik
  • Es wurde bereits eine Reihe unterschiedlicher statistischer Verfahren zur Überwachung eines auf einem Datenverarbeitungssystem laufenden Programms entwickelt. Eines der meistverwendeten Verfahren besteht darin, die zur Ausführung bestimmter Programmfunktionen benötigte Zeit zu überwachen. Eine Schwierigkeit bei diesem Herangehen besteht darin, daß häufig das Schrittintervall der zur Zeitmessung der Funktionen verwendeten Uhr zu groß ist, um ein genaues Bild darüber zu liefern, wie sich die Verarbeitungszeit auf die jeweiligen Funktionen aufteilt. Die Zählung der Befehle ist ein anderes statistisches Verfahren zur Überwachung der Ausführung eines Programms. Befehlszählverfahren wurden im allgemeinen beschränkt auf die Überwachung der Ausführung von Programmen auf Benutzerebene (im Gegensatz zu Programmen auf Systemebene), zum Beispiel von Anwendungsprogrammen. Diese Verfahren waren zur Überwachung der Leistung von Kernels des Betriebssystems nicht einsetzbar. Im Ergebnis dieser Einschränkungen waren statistische Verfahren für Programmierer oft wenig hilfreich bei ihren Bemühungen um eine Erhöhung der Programmleistung.
  • Die Patentschrift EP-A-0 526 055 legt ein Rechnersystem zur Überwachung der Ausführung eines Rechnerprogramms offen, das dazu dient, mittels der Erkennung vorgegebener Befehle, für die ein bestimmtes, zu jedem Befehl hinzugefügtes Testbit als Flag gesetzt wird, eine Profilanalyse zu erstellen.
  • Zusammenfassung der Erfindung
  • Gemäß der vorliegenden, in den beigefügten Ansprüchen niedergelegten Erfindung wird ein Verfahren offengelegt, das in einem Datenverarbeitungssystem angewandt wird, das einen Prozessor für die Ausführung von Befehlen und einen Speichermechanismus für die Speicherung eines Betriebssystems und eines Überwachungsprogramms auf Benutzerebene aufweist. Der Prozessor führt Befehle auf einer Benutzerebene und einer Systemebene aus. Bei dem Datenverarbeitungssystem kann es sich um ein vernetztes System handeln. Bei diesem Verfahren ist im Kernel des Betriebssystems eine Einrichtung zur Überwachung der Programmleistung vorgesehen. Die Einrichtung kann zum Beispiel die vom Prozessor ausgeführten Befehle zählen, zählen, wie oft ein Codeabschnitt während der Programmausführung aufgerufen wird, oder eine Anzahl nach der jeweiligen Funktion kategorisierter separater Zählungen ausführen, die die Anzahl der im Rahmen der jeweiligen Funktionen ausgeführten Befehle angeben. Ein Codeabschnitt des Programms wird vom Prozessor ausgeführt. Die Einrichtung im Kernel des Betriebssystems wird dann verwendet, um die Systemleistung zu überwachen. Die Art der verwendeten Einrichtung bestimmt die von der Einrichtung gezählten Werte. Die Zählungen werden dem Überwachungsprogramm auf Benutzerebene berichtet. Die Einrichtung kann zum Beispiel die Anzahl von Befehlen während der Ausführung eines Codeabschnittes des Programms oder die Anzahl der Aufrufe des Codeabschnittes des Programms zählen, oder die Einrichtung kann eine Anzahl nach der jeweiligen. Funktion kategorisierter separater Zählungen ausführen, die die Anzahl der im Rahmen der jeweiligen Funktionen ausgeführten Befehle angeben, wenn eine erste Funktion während der Ausführung des Programms aufgerufen wird. Das Programm kann ein Programm auf Benutzerebene oder Teil des Kernels des Betriebssystems sein.
  • Die vorliegende Erfindung wird im Detail durch die beigefügten Ansprüche definiert.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm eines vernetzten Systems zur Umsetzung einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 2 ist ein Blockdiagramm, das ein Rechnersystem nach Fig. 1 detaillierter zeigt.
  • Fig. 3 ist ein Blockdiagramm, das ein API nach Fig. 2 detaillierter zeigt.
  • Fig. 4 ist ein Flußdiagramm, das aus der Sicht eines Benutzers die Schritte zeigt, die bei der Überwachung der Programmleistung und dem Tuning des Programms ge mäß der bevorzugten Ausführungsform der vorliegenden Erfindung ausgeführt werden.
  • Fig. 5 ist ein Flußdiagramm, das detaillierter zeigt, wie Haltepunkte eingefügt werden und wie ein Programm zum Ablauf gebracht wird, wenn es von der bevorzugten Ausführungsform der vorliegenden Erfindung überwacht wird.
  • Detaillierte Beschreibung der Erfindung
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung schafft eine Einrichtung im Kernel eines Betriebssystems zur Überwachung der Leistung von Programmen. Die Einrichtung bietet einem Benutzer eine Reihe von Optionen. Erstens ermöglicht es die Einrichtung dem Benutzer, die Anzahl der von einer Funktion ausgeführten Befehle jedesmal zu zählen, wenn die Funktion aufgerufen wird. Zweitens ermöglicht es die Einrichtung dem Benutzer, die Anzahl und Häufigkeit der Aufrufe einer bestimmten Funktion zu zählen, ohne die in der Funktion ausgeführten Befehle zu zählen, und drittens ermöglicht es die Einrichtung dem Benutzer, die Anzahl der in jeder Funktion ausgeführten Befehle zu zählen, die im Ergebnis des Aufrufs einer Anfangsfunktion aufgerufen wird. Da die Einrichtung im Kernel des Betriebssystems vorgesehen ist, kann sie nicht nur zur Überwachung der Leistung von Programmen auf Benutzerebene, wie zum Beispiel Anwendungsprogrammen, sondern auch zur Leistungsüberwachung des Kerneis und anderer Abschnitte des Betriebssystems verwendet werden. Durch die Einrichtung im Kernel des Betriebssystems erhöht sich auch die Überwachungsgeschwindigkeit und wird ein Herangehen an die Leistungsüberwachung möglich, das keinerlei Beeinträchtigung der Operationen mit sich bringt und keine Modifikationen an dem zu überwachenden Programm erfordert.
  • Die bevorzugte erfindungsgemäße Ausführungsform kann in einem vernetzten System wie in jenem aus Fig. 1 eingesetzt werden. Natürlich kann die Erfindung auch in einem Einprozessorsystem eingesetzt werden. Das vernetzte System weist eine Anzahl von Rechnersystemen 12 auf, die über ein Netzwerk 14 miteinander kommunizieren. Jedes der Rechnersysteme 10 kann gleichlaufend eine Spur des Programms verfolgen, das es ausführt. Das Netzwerk kann eine beliebige verschiedene Netzwerktypen, einschließlich lokaler Netzwerke (LANs) oder Fernnetzwerke, umfassen. Für Fachleute liegt es auf der Hand, daß das vernetzte System 10 eine andere Anzahl von Rechnersystemen als in Fig. 1 umfassen kann. Die Abbildung von vier Rechnersystemen im Netzwerk dient nur der Veranschaulichung.
  • Fig. 2 zeigt ein detaillierteres Blockdiagramm der in einem der Rechnersysteme 12 enthaltenen Komponenten. Nicht jedes der Rechnersysteme muß diese Konfiguration aufweisen, sondern die dargestellte Konfiguration ist als rein illustrativ aufzufassen. Das Rechnersystem 12 weist eine zentrale Verarbeitungseinheit (CPU) 13 und einen Speicher 16 auf. Die CPU verfügt über eine Anzahl von Registern 17 einschließlich eines Registers FLAGS und eines Registers SS (Stapelsegment). Diese Register werden nachstehend ausführlicher beschrieben. Der Speicher 16 enthält eine Kopie eines vernetzten Betriebssystems 28, zum Beispiel das Betriebssystem NT von Microsoft, vermarktet von der Microsoft Corporation Redmond, Washington. In der bevorzugten erfindungsgemäßen Ausführungsform verfügt jedes der Rechnersysteme 12 über eine Kopie des Betriebssystems, das auf ihm läuft. Das Betriebssystem 28 weist ein Kernel 30 auf, das seinerseits einen Codeabschnitt 32 umfaßt, der die Leistungsüberwachung unterstützt. Der Codeabschnitt 32 wird unten ausführlicher erläutert. Der Speicher 16 kann auch mindestens ein Anwendungsprogramm 26 enthalten, das auf der CPU 13 laufen kann. Das Anwendungsprogramm 26 muß sich jedoch nicht resident im Speicher 16 befinden.
  • Das Rechnersystem 12 weist weiterhin eine Anzahl peripherer Geräte auf. Diese peripheren Geräte umfassen eine sekundäre Speichereinrichtung 18, zum Beispiel ein Diskettenlaufwerk, eine Tastatur 20, eine Bildschirmanzeige 22 und eine Maus 24.
  • Fig. 3 zeigt ein Blockdiagramm, das den Codeabschnitt 32 detaillierter darstellt. Das API umfaßt eine Haltepunkteinrichtung 34 zur Unterstützung der Erzeugung von Haltepunkten in einem auf der CPU 13 laufenden Programm. Der Codeabschnitt 32 weist weiterhin einen Einzelschritt-Interrupthandler 36 zum Behandeln von Einzelschrittinterrupts auf. Um die Rolle der Haltepunkteinrichtung 34 und des Einzelschritt-Interrupthandlers 36 zu erklären, ist es nützlich, zuerst darzulegen, was Haltepunkte und Einzelschrittinterrupts sind.
  • Ein Einzelschrittinterrupt ist ein Interrupt, der verwendet wird, wenn ein Programm in Einzelschritten arbeitet. Das Arbeiten in Einzelschritten bezieht sich auf einen Betriebsmodus der CPU 13, bei dem zu einem bestimmten Zeitpunkt nur ein Befehl unter Kontrolle eines Überwachungsprogramms ausgeführt wird. Das Arbeiten in Einzelschritten bietet Debuggern und Leistungsüberwachungsprogrammen die Möglichkeit, ein Programm langsam auszuführen, um dessen Ausführung sorgfältig zu überwachen. Im vorliegenden Falle stellt der Einzelschritthandler 36 das Überwa chungsprogramm dar, unter dessen Kontrolle ein zu überwachendes Programm zu einem Zeitpunkt jeweils einen Befehl ausführt. Im allgemeinen wird ein Befehl ausgeführt und danach ein Einzelschrittinterrupt gesetzt, um die Steuerung des Prozessors auf das Überwachungsprogramm umzuschalten. Viele Mikroprozessoren, wie zum Beispiel die 80 · 86-Mikroprozessoren, bieten einen bequemen Mechanismus zum Umschalten des Mikroprozessors in den Einzelschrittmodus. Bei den 80 · 86- Mikroprozessoren ist ein Einzelschritt-Trapflag im Register FLAGS vorgesehen (siehe Fig. 2). Wenn das Einzelschritt-Trapflag auf Eins gesetzt ist, arbeitet der Prozessor im Einzelschrittmodus; umgekehrt arbeitet der Prozessor nicht im Einzelschrittmodus, wenn das Einzelschritt-Trapflag auf Null gesetzt ist.
  • Ein Haltepunkt bezieht sich auf einen Haltepunkt-Interrupt, der verwendet wird, um die ungehinderte Ausführung eines Programms zu unterbrechen, und der für Debugging- und Leistungsüberwachungsprogramme von Nutzen ist. Die Schwierigkeit bei der Ausführung eines vollständigen Programms im Einzelschrittmodus besteht darin, daß sie sehr langsam erfolgt. In vielen Fällen kann der größte Teil eines Programms bereits von Programmfehlern befreit oder getunt sein, während nur ein kleiner Abschnitt davon ausführlicher geprüft werden soll. Unter derartigen Umständen ist ein Haltepunkt-Interrupt besonders sinnvoll. Ein Haltepunkt-Interrupt wird erzeugt, indem ein spezieller Betriebscode in das Programm eingefügt wird. Bei seiner Ausführung bewirkt dieser Betriebscode das Setzen eines Haltepunkt-Interrupts. Beim Setzen des Haltepunkt-Interrupts wird die Kontrolle an die Haltepunkteinrichtung 34 übergeben, die dann weitere Handlungen nach Bedarf ausführen kann. Die Rolle von Haltepunkten und Einzelschrittinterrupts in der bevorzugten Ausführungsform der vorliegenden Erfindung wird unten bei, der Behandlung der Fig. 4 und 5 ausführlicher beschrieben.
  • Neben der Haltepunkteinrichtung 34 und dem Einzelschritthandler 16 weist der Codeabschnitt 32 weiterhin einen Code auf, der sich auf die Kontextumschaltung 38 bezieht. Dieser Code 38 schafft einen Auslöser für Kontextumschaltungen und weist einen Handler auf, der den Kontextschalter prüft und bestimmt, ob der neue Kontext in Einzelschritten abgearbeitet werden soll oder nicht. Soll der neue Kontext in Einzelschritten abgearbeitet werden, so stellt der Handler sicher, daß in Einzelschritten vorgegangen wird.
  • Der Codeabschnitt 32 weist weiterhin Zählerwerte 40 auf. Wie oben dargelegt, bietet die bevorzugte erfindungsgemäße Ausführungsform dem Benutzer die Gelegenheit, die Anzahl der in der Funktion ausgeführten Befehle, die Anzahl der Aufrufe der Funktion innerhalb eines Programms und die Anzahl der bei jeder Funktion ausgeführten Befehle zu überwachen, die im Ergebnis des Aufrufs einer Anfangsfunktion aufgerufen wird. Jeder dieser Zählwerte wird in einem separaten Zähler gespeichert, und die Werte der Zähler werden als Zählerwerte 40 im Datenbereich des Codeabschnitts 32 gehalten.
  • Fig. 4 ist ein Flußdiagramm der Schritte, die zur Überwachung der Leistung eines Programms oder eines Programmabschnittes in der bevorzugten erfindungsgemäßen Ausführungsform ausgeführt werden. Zunächst wählt der Benutzer ein Leistungsmaß (Schritt 42). Eine Benutzerschnittstelle, zum Beispiel ein Menü in einer Dialogbox, wird auf der Bildschirmanzeige 22 (Fig. 2) des vom Benutzer verwendeten Rechnersystems 12 (Fig. 1) angezeigt, um es dem Benutzer zu ermöglichen, das gewünschte Leistungsmaß auszuwählen. Wie oben dargelegt, gibt es eine Reihe verschiedener Leistungsmaße, die von der bevorzugten Ausführungsform der vorliegenden Erfindung berechnet werden können. Der Benutzer wählt weiterhin, welche Funktionen im Programm überwacht werden sollen (Schritt 44). Nach der Auswahl des Leistungsmaßes und der zu überwachenden Funktionen werden die Betriebscodes für die Erzeugung von Haltepunkt-Interrupts in jede der zu überwachenden Funktionen eingefügt, und das Programm oder der Programmabschnitt wird ausgeführt (Schritt 46). Die entsprechenden Zählerwerte 40 werden während des Ablaufs des Programms berechnet. Die Zählerwerte 40 werden während der Programmausführung auf der Bildschirmanzeige 22 angezeigt (Schritt 48 in Fig. 4). Wenn die Ausführung des Programms oder des Programmabschnittes abgeschlossen ist, kann der Benutzer die Leistungsdaten prüfen und als Richtschnur für das von ihm vorzunehmende geeignete Tunen des Programms verwenden (Schritt 50). Wie die Daten zum Tunen des Programms verwendet werden, ist von der Art der erfaßten Daten abhängig. Dem Fachmann wird klar sein, wie er die Leistungsmeßdaten beim angemessenen Tunen des Programms verwendet.
  • Fig. 5 ist ein Flußdiagramm, das für die einzelnen Funktionen die Schritte detaillierter zeigt, die beim Einfügen eines Haltepunktes und bei der Programmausführung (d. h. Schritt 46 in Fig. 4) vorzunehmen sind. Wie oben erwähnt, wird ein Haltepunkt- Betriebscode am ersten Befehl jeder der zu überwachenden Funktionen eingefügt (Schritt 52 in Fig. 5). Dann beginnt das System mit der Funktionsausführung (Schritt 54). Da der Haltepunkt nun der erste Befehl in der Funktion ist, erfaßt das Kernel den Haltepunkt (Schritt 56) und stellt dann fest, welches Leistungsmaß der Benutzer für die Funktion gewünscht hat (Schritt 58). Wenn das einzige gewünschte Leistungsmaß eine Zählung der Anzahl der aufrufe der Funktion ist, wird ein Zähler in den Zählerwerten 40 (Fig. 3), der die Anzahl von Aufrufen der Funktion verfolgt, erhöht, um anzuzeigen, daß die Funktion aufgerufen wurde (Schritt 60). Nach der Erhöhung des Zählers wird die Funktion erneut gestartet und nimmt die Ausführung in voller Geschwindigkeit wieder auf.
  • Vor der Betrachtung der Schritte, die bei der bevorzugten erfindungsgemäßen Ausführungsform auszuführen sind, wenn der Benutzer die Anzahl der ausgeführten Befehle überwachen will, ist es zunächst hilfreich, die Begriffe "Thread" und "Stapel" zu erläutern. Ein Thread stellt einen ausführbaren Abschnitt einer Aufgabe dar, die selbständig und zeitgleich mit anderen Threads ausgeführt werden kann. Das Betriebssystem 28 ist ein Multithread-System. Natürlich liegt es für den Fachmann auf der Hand, daß die vorliegende Erfindung nicht unbedingt in einem Multithread- System verwendet werden muß. Sie kann ebenso in Einzelprozessor- und Multiprozessorsystemen zum Einsatz kommen. Ein Multithread-Betriebssystem ist in der Lage, mehrere Threads gleichzeitig abzuarbeiten. Der Stapel ist eine Last-in-first-out- (LIFO)-Datenstruktur und wird verwendet, um Daten zu halten und Informationen für den Thread zu registrieren. Jedem Thread ist ein Abschnitt des Stapelsegmentes zugeordnet. Das SS-(Stapelsegment)-Register (Fig. 2) zeigt auf einen Speicherabschnitt, der Stapel für die Threads des ausgeführten Programms enthält. Jeder Thread besitzt einen ihm zugeordneten Stapelzeiger-(SP)-Wert, der auf den obersten Wert des Stapels (d. h. auf den Abschnitt des dem Thread zugeordneten Stapelsegmentes) zeigt. Fachleuten ist natürlich klar, daß die vorliegende Erfindung auch in Umgebungen verwendet werden kann, die keine Stapel verwenden.
  • Wenn in Schritt 58 der Fig. 5 festgestellt wird, daß der Benutzer eine Anzahl ausgeführter Befehle und nicht die Anzahl von Funktionsaufrufen zählen möchte, wird der Wert des Stapelzeigers für den derzeit ausgeführten Thread im Speicher 16 gespeichert (Schritt 64). Das Einzelschritt-Trapflag im Register FLAGS (Fig. 2) wird dann so gesetzt, daß die CPU 13 veranlaßt wird, in den Einzelschrittmodus einzutreten (Schritt 66). Im Einzelschrittmodus wird jedesmal, wenn ein Befehl ausgeführt wird, der Zählerwert, der die Anzahl ausgeführter Befehle in der derzeitigen Funktion verfolgt, um eins erhöht (Schritt 68). Die Befehle werden gezählt, bis der Thread die überwachte Funktion verläßt oder endet. Die Befehlszählung kann auch angehalten werden, wenn ein Thread selbst den Plan verläßt, doch wird die Befehlszählung wieder aufgenommen, wenn der Thread in den Plan zurückkehrt.
  • Zwar wurde die vorliegende Erfindung anhand einer bevorzugten Ausführungsform beschrieben, doch Fachleuten ist klar, daß verschiedene Änderungen in Form und Detail vorgenommen werden können, ohne von der in den beigefügten Ansprüchen definierten vorliegenden Erfindung abzuweichen.

Claims (19)

1. Verfahren, das auf einem Datenverarbeitungssystem implementiert werden kann, welches einen Prozessor zum Ausführen eines durch einen Computer ausführbaren Codes und einen Speichermechanismus (16) zum Speichern eines Betriebssystems (28) mit einem Kernel (30) umfaßt, wobei das Verfahren durch folgende Schritte gekennzeichnet ist:
Vorsehen einer Einrichtung (32) im Kernel des Betriebssystems zum Zählen der Anzahl der ausgewählten Codeabschnitte, die durch den Prozessor ausgeführt werden, und Vorsehen eines Überwachungsprogramms auf der Benutzerebene zum Überwachen der Zählung der ausgeführten ausgewählten Codeabschnitte,
Verwenden der Einrichtung (32) im Kernel des Betriebssystems (28), um die Anzahl der ausgewählten Codeabschnitte zu zählen, die während der Ausführung des Codes (26) im Prozessor ausgeführt werden, und
Berichten der Zählung der ausgeführten ausgewählten Codeabschnitte an das Überwachungsprogramm auf der Benutzerebene.
2. Verfahren nach Anspruch 1, wobei die ausgewählten Codeabschnitte einzelne Befehle im Code enthalten, so daß die Einrichtung (32) im Kernel zählt, wie oft die einzelnen Befehle ausgeführt werden, wenn eine Funktion im Code aufgerufen wird (68).
3. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte wenigstens einen Teil einer Funktion im Code umfassen, so daß die Einrichtung im Kernel zählt, wie oft die Funktion aufgerufen wird.
4. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte einzelne Befehle in einer Vielzahl von Funktionen im Code enthalten, so daß die Einrichtung im Kernel zählt, wie oft die einzelnen Befehle in jeder aus der Vielzahl von Funktionen ausgeführt werden, wenn die Vielzahl von Funktionen als Ergebnis der Ausführung einer Anfangsfunktion aufgerufen werden.
5. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei der Code im Prozessor ausgeführt wird, ohne daß der Code neu compiliert wird, um den Code für die Profilierung aufzubereiten.
6. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei der im Prozessor ausgeführte Code durchgeführt wird, ohne daß eine mit dem Code assoziierte Wortgröße vergrößert wird.
7. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei der durch den Prozessor ausgeführte Code ein Teil des Kernels des Betriebssystems ist.
8. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei der durch den Prozessor ausgeführte Code sin nicht zum Kernel des Betriebssystems gehörender Abschnitt ist.
9. Verfahren nach wenigstens einem der vorstehenden Ansprüche, wobei der durch den Prozessor ausgeführte Code ein Programm auf der Benutzerebene ist.
10. Verfähren nach wenigstens einem der vorstehenden Ansprüche, welches weiterhin einen Schritt zum Anpassen des im Prozessor ausgeführten Codes umfaßt, um die Anzahl der Befehle zu reduzieren, welche ausgeführt werden, wenn der Code wieder im Prozessor ausgeführt wird.
11. System zum Messen der Leistung eines überwachten Programms, welches einen durch einen Computer ausführbaren Code umfaßt, wobei das System einen Speichermechanismus (16) zum Speichern eines Überwachungsprogramms auf der Benutzerebene und eines Betriebssystems (28) mit einem Kernel sowie einen Prozessor mit einer Programmausführungseinheit zum Ausführen des überwachten Programms und des Überwachungsprogramms auf der Benutzerebene umfaßt, und wobei das System dadurch gekennzeichnet ist, daß
der Kernel (30) eine Zählereinrichtung (32) zum Zählen der Anzahl von ausgewählten Abschnitten des überwachten Programms, welche ausgeführt werden, umfaßt, und daß der Prozessor umfaßt:
eine Einrichtung zum Aufrufen der Zählereinrichtung, so daß die Anzahl der ausgewählten Codeabschnitte des überwachten Programms gezählt wird, welche ausgeführt werden, während wenigstens ein Teil des überwachten Programms im Prozessor ausgeführt wird, und
einen Zählungsberichter, welcher die durch die Zählereinrichtung gemachten Zählungen an das Überwachungsprogramm auf der Benutzerebene berichtet.
12. System nach Anspruch 11, wobei die ausgewählten Codeabschnitte einzelne Befehle in dem überwachten Programm enthalten, so daß die Einrichtung im Kernel zählen kann, wie oft die einzelnen Befehle ausgeführt werden, wenn eine Funkton in dem überwachten Programm aufgerufen wird.
13. System nach Anspruch 12, wobei die ausge wählten Codeabschnitte wenigstens einen Teil einer Funktion in den überwachten Programm enthalten, so daß die Einrichtung (32) im Kernel (30) zählen kann, wie oft die Funktion aufgerufen wird.
14. System nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte einzelne Befehle in einer Vielzahl von Funktionen in dem überwachten Programm enthalten, so daß die Einrichtung im Kernel zählen kann, wie oft die einzelnen Befehle in jeder aus der Vielzahl von Funktionen ausgeführt werden, wenn die Vielzahl von Funktionen als Ergebnis der Ausführung einer Anfangsfunktion aufgerufen werden.
15. System nach wenigstens einem der vorstehenden Ansprüche, wobei der durch einen Computer ausführbare Code des überwachten Programms nicht für die Profilierung aufbereitet wird.
16. System nach wenigstens einem der vorstehenden Ansprüche, wobei eine mit dem durch einen Computer ausführbaren Code des überwachten Programms assoziierte Wortgröße nicht mit Bezug auf die Wortgröße des durch einen Computer ausführbaren Codes vergrößert wird, wenn das überwachte Programm auf anderen Systemen ausgeführt wird.
17. System nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte im Kernel des Betriebssystems enthalten sind.
18. System nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte in einem nicht zum Kernel des Betriebssystems gehörenden Abschnitt enthalten sind.
19. System nach wenigstens einem der vorstehenden Ansprüche, wobei die ausgewählten Codeabschnitte in einem Programm auf der Benutzerebene enthalten sind.
DE69422476T 1993-11-04 1994-11-03 Betriebssystembasierte Programmleistungsüberwachung Expired - Lifetime DE69422476T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/147,645 US5485574A (en) 1993-11-04 1993-11-04 Operating system based performance monitoring of programs

Publications (2)

Publication Number Publication Date
DE69422476D1 DE69422476D1 (de) 2000-02-10
DE69422476T2 true DE69422476T2 (de) 2000-05-31

Family

ID=22522352

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69422476T Expired - Lifetime DE69422476T2 (de) 1993-11-04 1994-11-03 Betriebssystembasierte Programmleistungsüberwachung

Country Status (5)

Country Link
US (1) US5485574A (de)
EP (1) EP0652518B1 (de)
JP (1) JP4034363B2 (de)
CA (1) CA2134060C (de)
DE (1) DE69422476T2 (de)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263488B1 (en) * 1993-12-03 2001-07-17 International Business Machines Corporation System and method for enabling software monitoring in a computer system
JP3366475B2 (ja) * 1994-04-12 2003-01-14 三菱電機株式会社 データ処理速度の評価方法
US6026236A (en) * 1995-03-08 2000-02-15 International Business Machines Corporation System and method for enabling software monitoring in a computer system
WO1996036918A1 (en) * 1995-05-19 1996-11-21 At & T Ipm Corp. Method for monitoring a digital multiprocessor
US5875294A (en) 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5887167A (en) * 1995-11-03 1999-03-23 Apple Computer, Inc. Synchronization mechanism for providing multiple readers and writers access to performance information of an extensible computer system
US5920719A (en) * 1995-11-06 1999-07-06 Apple Computer, Inc. Extensible performance statistics and tracing registration architecture
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5799143A (en) * 1996-08-26 1998-08-25 Motorola, Inc. Multiple context software analysis
US5878208A (en) * 1996-11-25 1999-03-02 International Business Machines Corporation Method and system for instruction trace reconstruction utilizing limited output pins and bus monitoring
US5884080A (en) * 1996-11-26 1999-03-16 International Business Machines Corporation System and method for instruction burst performance profiling for single-processor and multi-processor systems
US5970439A (en) * 1997-03-13 1999-10-19 International Business Machines Corporation Performance monitoring in a data processing system
US5872976A (en) * 1997-04-01 1999-02-16 Landmark Systems Corporation Client-based system for monitoring the performance of application programs
US5944841A (en) * 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6134594A (en) 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6148396A (en) * 1997-11-26 2000-11-14 Compaq Computer Corporation Apparatus for sampling path history in a processor pipeline
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US5964867A (en) * 1997-11-26 1999-10-12 Digital Equipment Corporation Method for inserting memory prefetch operations based on measured latencies in a program optimizer
US5923872A (en) * 1997-11-26 1999-07-13 Digital Equipment Corporation Apparatus for sampling instruction operand or result values in a processor pipeline
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US6092180A (en) * 1997-11-26 2000-07-18 Digital Equipment Corporation Method for measuring latencies by randomly selected sampling of the instructions while the instruction are executed
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6070009A (en) * 1997-11-26 2000-05-30 Digital Equipment Corporation Method for estimating execution rates of program execution paths
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6119075A (en) * 1997-11-26 2000-09-12 Digital Equipment Corporation Method for estimating statistics of properties of interactions processed by a processor pipeline
US5809450A (en) * 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline
US6332178B1 (en) 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6047390A (en) * 1997-12-22 2000-04-04 Motorola, Inc. Multiple context software analysis
US6199199B1 (en) * 1998-09-16 2001-03-06 International Business Machines Corporation Presentation of visual program performance data
US20020059544A1 (en) * 1999-02-04 2002-05-16 Boucher Michael L. Methods and systems for determining and displaying activities of concurrent processes
US6434714B1 (en) * 1999-02-04 2002-08-13 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for analyzing performance of application programs
GB2348718A (en) * 1999-04-07 2000-10-11 Ibm Data processing system having a centralised trace facility with dynamic tracing
US6961749B1 (en) 1999-08-25 2005-11-01 Network Appliance, Inc. Scalable file server with highly available pairs
US6557167B1 (en) * 1999-09-03 2003-04-29 International Business Machines Corporation Apparatus and method for analyzing performance of a computer program
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6961930B1 (en) 1999-09-22 2005-11-01 Hewlett-Packard Development Company, L.P. Efficient, transparent and flexible latency sampling
US6542985B1 (en) * 1999-09-23 2003-04-01 Unisys Corporation Event counter
US7020621B1 (en) 1999-10-06 2006-03-28 Accenture Llp Method for determining total cost of ownership
WO2001026010A1 (en) * 1999-10-06 2001-04-12 Accenture Llp Method and estimator for production scheduling
US6675374B2 (en) 1999-10-12 2004-01-06 Hewlett-Packard Development Company, L.P. Insertion of prefetch instructions into computer program code
US6978303B1 (en) * 1999-10-26 2005-12-20 Iontal Limited Monitoring of computer usage
US6883120B1 (en) * 1999-12-03 2005-04-19 Network Appliance, Inc. Computer assisted automatic error detection and diagnosis of file servers
US6658557B1 (en) 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6792392B1 (en) * 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US7389497B1 (en) * 2000-07-06 2008-06-17 International Business Machines Corporation Method and system for tracing profiling information using per thread metric variables with reused kernel threads
US6658654B1 (en) 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US6735758B1 (en) 2000-07-06 2004-05-11 International Business Machines Corporation Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
US6904594B1 (en) 2000-07-06 2005-06-07 International Business Machines Corporation Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US6742178B1 (en) 2000-07-20 2004-05-25 International Business Machines Corporation System and method for instrumenting application class files with correlation information to the instrumentation
US6662359B1 (en) 2000-07-20 2003-12-09 International Business Machines Corporation System and method for injecting hooks into Java classes to handle exception and finalization processing
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
US7120879B2 (en) 2001-04-20 2006-10-10 Peter Pius Gutberlet Hierarchical presentation techniques for a design tool
US7509485B2 (en) * 2002-09-04 2009-03-24 Chou Hui-Ling Method for loading a program module in an operating system
US7353501B2 (en) * 2002-11-18 2008-04-01 Microsoft Corporation Generic wrapper scheme
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7849465B2 (en) 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
US7900092B2 (en) * 2003-07-11 2011-03-01 Computer Associates Think, Inc. Kernel-level method of flagging problems in applications
US20050193375A1 (en) * 2004-02-27 2005-09-01 Larson Matthew D. Software monitoring system for the polling of processes to determine the presently executing function
US7822662B2 (en) * 2004-03-29 2010-10-26 Microsoft Corporation Key performance indicator system and method
US20060025984A1 (en) * 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US20060048011A1 (en) * 2004-08-26 2006-03-02 International Business Machines Corporation Performance profiling of microprocessor systems using debug hardware and performance monitor
US7383470B2 (en) * 2004-09-30 2008-06-03 Microsoft Corporation Method, system, and apparatus for identifying unresponsive portions of a computer program
US20060070077A1 (en) * 2004-09-30 2006-03-30 Microsoft Corporation Providing custom product support for a software program
US8161461B2 (en) * 2005-03-24 2012-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for evaluating code usage
US20060224925A1 (en) * 2005-04-05 2006-10-05 International Business Machines Corporation Method and system for analyzing an application
US20070074224A1 (en) * 2005-09-28 2007-03-29 Mediatek Inc. Kernel based profiling systems and methods
US20070079177A1 (en) * 2005-09-30 2007-04-05 Charles Spirakis Process monitoring and diagnosis apparatus, systems, and methods
JP5431633B2 (ja) * 2006-03-17 2014-03-05 富士通セミコンダクター株式会社 性能チューニングプログラム、該プログラムを記録した記録媒体、性能チューニング装置、および性能チューニング方法
JP2008276683A (ja) * 2007-05-07 2008-11-13 Nec Electronics Corp 試験装置
US7552396B1 (en) * 2008-04-04 2009-06-23 International Business Machines Corporation Associating screen position with audio location to detect changes to the performance of an application
US8713535B2 (en) * 2008-06-30 2014-04-29 Microsoft Corporation Reliable and accurate usage detection of a software application
CN101650787A (zh) * 2008-08-13 2010-02-17 鸿富锦精密工业(深圳)有限公司 仿生老化系统及其老化方法
US8140832B2 (en) * 2009-01-23 2012-03-20 International Business Machines Corporation Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
JP5463699B2 (ja) * 2009-03-12 2014-04-09 富士通株式会社 並列処理支援プログラム、並列処理支援装置および並列処理支援方法
US8572357B2 (en) 2009-09-29 2013-10-29 International Business Machines Corporation Monitoring events and incrementing counters associated therewith absent taking an interrupt
JP2011100388A (ja) * 2009-11-09 2011-05-19 Fujitsu Ltd トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
US8571834B2 (en) 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
US8286192B2 (en) * 2009-12-04 2012-10-09 Red Hat, Inc. Kernel subsystem for handling performance counters and events
US9665461B2 (en) * 2009-12-04 2017-05-30 Red Hat, Inc. Obtaining application performance data for different performance events via a unified channel
US8935703B2 (en) * 2009-12-11 2015-01-13 Red Hat, Inc. Performance counter inheritance
US8954996B2 (en) * 2009-12-11 2015-02-10 Red Hat, Inc. Profiling the system providing performance statistics in real time
US8171340B2 (en) * 2009-12-11 2012-05-01 Red Hat, Inc. Software performance counters
US9389936B2 (en) 2011-09-23 2016-07-12 Microsoft Technology Licensing, Llc. Monitoring the responsiveness of a user interface
US8538792B1 (en) * 2012-04-26 2013-09-17 Jpmorgan Chase Bank, N.A. Method and system for determining total cost of ownership
CN109144844B (zh) 2017-06-27 2023-01-31 阿里巴巴集团控股有限公司 追踪方法、装置、设备和机器可读介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4845615A (en) * 1984-04-30 1989-07-04 Hewlett-Packard Company Software performance analyzer
US5103394A (en) * 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US5047919A (en) * 1986-04-03 1991-09-10 Harris Corporation Method and apparatus for monitoring software execution in a parallel multiprocessor computer system
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
GB2258063B (en) * 1991-07-26 1995-07-05 Research Machines Plc Monitoring execution of a computer program to provide profile analysis

Also Published As

Publication number Publication date
EP0652518B1 (de) 2000-01-05
DE69422476D1 (de) 2000-02-10
CA2134060C (en) 2001-01-02
JP4034363B2 (ja) 2008-01-16
EP0652518A1 (de) 1995-05-10
US5485574A (en) 1996-01-16
JPH07182209A (ja) 1995-07-21
CA2134060A1 (en) 1995-05-05

Similar Documents

Publication Publication Date Title
DE69422476T2 (de) Betriebssystembasierte Programmleistungsüberwachung
DE69029983T2 (de) Leistungsverbesserungsgerät für auf Regeln beruhendes Expertensystem
DE4011745C2 (de)
DE4332993C1 (de) Tracer-System zur Fehleranalyse in laufenden Realzeitsystemen
DE69614645T2 (de) System und Verfahren zum Profilieren von Code für eine symmetrische Multiprozessorarchitektur
DE3854546T2 (de) Verfahren und Gerät zur Programmablaufmessung.
DE69604347T2 (de) Bestimmung der dynamischen Eigenschaften von Programmen
DE69317982T2 (de) Verfahren und Anlage zur Realzeitdatensammlung und Anzeigevorrichtung
DE10050684A1 (de) Verfahren und System zur periodischen Ablaufverfolgung für die Echtzeitgenerierung von Segmenten von Aufrufstack-Bäumen
DE3751284T2 (de) Verfahren für die Abschätzung der Leistung eines Datenprozessorsystems.
DE3687842T2 (de) Verfahren und Gerät zum Software-Austesten.
DE69031538T2 (de) System und Verfahren zur Sammlung von Softwareanwendungsereignissen
DE69811832T2 (de) Verfahren zur Schätzung von Statistiken der Eigenschaften von durch eine Prozessorpipeline bearbeiteten Wechselwirkungen
DE69703329T2 (de) Verfahren und Anordnung zur Änderung von Ergebnissen einer Computerprogrammausführungsfolge
CH654943A5 (de) Pruefeinrichtung fuer mikroprogramme.
EP0228480A1 (de) Verfahren und Einrichtung zur Analyse von Steuerprogrammen
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
EP2962205B1 (de) Mehrkern-prozessorsystem mit fehleranalysefunktion
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
DE69128908T2 (de) Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner
WO2002006949A2 (de) Verfahren und vorrichtung zur messung der laufzeit einer task in einem echtzeitsystem
WO2015086357A1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE102013000857A1 (de) Kompakte Funktionsablaufprotokollierung
DE112011100168B4 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE60010847T2 (de) Verfahren zur Fehlerbeseitigung in einem Thread-Programm

Legal Events

Date Code Title Description
8364 No opposition during term of opposition