DE112012000245T5 - Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung - Google Patents

Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung Download PDF

Info

Publication number
DE112012000245T5
DE112012000245T5 DE112012000245T DE112012000245T DE112012000245T5 DE 112012000245 T5 DE112012000245 T5 DE 112012000245T5 DE 112012000245 T DE112012000245 T DE 112012000245T DE 112012000245 T DE112012000245 T DE 112012000245T DE 112012000245 T5 DE112012000245 T5 DE 112012000245T5
Authority
DE
Germany
Prior art keywords
software
processor
thread
indication
inactive
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.)
Pending
Application number
DE112012000245T
Other languages
English (en)
Inventor
Frank Eliot Levine
David Kevin Siegwart
Enio Manuel Pineda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012000245T5 publication Critical patent/DE112012000245T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/3404Recording 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 for parallel or distributed programming
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • G06F11/3423Recording 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 for performance assessment by assessing time where the assessed time is active or idle time
    • 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
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

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

Abstract

Ein Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung, die Software-Threads in einem Computersystem ausführt, wobei das Aktivitätsaufzeichnungssystem aufweist: einen Thread-Zustandsanzeiger zum Aufzeichnen einer Anzeige eines Synchronisierungszustandes eines Software-Thread, in dem der Software-Thread aufhört, in einem Prozessor des Computersystems ausgeführt zu werden, wobei die Anzeige einer Kennzeichnung des Software-Thread zugeordnet ist; einen Zeit-Profiler zum Erkennen, dass ein Prozessor des Computersystems inaktiv ist, und Aufzeichnen einer Anzeige, dass der Prozessor inaktiv ist; einen Zuteilungsüberwacher zum Erkennen der Zuteilung des Software-Thread zum Prozessor und als Reaktion auf die Anzeige, dass der Prozessor inaktiv ist, und die Anzeige des Synchronisierungszustands des Software-Thread Erzeugen eines Datensatzes, der die Inaktivität des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Aufzeichnen von Aktivitäten für eine parallele Softwareumgebung. Insbesondere betrifft sie das Aufzeichnen von Informationen bezüglich des Synchronisierungszustandes von Threads in einer parallelen Softwareumgebung.
  • HINTERGRUND DER ERFINDUNG
  • Parallele Softwareumgebungen, die Software-Threads in einem Computersystem ausführen, verwenden einen oder mehrere Synchronisierungsmechanismen, um gesteuerten Zugriff auf gemeinsam genutzte Ressourcen sicherzustellen und die gleichzeitige Verwendung gemeinsam genutzter Ressourcen zu vermeiden. Zum Beispiel können in einer parallelen Softwareumgebung ausgeführte Softwareverfahren mittels eines Algorithmus wechselseitigen Ausschlusses (mutual exclusion (mutex)), einer Softwaresperre, eines Synchronisierungsüberwachers, Semaphoren oder anderen im Stand der Technik bekannten Synchronisierungsmechanismen synchronisiert werden.
  • Eine hohe Skalierbarkeit von in parallelen Softwareumgebungen wie beispielsweise Java (Java ist eine Marke der Oracle Corporation) ausgeführten Mehr-Thread-Anwendungen hängt von guten Werkzeugen zum Auffinden von Bereichen des Softwarecodes ab, die Möglichkeiten bieten, die Skalierbarkeit durch Verringern oder Beseitigen von Problemen zu verbessern, die sich als Konflikte beim Zugreifen auf synchronisierte gemeinsam genutzte Ressourcen äußern. Das Erkennen solcher Bereiche von Softwarecodes wird durch Einrichtungen zum Messen des Auftretens von Synchronisierungsereignissen unterstützt, wie beispielsweise von Konflikten zwischen Software-Threads, die Ressourcen gemeinsam nutzen.
  • Das Instrumentalisieren von Softwarecode für das Messen von Synchronisierungsereignissen ist jedoch mit Schwierigkeiten verbunden. Ein Konflikt ist sehr anfällig für Werkzeugaufwand, da die bloße Ausführung des Überwachungs- und Messwerkzeugs die Synchronisierungsdynamik von in einer parallelen Softwareumgebung ausgeführten Software beeinflusst.
  • Aktuelle Werkzeuge wie beispielsweise der „Java Lock Monitor" (JLM) (siehe perfinsp.sourceforge.net/jlm.html) oder das „IBM Monitoring and Diagnostic Tools for Java – Health Centre" (siehe publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jsp) stellen ein Überwachen und Aufzeichnen von Konfliktereignissen in der Java-Umgebung auf der Grundlage synchronisierter Ressourcen bereit. Diese Werkzeuge sind jedoch nicht in der Lage, Informationen zum Zustand eines Software-Thread zum Zeitpunkt des Konflikts bereitzustellen, wie beispielsweise das spezielle Softwareverfahren, das den Konflikt erfährt. Das Verwenden solcher Werkzeuge ist somit nicht zielführend, um zu ermitteln, welche Softwareverfahren in einer Anwendung für das Auftreten von Konflikten verantwortlich sind.
  • Weiterhin ist es schwierig, Werkzeuge zu entwickeln und zu pflegen, die eine Zeitdauer messen, während derer sich ein Softwareverfahren in einem Software-Thread in einem bestimmten Synchronisierungszustand, wie beispielsweise dem Konfliktzustand, befindet. Aufgrund der Natur der parallelen Softwareumgebung erfordert die Eigenschaft von Software-Threads, als Teil des Synchronisierungsmechanismus unterbrochen und wieder aufgenommen zu werden, eine komplexe Messlogik, um eine geeignete Zuweisung von Zeitperioden zu bestimmten Synchronisierungszuständen, bestimmten Softwareverfahren und bestimmten Software-Threads zu ermitteln.
  • Es wäre daher vorteilhaft, Aktivitäten von Threads in einer parallelen Softwareumgebung aufzuzeichnen, um Unterstützung für eine Analyse des Synchronisierungsverhaltens zu bieten, um die Skalierbarkeit paralleler Software zu verbessern.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt dementsprechend in einem ersten Aspekt ein Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung bereit, die Software-Threads in einem Computersystem ausführt, wobei das Aktivitätsaufzeichnungssystem aufweist: einen Thread-Zustandsanzeiger zum Aufzeichnen einer Anzeige eines Synchronisierungszustandes eines Software-Thread, in dem der Software-Thread aufhört, auf einem Prozessor des Computersystems ausgeführt zu werden, wobei die Anzeige einer Kennzeichnung des Software-Thread zugeordnet ist; ein Zeit-Profiler zum Erkennen, dass ein Prozessor des Computersystems inaktiv ist, und Aufzeichnen einer Anzeige, dass der Prozessor inaktiv ist; ein Zuteilungsüberwacher zum Erkennen der Zuteilung des Software-Thread zum Prozessor und als Reaktion auf die Anzeige, dass der Prozessor inaktiv ist und die Anzeige eines Synchronisierungszustands des Software-Thread Erzeugen eines Datensatzes, der die Inaktivität des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.
  • Vorzugsweise ist der Zeit-Profiler weiterhin in der Lage, eine inaktive Periode für den Prozessor als eine Periode zu erkennen, während derer der Prozessor kontinuierlich inaktiv ist, und der Datensatz, der die Inaktivität zuschreibt, schreibt die inaktive Periode des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zu.
  • Vorzugsweise wird festgestellt, dass der Prozessor inaktiv ist, indem festgestellt wird, dass dem Prozessor kein darauf auszuführender Software-Thread zugeteilt ist.
  • Vorzugsweise weist das Aktivitätsaufzeichnungssystem weiterhin auf: eine Berechnungskomponente zum Berechnen eines Zeitanteils, für den sich der Thread in einem angegebenen Zustand befunden hat.
  • Vorzugsweise ist der Thread-Zustandsanzeiger in der Lage aufzuzeichnen: eine Anzeige eines „blockierten” Zustands des Software-Thread, in dem der Software-Thread davon abgehalten wird, ein ausschließendes Konstrukt zum Erreichen der Synchronisierung in der parallelen Softwareumgebung anzufordern; eine Anzeige eines „Warte”-Zustands des Software-Thread, in dem der Software-Thread auf eine durch einen anderen Software-Thread vorzunehmende Verarbeitung wartet; eine Anzeige eines „ausführbaren” Zustands des Software-Thread, in dem der Software-Thread zur Ausführung auf einem Prozessor des Computersystems bereit ist; und eine Anzeige eines nicht synchronisierten Zustands eines Software-Thread.
  • Vorzugsweise enthält die Anzeige eines Synchronisierungszustands eines Software-Thread weiterhin eine Kennung einer gemeinsam genutzten Ressource, auf die der Software-Thread Zugriff sucht.
  • Vorzugsweise weist das Aktivitätsaufzeichnungssystem weiterhin auf: einen Auflöser zum Ermitteln eines symbolischen Namens, welcher der Kennung einer gemeinsam genutzten Ressource zugeordnet ist.
  • Vorzugsweise ist der Zeit-Profiler weiterhin eingerichtet, festzustellen, dass die Softwareroutine in einer Dienstbibliothek von Routinen der Softwareumgebung enthalten ist, und als Reaktion auf die Feststellung eine aufrufende Routine für die Softwareroutine zu erkennen.
  • Vorzugsweise erkennt der Zeit-Profiler die aufrufende Routine mithilfe eines oder mehrerer von: dem Auflöser; und einem Softwareaufrufstapel.
  • Vorzugsweise wird der Synchronisierungszustand des Software-Thread ermittelt durch eines oder mehrere von: dem Software-Thread selbst; und der parallelen Softwareumgebung.
  • Vorzugsweise handelt es sich bei dem ausschließenden Konstrukt um eines von: einer Sperre; und einem Überwacher.
  • Vorzugsweise handelt es sich bei der gemeinsam genutzten Ressource um ein Softwareobjekt.
  • Vorzugsweise ist der Zeit-Profiler weiterhin in der Lage, Werte eines Programmzählers für den Prozessor des Computersystems in regelmäßigen Intervallen abzufragen, und der Zeit-Profiler erkennt die inaktive Periode durch Zählen einer Anzahl regelmäßiger Intervalle, während derer der Prozessor inaktiv ist.
  • Vorzugsweise enthält die Anzeige, dass der Prozessor inaktiv ist, die Zählung von regelmäßigen Intervallen, während derer der Prozessor inaktiv ist.
  • Die vorliegende Erfindung stellt dementsprechend in einem zweiten Aspekt ein Verfahren zum Aufzeichnen von Aktivitäten für eine parallele Softwareumgebung bereit, die Software-Threads in einem Computersystem ausführt, wobei das Verfahren die Schritte aufweist: ein Thread-Zustandsanzeiger zeichnet eine Anzeige eines Synchronisierungszustandes eines Software-Thread auf, in dem der Software-Thread aufhört, auf einem Prozessor des Computersystems ausgeführt zu werden, wobei die Anzeige einer Kennzeichnung des Software-Thread zugeordnet ist; ein Zeit-Profiler erkennt, dass ein Prozessor des Computersystems inaktiv ist, und zeichnet eine Anzeige auf, dass der Prozessor inaktiv ist, wobei ein Zuteilungsüberwacher die Zuteilung des Software-Thread zum Prozessor erkennt; und als Reaktion auf die Anzeige, dass der Prozessor inaktiv ist und die Anzeige des Synchronisierungszustands des Software-Thread, erzeugt der Zuteilungsüberwacher einen Datensatz, der die Inaktivität des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.
  • Dementsprechend stellt die vorliegende Erfindung in einem dritten Aspekt eine Vorrichtung bereit, aufweisend: eine Zentraleinheit; ein Speicher-Teilsystem; ein Eingabe/Ausgabe-Teilsystem; und ein Bus-Teilsystem, das die Zentraleinheit, das Speicher-Teilsystem, das Eingabe/Ausgabe-Teilsystem und die Vorrichtung wie vorstehend beschrieben miteinander verbindet.
  • Dementsprechend stellt die vorliegende Erfindung in einem vierten Aspekt ein Computerprogrammelement bereit, das Computerprogrammcode aufweist, um im Falle, dass es auf ein Computersystem geladen und darauf ausgeführt wird, den Computer veranlasst, die Schritte eines Verfahrens wie vorstehend beschrieben durchzuführen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Nachfolgend wird in lediglich beispielhafter Weise eine bevorzugte Ausführungsform der vorliegenden Erfindung unter Bezugnahme auf die begleitenden Zeichnungen detaillierter beschrieben, in denen:
  • 1 ein Blockschaltbild eines Computersystems zeigt, das für den Betrieb von Ausführungsformen der vorliegenden Erfindung geeignet ist;
  • 2 einen Aufbau eines in einem Computersystem realisierten Aktivitätsaufzeichnungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 3 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung einen Ablaufplan eines Verfahrens zum Aufzeichnen von Aktivitäten für die parallele Softwareumgebung zeigt, die Software-Threads in dem Computersystem ausführt;
  • 4 einen verbesserten Aufbau eines in einem Computersystem realisierten Aktivitätsaufzeichnungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht; und
  • 5 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung einen Ablaufplan eines verbesserten Verfahrens zum Aufzeichnen von Aktivitäten für die parallele Softwareumgebung zeigt, die Software-Threads in dem Computersystem ausführt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • 1 zeigt ein Blockschaltbild eines Computersystems, das für den Betrieb von Ausführungsformen der vorliegenden Erfindung geeignet ist. Eine Zentraleinheit (CPU) 102 ist über einen Datenbus 108 mit einem Speicher 104 und einer Eingabe/Ausgabe(E/A)-Schnittstelle 106 in Datenaustausch verbunden. Bei dem Speicher 104 kann es sich um eine beliebige Lese/Schreib-Speichereinheit handeln, wie beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM) oder eine nichtflüchtige Speichereinheit. Zu einem Beispiel einer nichtflüchtigen Speichereinheit kann eine Platten- oder eine Bandspeichereinheit zählen. Die E/A-Schnittstelle 106 stellt eine Schnittstelle für Einheiten zur Eingabe oder Ausgabe von Daten oder sowohl zur Eingabe als auch zur Ausgabe von Daten dar. Beispiele von mit der E/A-Schnittstelle 106 verbindbaren E/A-Einheiten schließen eine Tastatur, eine Maus, eine Anzeige (wie beispielsweise einen Monitor) und eine Netzwerkverbindung ein.
  • 2 veranschaulicht einen Aufbau eines in einem Computersystem 200 realisierten Aktivitätsaufzeichnungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Das Computersystem 200 enthält einen oder mehrere Prozessoren 102 für die Ausführung von Anweisungen. Jeder Prozessor 102 im Computersystem 200 enthält einen Programmzähler 206 als ein Register oder eine andere geeignete Aufbewahrung zum Speichern eines Wertes, der eine aktuelle Position in einer Sequenz von Anweisungen anzeigt, die durch den Prozessor 102 ausgeführt werden. Programmzähler sind auch als Instruktionszeiger, Instruktionsadressregister oder Instruktionssequenzer bekannt. Der Programmzähler 206 kann abhängig von einem bestimmten Aufbau des Prozessors 102 eine Adresse für eine derzeit ausgeführte Anweisung oder alternativ eine Adresse für eine nächste auszuführende Anweisung enthalten.
  • Vorzugsweise handelt es sich bei den Prozessoren 102 um mehrere unabhängige Prozessoren in einem Mehrprozessor-Computersystem. Alternativ können die Prozessoren 102 als separate Rechensysteme zusammengesetzt sein, die in einem Netzwerk miteinander arbeitender Computersysteme organisiert sind, wie beispielsweise einem Array von Computersystemen. Jedes System in solch einem Array kann unabhängig die wesentlichen Merkmale eines vorstehend im Hinblick auf 1 dargestellten Computersystems beinhalten. Zum Beispiel können die Prozessoren 102 innerhalb eines Rack-Computer-Aufbaus, eines Blade-Servers oder einem anderen geeigneten Array von Computersystemen zusammengesetzt sein. In einer weiteren Alternative können die Prozessoren 102 als separate Verarbeitungselemente eines einzelnen Prozessors aufgebaut sein, wie beispielsweise separate Verarbeitungskerne einer Prozessoreinheit. Kombinationen solcher hierein betrachteter Prozessoranordnungen sind ebenfalls als Ausführungsformen des einen oder der mehreren Prozessoren 102 geeignet.
  • Das Computersystem 200 enthält weiterhin einen Speicher 104, wie beispielsweise einen flüchtigen Arbeitsspeicher. In dem Speicher 104 ist ein Zeit-Profiler 218 gespeichert. Bei dem Zeit-Profiler 218 handelt es sich um eine Komponente zum Aufzeichnen von Werten des Programmszählers 206 für den Prozessor 102 im Computersystem 200. Die Werte des Programmzählers 206 werden als Profiler-Datensätze 222 in dem Speicher 104, einem alternativen Speicher oder einem anderen dem Computersystem 200 zugeordneten Speicher aufgezeichnet.
  • Im Betrieb unterbricht der Zeit-Profiler 218 die Ausführung des Prozessors 102 periodisch (als ein Profiler-„Tick” bezeichnet), um einen Wert des Programmzählers 206 aufzuzeichnen, bevor die Ausführung der unterbrochenen Anweisungen wiederaufgenommen wird. Ein Wert des Programmzählers 206 entspricht einer Adresse in dem Speicher 104 einer Anweisung in einer Anweisungssequenz für einen auf dem Prozessor 102 ausgeführten Software-Thread 210 zum Zeitpunkt der Profiler-Unterbrechung (des Ticks). Die Unterbrechungen finden in regelmäßigen Intervallen statt, so dass ein Wert des Programmzählers 206 in regelmäßigen Intervallen durch den Zeit-Profiler 218 abgefragt wird. Der Zeit-Profiler 218 kann weiterhin in der Lage sein, Werte von Programmzählern für mehrere Prozessoren im Computersystem 200 aufzuzeichnen, was ein Erstellen eines Datensatzes einer jedem Wert eines Programmzählers 206 entsprechenden Kennung eines Prozessors einschließt.
  • Wie für den Fachmann ersichtlich ist, kann der Zeit-Profiler 218 vollständig als in dem Speicher 104 gespeicherte Software realisiert sein. Zum Beispiel kann der Zeit-Profiler 218 auf einem Anwendungswerkzeug beruhen, wie beispielsweise dem von IBM entwickelten und unter „perfinsp.sourceforge.net/tprof.html” näher ausgeführten Zeit-Profilerwerkzeug „TProf” (IBM ist eine eingetragene Marke der International Business Machines Corporation).
  • Alternativ dazu kann der Zeit-Profiler 218 außerhalb des Speichers 104 realisiert und vollständig in Hardware oder einer Kombination von sowohl Hardware als auch Software ausgebildet sein. Zum Beispiel kann es sich beim Zeit-Profiler 218 um eine auf dem Computersystem 200 ausgeführte Softwareroutine handeln, wie beispielsweise ein Betriebssystem oder eine Kernelfunktion in enger Zusammenarbeit mit dem einen oder den mehreren Prozessoren 102 des Computersystems 200. Alternativ dazu kann der Zeit-Profiler 218 Prozessoranweisungen verwenden, die speziell auf das Speichern eines Wertes des Programmzählers 206 gerichtet sind. In einer weiteren Alternative kann es sich bei dem Zeit-Profiler 218 um eine Funktion eines „Just In Time”(JIT)-Kompilierers für die parallele Softwareumgebung 208 handeln, was als ein „Sampling Thread” bekannt ist.
  • In dem Speicher 104 ist weiterhin eine parallele Softwareumgebung 208 gespeichert. Bei der parallelen Softwareumgebung 208 handelt es sich um eine Umgebung, in der Software als eine Sammlung eines oder mehrerer Rechenprozesse angelegt ist, welche für die gleichzeitige parallele Ausführung geeignet sind. Insbesondere erfordert die Eignung für eine solche parallele gleichzeitige Ausführung nicht notwendigerweise, dass parallele Software tatsächlich parallel ausgeführt wird. Eine parallele Softwareumgebung kann eine parallele Ausführung mithilfe eines einzelnen Prozessors 102 imitieren oder echte parallele Ausführung mithilfe mehrerer Prozessoren 102 realisieren, wie beispielsweise bei jeder beliebigen der vorstehend beschriebenen Anordnungen von Prozessoren 102. Parallele Programme können auf einem einzelnen Prozessor sequenziell ausgeführt werden, indem die Ausführungsschritte jedes Rechenprozesses verzahnt werden, oder sie können parallel ausgeführt werden, indem jeder Rechenprozess einem Prozessor aus einem Satz von Prozessoren 102 zugewiesen wird, die sich in der Nähe befinden oder über ein Netzwerk verteilt sein können. Ein Beispiel für solch eine parallele Softwareumgebung stellt eine Java-Laufzeitumgebung (Java Runtime Environment) dar.
  • Ein Vielzahl von Software-Threads 210 im Computersystem 200 wird als parallele Rechenprozesse gleichzeitig in der parallelen Softwareumgebung 208 ausgeführt. Zum Beispiel handelt es sich bei den Software-Threads 210 um Ausführungs-Threads in einem Java-Programm, das für instanziierte Java-Objekte ausgeführte Softwareverfahren einschließt.
  • Die Software-Threads 210 sind jeweils in der Lage, auf eine gemeinsam genutzte Ressource 216 zuzugreifen. Bei der gemeinsam genutzten Ressource 216 kann es sich um jede für den Zugriff durch Threads in der parallelen Softwareumgebung 208 geeignete Ressource handeln, wie beispielsweise eine Hardware- oder Softwareressource, einen gemeinsam genutzten Speicherbereich, eine Einheit, einen Prozessor oder irgendeine andere Ressource. Zum Beispiel kann es sich bei der gemeinsam genutzten Ressource 216 um ein Java-Objekt handeln, wie beispielsweise ein Java-Objekt, das synchronisierte Softwareverfahren in der Java-Umgebung enthält.
  • Die parallele Softwareumgebung 208 verwendet einen oder mehrere Synchronisierungsmechanismen, um einen gesteuerten Zugriff auf die gemeinsam genutzte Ressource 216 sicherzustellen und die gleichzeitige Nutzung der gemeinsam genutzten Ressource 216 durch mehrere Software-Threads 210 zu vermeiden.
  • Zum Beispiel können in der parallelen Softwareumgebung 208 Software-Threads mittels eines Algorithmus wechselseitigen Ausschlusses (Mutex), einer Softwaresperre, eines Synchronisierungsüberwachers, Semaphoren oder anderen im Stand der Technik bekannten Synchronisierungsmechanismen synchronisiert werden. Solche Mechanismen können ein ausschließendes Konstrukt verwenden, um die gleichzeitige Nutzung der gemeinsamen Ressource 216 zu vermeiden. Zu in solchen Synchronisierungsmechanismen verwendeten ausschließenden Konstrukten können Sperren, Überwacher und Semaphoren zählen.
  • Zum Beispiel können die Software-Threads 210, die auf ein Softwareobjekt mit einem synchronisierten Softwareverfahren als gemeinsam genutzte Ressource 216 zugreifen, synchronisiert werden, indem ein Softwareüberwacher verwendet wird, um den Zugriff auf das Softwareobjekt zu jedem bestimmten Zeitpunkt auf einen einzigen Thread einzuschränken. Um einen Thread zu beschreiben, der in durch ausschließende Konstrukte synchronisierten Umgebungen arbeitet, können unterschiedliche Betriebszustände verwendet werden.
  • Von einem auf dem Computersystem 200 ausgeführten Software-Thread 210, der Zugriff auf eine gemeinsam genutzte Ressource 216 zu erhalten sucht, kann gesagt werden, er strebe an, ein der gemeinsam genutzten Ressource 216 zugeordnetes ausschließendes Konstrukt zu „erwerben”. Gleichermaßen kann von einem derzeit synchronisierten Zugriff auf die gemeinsam genutzte Ressource 216 genießenden Software-Thread 210 gesagt werden, er „besitze” ein der gemeinsam genutzten Ressource 216 zugeordnetes ausschließendes Konstrukt, was auch als „Besitz”-Zustand („held” state) des Software-Thread 210 bekannt ist.
  • Synchronisierungsmechanismen zum Erreichen der gemeinsamen Nutzung der gemeinsam genutzten Ressource 216 beziehen Threads mit ein, die in andere Betriebszustände übergehen, Ein Synchronisierungsmechanismus kann von einem Thread 210, der ein ausschließendes Konstrukt zu erwerben sucht, verlangen, in einen „Leerlauf”-Zustand überzugehen, bevor er das ausschließende Konstrukt besitzen kann. Ein Thread im „Leerlauf”-Zustand wird aktiv auf einem Prozessor 102 ausgeführt, ist jedoch nicht in der Lage, auf die dem ausschließenden Konstrukt zugeordnete gemeinsam genutzte Ressource 216 zuzugreifen. Normalerweise ist ein Thread in einem „Leerlauf”-Zustand nicht in der Lage, nützliche Tätigkeiten zu verrichten, da er das ausschließende Konstrukt zu erwerben sucht, somit führen solche Threads normalerweise keine anderen Softwareroutinen oder -verfahren aus, während sie sich im „Leerlauf”-Zustand befinden.
  • Synchronisierungsmechanismen können dazu führen, dass es einem Thread 210 nicht gelingt, ein ausschließendes Konstrukt für die gemeinsam genutzte Ressource 216 zu erwerben, was den Thread in einem „blockierten” Zustand hält, in dem er nicht in der Lage ist, auf die gemeinsam genutzte Ressource 216 zuzugreifen. Threads in einem „blockierten” Zustand sind nicht zur Ausführung in der Lage und unterliegen nicht länger der Verarbeitung durch irgendeinen Prozessor 102 im Computersystem 200, während sie sich im „blockierten” Zustand befinden. Eine solche Blockierung kann vorübergehend sein, wenn das ausschließende Konstrukt im Anschluss für den Erwerb durch den Thread 210 verfügbar wird.
  • Ein Thread 210, der ein ausschließendes Konstrukt besitzt, kann in einen „Warte”-Zustand eintreten, während der Thread 210 darauf wartet, dass durch einen anderen Thread eine Verarbeitung vorgenommen wird. Solche „Warte”-Zustände werden normalerweise durch den Empfang einer Benachrichtigung oder im Falle von Zuständen „zeitgeplanten Wartens” durch Ablauf einer zuvor festgelegten Zeitdauer hervorgerufen. Threads 210 in den Zuständen „Warten” und „zeitgeplantes Warten” sind nicht zur Ausführung in der Lage und unterliegen nicht länger einer Verarbeitung durch irgendeinen Prozessor 102 im Computersystem 200, bis die Benachrichtigung durch den Thread 210 empfangen wird oder die Zeitdauer abläuft. Threads, die in einen „Warte”-Zustand eintreten, geben normalerweise ein ausschließendes Konstrukt frei und erwerben es neu, wenn sie den „Warte”-Zustand verlassen.
  • Weiterhin können sich Threads 210 in einem „ausführbaren” Zustand befinden, wobei es sich um einen Zustand handelt, in dem ein Thread 210 in der Lage und bereit ist, auf einem Prozessor 102 des Computersystems 200 ausgeführt zu werden, in welchem dem Thread 210 jedoch momentan kein Prozessor 102 zur Ausführung zugewiesen ist.
  • Jeder der Software-Threads 210 enthält einen Thread-Zustandsanzeiger 212 zum Aufzeichnen einer momentanen Anzeige eines derzeitigen Synchronisierungszustandes 214 für den Thread 210. Die Anzeige 214 ist einem bestimmten Thread 210 zugeordnet und kann jeden einzelnen oder alle der Zustände anzeigen: „Besitz”; „Leerlauf”; „blockiert”; „Warten” (entweder „Warten” oder „zeitgeplantes Warten”); „ausführbar” sowie eine Anzeige eines nicht synchronisierten Zustands des Software-Thread 210. In einer Ausführungsform wird die Anzeige 214 durch den Software-Thread selbst festgelegt. In einer alternativen Ausführungsform wird die Anzeige 214 durch die parallele Softwareumgebung 208 festgelegt, wie beispielsweise durch eine virtuelle Maschine in einer Java-Laufzeitumgebung.
  • Der Aufbau von 2 wird nun in Verwendung beschrieben, um die Vorteile von Ausführungsformen der vorliegenden Erfindung aufzuzeigen. In Verwendung wird die Anzeige 214 bei, kurz vor oder kurz nach einer Änderung am Synchronisierungszustand des Software-Thread 210 festgelegt. Zum Beispiel aktualisiert ein Software-Thread 210, der im Begriff ist, ein Synchronisierungskonstrukt für den Zugriff auf die gemeinsam genutzte Ressource 216 zu erwerben, die Anzeige 214 so, dass sie einen „Besitz”-Zustand wiedergibt. Gleichermaßen aktualisiert ein Software-Thread 210, der im Begriff ist, in einen „Leerlauf”-Zustand einzutreten, die Anzeige 214 so, dass sie einen „Leerlauf”-Zustand wiedergibt.
  • In Verwendung fragt der Zeit-Profiler 218 regelmäßige Werte des Programmzählers 206 für jeden des einen oder der mehreren Prozessoren 102 ab und zeichnet sie in der Profilerdatensätzen 222 auf. Der Zeit-Profiler 218 ist eingerichtet, einen Synchronisierungszustand für einen auf einem abgefragten Prozessor 102 ausgeführten Software-Thread 210 in den Profiler-Datensätzen 222 aufzuzeichnen. Der Synchronisierungszustand beruht auf einem Erkennen, welcher Thread 210 auf dem abgefragten Prozessor 102 ausgeführt wird, und auf der Anzeige des durch den Thread 210 gespeicherten Synchronisierungszustands 214. Zustandsangaben für Threads in Zuständen, die das Ausführen auf einem des einen oder der mehreren Prozessoren 102 mit sich bringen, können auf diese Weise ermittelt und aufgezeichnet werden. Hierzu zählen die Zustände „Leerlauf”, „Besitz” und der Zustand nicht synchronisierter Ausführung.
  • Somit ist der Aufbau von 2 in Verwendung in der Lage, für Threads 210, die in der parallelen Softwareumgebung 208 ausgeführt werden, die Synchronisierungszustandsangaben „Besitz” und „Leerlauf” in regelmäßigen Zeitintervallen durch Abfragen des Zeit-Profiler 218 aufzuzeichnen. Bei einer solchen Abfrage kann es sich um einen feingranularen oder atomischen Prozess handeln, der einen sehr niedrigen Verarbeitungsaufwand für das Computersystem 200 darstellt und somit einen im Wesentlichen vernachlässigbaren Einfluss auf die Synchronisierungsdynamik der parallelen Softwareumgebung 208 besitzt. Zudem ist die Verarbeitung des Zeit-Profiler 218 im Hinblick auf die parallele Softwareumgebung 208 insofern passiv, als das Abfragen von Werten des Programmzählers 206 und das Erhalten der Synchronisierungszustandsanzeige 214 keine aktive Beteiligung der parallelen Softwareumgebung 208 erfordern. Weiterhin können die regelmäßig erfolgenden Synchronisierungszustandsangaben „Besitz” und „Leerlauf” für die mehreren Software-Threads 210 einen Prozess des Analysierens des Synchronisierungsverhaltens der Software-Threads 210 informieren, um die Effizienz, Betriebsfähigkeit und Skalierbarkeit der parallelen Softwareumgebung 208 zu verbessern.
  • In einer Ausführungsform wird jeder Wert des Programmzählers 206 in eine Kennzeichnung eines ausgeführten Softwareverfahrens für einen auf dem Prozessor 102 ausgeführten Thread aufgelöst. Zum Beispiel kann der Zeit-Profiler 218 einen Auflöser verwenden, um für jeden durch den Zeit-Profiler 218 aufgezeichneten Adresswert des Programmzählers 206 einen symbolischen Namen zu ermitteln, der Softwarecode für einen Software-Thread 210 kennzeichnet, der eine unter der Adresse gespeicherte Anweisung enthält. Somit werden durch den Auflöser für jede durch den Zeit-Profiler 218 aufgezeichnete Adresse Symbolnamen einschließlich Funktions-, Prozedur-, Subroutinen- oder Verfahrensnamen in einem Thread 210 abgerufen. Bei dem Auflöser kann es sich um eine Funktion des Zeit-Profiler 218 oder eine in dem Speicher 204 gespeicherte ergänzende Funktion oder ein ergänzendes Werkzeug handeln.
  • Der Aufbau von 2 kann weiterhin eine Berechnungskomponente zum Berechnen eines Anteils der regelmäßigen durch den Zeit-Profiler profilierten Intervalle enthalten, für die sich ein Thread 210 in einem bestimmten Synchronisierungszustand befand. Zum Beispiel kann ein prozentualer Anteil der Gesamtzeit berechnet werden, zu dem sich ein Thread 210 in einem „Besitz”-Zustand befand. Eine solche Berechnungskomponente kann als Bestandteil im Zeit-Profiler 218 enthalten sein. Alternativ dazu kann es sich bei einer solchen Berechnungskomponente um eine separate oder zusätzliche Software- oder Hardwarekomponente handeln, die mit den durch die Profiler-Komponente 218 erzeugten Profiler-Datensätzen 222 interagiert.
  • In einer bevorzugten Ausführungsform zeichnet der Thread-Zustandsanzeiger 212 zusätzlich eine Kennzeichnung der gemeinsam genutzten Ressource 216 auf, auf die der Software-Thread 210 Zugriff sucht. Zum Beispiel kann der Thread-Zustandsanzeiger 212 die Kennzeichnung zusammen mit der Synchronsierungszustandsangabe 214 aufzeichnen. Zu einer solchen Kennzeichnung können zum Beispiel ein Klassenname eines Objekts oder eine Kennung eines synchronisierten Softwareverfahrens, einer Routine, einer Einheit, eines Datenelements oder einer anderen gemeinsam genutzten Ressource zählen. Weiterhin ist der Auflöser in einer bevorzugten Ausführungsform in der Lage, einen einer durch den Thread-Zustandsanzeiger 212 aufgezeichneten Kennung zugeordneten symbolischen Namen der gemeinsam genutzten Ressource 216 zu ermitteln. Zum Beispiel wird ein Name einer Softwareroutine, wie beispielsweise eines Softwareverfahrens oder einer Funktion, mit der Synchronisierungszustandsangabe 214 aufgezeichnet. Wenn die gemeinsam genutzte Ressource 216 Softwareobjekte enthält, die Softwareobjekte mit synchronisierten Routinen wie beispielsweise ein synchronisiertes Softwareverfahren einschließen, kann die gemeinsam genutzte Ressource 216 einer durch eine aufrufende Softwareroutine aufgerufenen Routine in einer Dienstbibliothek entsprechen, wie beispielsweise einer Klassenbibliothek, Standardbibliothek, Dienstroutine oder einem Basisverfahren oder einer Basisfunktion. In solchen Situationen ist es unter Umständen wenig hilfreich, eine Anzeige der Routine selbst aufzuzeichnen (da solche Routinen häufig durch viele Verfahren aufgerufen werden können), und stattdessen kann eine Kennung einer aufrufenden Routine ermittelt und zusätzlich oder stattdessen aufgezeichnet werden. Eine solche aufrufende Routine kann von einem Aufrufstapel und/oder einem Auflöser erkannt werden.
  • 3 zeigt gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung einen Ablaufplan eines Verfahrens zum Aufzeichnen von Aktivitäten für die parallele Softwareumgebung 208, die Software-Threads 210 in dem Computersystem 200 ausführt. In Schritt 302 zeichnet der Thread-Zustandsanzeiger 212 eine Anzeige eines Synchronisierungszustands 214 für einen Software-Thread 210 auf, wobei die Anzeige einer Kennzeichnung des Software-Thread 210 zugeordnet ist. In Schritt 304 fragt der Zeit-Profiler 218 in regelmäßigen Intervallen Werte des Programmzählers 206 für den einen oder die mehreren Prozessoren 102 ab. In Schritt 306 erkennt der Zeit-Profiler 218 einen oder mehrere Synchronisierungszustände des Software-Thread 210 auf der Grundlage des abgefragten Programmzählerwertes 206 und der aufgezeichneten Zustandsanzeige 214 und zeichnet ihn oder sie auf.
  • Die vorstehend beschriebenen Ausführungsformen sind für das Aufzeichnen der Synchronisierungszustandsangaben „Besitz” und „Leerlauf” für Threads 210 geeignet, die aktiv auf einem oder mehreren der Prozessoren 102 ausgeführt werden. Die vorstehenden Ausführungsformen beruhen auf einem Abfragen des Programmzählers 206 und der Anzeige des Thread-Synchronisierungszustandes 214 und stellen somit nur nützliche Informationen für Threads bereit, die aktiv auf einem Prozessor 102 ausgeführt werden. Threads, die nicht aktiv auf einem Prozessor 102 ausgeführt werden, wie beispielsweise Threads in einem Zustand „blockiert”, „Warten” (entweder „Warten” oder „zeitgeplantes Warten”) oder „ausführbar”, werden durch das vorstehend beschriebene Abfragen des Zeit-Profiler 218 nicht erkannt. Dementsprechend ist ein zusätzlicher Ansatz erforderlich, um Aktivitäten für Threads in diesen Zuständen aufzeichnen zu können.
  • 4 veranschaulicht einen verbesserten Aufbau eines in einem Computersystem 400 realisierten Aktivitätsaufzeichnungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Viele der Merkmale von 4 sind identisch mit den vorstehend in Hinblick auf 2 beschriebenen und werden hier nicht wiederholt. Der Aufbau von 4 ist im Hinblick auf 2 dahingehend verbessert, dass der Aufbau von 4 zum Aufzeichnen von Synchronisierungszustandsangaben für Software-Threads 410 in der parallelen Softwareumgebung 408 geeignet ist, in der die Threads nicht aktiv auf einem Prozessor 102 des Computersystems 400 ausgeführt werden. Der in 4 abgebildete Aufbau kann den Aufbau von 2 so ergänzen, dass in gewissen Ausführungsformen die im Hinblick auf 2 beschriebenen Merkmale zusätzlich zu den nachstehend im Hinblick auf 4 beschriebenen Merkmalen realisiert werden können.
  • Der Thread-Zustandsanzeiger 412 von 4 ist in der Lage, Anzeigen eines Synchronisierungszustands von Software-Threads 410 aufzuzeichnen, in denen der Software-Thread aufhört, auf einem Prozessor 102 des Computersystems 400 ausgeführt zu werden. Somit zeichnet der Thread-Zustandsanzeiger 412 im Aufbau von 4 Anzeigen von Zuständen „blockiert”, „Warten” (entweder „Warten” oder „zeitgeplantes Warten”) und „ausführbar” in der Synchronisierungszustandsanzeige 414 auf. Ansonsten ist der Thread-Zustandsanzeiger 412 von 4 im Wesentlichen identisch mit dem vorstehend in Hinblick auf 2 beschriebenen.
  • Der Zeit-Profiler 418 von 4 ist in der Lage, einen oder mehrere Prozessoren 102 zu erkennen, die inaktiv sind. Ein Prozessor 102 wird als inaktiv bezeichnet, wenn keiner der Software-Threads 410 zur Ausführung auf dem Prozessor 102 zugeteilt ist. Der Zeit-Profiler 418 zeichnet eine solche Inaktivität auf, wie beispielsweise durch Speichern einer Anzeige, dass der Prozessor 102 zu einem bestimmten Zeitpunkt inaktiv ist. In einer alternativen Ausführungsform ist der Zeit-Profiler 418 weiterhin in der Lage, eine Zeitperiode, in der der Prozessor 102 kontinuierlich inaktiv ist, als eine inaktive Periode für den Prozessor 102 zu erkennen.
  • In dem Speicher 104 von 4 ist weiterhin ein Zuteilungsüberwacher 424 gespeichert. Der Zuteilungsüberwacher 424 ist in der Lage, zu erkennen, wenn ein Software-Thread 410 für die Ausführung auf einem Prozessor 102 zugeteilt ist. Der Zuteilungsüberwacher 424 kann als eine mit der parallelen Softwareumgebung und dem Zeit-Profiler 418 koexistierende Softwareroutine realisiert sein. Alternativ dazu kann der Zuteilungsüberwacher 424 in einem Betriebssystem oder Kernel des Computersystems 400 realisiert sein. Es ist denkbar, dass der Zuteilungsüberwacher 424 vollständig oder teilweise in Hardware realisiert sein kann.
  • In Verwendung erkennt der Zuteilungsüberwacher 424 die Zuteilung eines Software-Thread 410 zu einem Prozessor 102. Als Reaktion auf eine solche Erkennung ermittelt der Zuteilungsüberwacher 424 unter Einbeziehung des Zeit-Profiler 418, ob der Prozessor 102, dem der Thread zugeteilt ist, unmittelbar vor der Zuteilung inaktiv war. Wenn der Prozessor 102 inaktiv war, erhält der Zuteilungsüberwacher 424 einen Synchronisierungszustand des zugeteilten Thread 410, um zu ermitteln, ob sich der zugeteilte Thread 410 in einem Synchronisierungszustand befindet, der für die Inaktivität des Prozessors 102 verantwortlich sein kann. Wenn zum Beispiel die Synchronisierungszustandsanzeige 414 für den zugeteilten Thread 410 anzeigt, dass der Thread 410 bis zum Punkt der Zuteilung blockiert (in einem „blockierten” Zustand) war, kann die Blockierung für die Inaktivität des Prozessors 102 verantwortlich sein. Derartige Schlussfolgerungen können für die Zustände „blockiert”, „Warten” („Warten” und „zeitgeplantes Warten”) und „ausführbar” von Software-Threads 410 gezogen werden. Wenn in einer alternativen Ausführungsform eine kontinuierliche inaktive Periode für einen Prozessor 102 aufgezeichnet ist, kann der Synchronisierungszustands für die inaktive Periode verantwortlich sein und der inaktiven Periode zugeschrieben werden.
  • Wo der Zuteilungsüberwacher einen zugeteilten Thread 410 eines Synchronisierungszustand erkennt, der für die Inaktivität eines Prozessors 102 verantwortlich ist, erzeugt der Zuteilungsüberwacher einen Datensatz des Synchronisierungszustands des Thread, wie beispielsweise in Profiler-Datensätzen 422, und schreibt die Inaktivität dem zugeteilten Thread und dem angezeigten Synchronisierungszustand des zugeteilten Thread 410 zu. Auf diese Weise wird eine Inaktivität von Prozessoren 102, die durch bestimmte Synchronisierungszustände von Threads 410 verursacht worden sein kann, diesen Zuständen und Threads zugeschrieben.
  • Somit ist der Aufbau von 4 in der Lage, Angaben der Synchronisierungszustände „blockiert”, „Warten” und „ausführbar” für in der parallelen Softwareumgebung 408 ausgeführte Threads 410 aufzuzeichnen und solche Zustände der durch den Zeit-Profiler 418 erkannten Inaktivität von Prozessoren 102 zuzuschreiben. Bei einem Prüfen und Abfragen durch den Zeit-Profiler 418 und den Zuteilungsüberwacher 424 kann es sich um feingranulare oder atomische Prozesse handeln, die einen sehr niedrigen Verarbeitungsaufwand für das Computersystem 400 darstellen und somit einen im Wesentlichen vernachlässigbaren Einfluss auf die Synchronisierungsdynamik der parallelen Softwareumgebung 408 besitzen. Zudem ist die Verarbeitung des Zeit-Profiler 418 und des Zuteilungsüberwachers 424 im Hinblick auf die parallele Softwareumgebung 408 insofern passiv, als das Prüfen auf Inaktivität von Prozessoren 102 und das Abfragen von Synchronisierungszustandsangaben 414 keine aktive Beteiligung der parallelen Softwareumgebung 408 erfordern. Weiterhin können die Datensätze für die Zustandsangaben „blockiert”, „Warten” und „ausführbar” für die mehreren Software-Threads 410 einen Prozess des Analysierens des Synchronisierungsverhaltens der Software-Threads 410 informieren, um die Effizienz, Betriebsfähigkeit und Skalierbarkeit der parallelen Softwareumgebung 408 zu verbessern.
  • 5 zeigt gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung einen Ablaufplan eines Verfahrens zum Aufzeichnen von Aktivitäten für die parallele Softwareumgebung 408, die Software-Threads 410 in dem Computersystem 400 ausführt. In Schritt 502 zeichnet der Thread-Zustandsanzeiger 412 eine Anzeige eines Synchronisierungszustands 414 eines Software-Thread 410 auf, in dem der Software-Thread 410 aufhört, in einem Prozessor 102 des Computersystems 400 ausgeführt zu werden. Die Anzeige 414 ist einer Kennzeichnung des Software-Thread 410 zugeordnet. In Schritt 504 erkennt der Zeit-Profiler 418 einen Prozessor 102 des Computersystems 400, der inaktiv ist, und zeichnet eine Anzeige auf, dass der Prozessor inaktiv ist. In Schritt 506 erkennt der Zeit-Profiler 418 eine Inaktivität des Prozessors 102. In einer bevorzugten Ausführungsform wird die Inaktivität als eine inaktive Periode erkannt, während der der Prozessor kontinuierlich inaktiv ist. In Schritt 508 erkennt der Zuteilungsüberwacher 424 die Zuteilung des Software-Thread 410 zum Prozessor 102. In Schritt 510 wird im Verfahren ermittelt, ob der Prozessor inaktiv ist. In Schritt 512 wird im Verfahren ermittelt, ob der Synchronisierungszustand des zugeteilten Verfahrens 410 für die Inaktivität verantwortlich sein kann (zum Beispiel ein Zustand „blockiert”, „Warten” oder „ausführbar”). In Schritt 514 erzeugt der Zuteilungsüberwacher 424 einen Datensatz in den Profiler-Datensätzen 422, der die Inaktivität des Prozessors 102 dem Software-Thread 410 und dem angezeigten Synchronisierungszustand für den Software-Thread 410 zuschreibt. Vorzugsweise ist der Zeit-Profiler 418 weiterhin in der Lage, die Anzeige, dass ein Prozessor 102 inaktiv ist, als Reaktion darauf wieder zurückzusetzen, dass der Zuteilungsüberwacher 424 die Zuteilung eines Thread zum Prozessor 102 erkennt.
  • Der Aufbau von 4 kann weiterhin eine Berechnungskomponente zum Berechnen eines durch den Zeit-Profiler 418 und den Zuteilungsüberwacher 424 als Profil erstellten Zeitanteils enthalten, für die sich ein Thread 410 in einem bestimmten Synchronisierungszustand befand. Zum Beispiel wird eine Berechnung eines prozentualen Anteils der Gesamtzeit, für den ein Prozessor 102 inaktiv ist, einem Thread 410 zugeschrieben, der sich in einem „blockierten” Zustand befindet. Eine solche Berechnungskomponente kann als Bestandteil im Zeit-Profiler 418 oder als Bestandteil im Zuteilungsüberwacher 424 enthalten sein. Alternativ dazu kann es sich bei einer solchen Berechnungskomponente um eine separate oder zusätzliche Software- oder Hardwarekomponente handeln.
  • In einer bevorzugten Ausführungsform kann der Zeit-Profiler 418 von 4 weiterhin die Funktionen des Zeit-Profiler zur regelmäßigen Abfrage des Programmzählers von 2 enthalten. Das durch einen solchen Zeit-Profiler 418 durchgeführte Abfragen des Programmzählers kann verwendet werden, um eine inaktive Periode für einen inaktiven Prozessor 102 zu messen, indem eine Anzahl regelmäßiger Intervalle gezählt wird, während derer der Prozessor 102 inaktiv ist. Weiterhin kann die inaktive Periode durch den Zeit-Profiler 418 als eine Zahl regelmäßiger Intervalle zusammen mit der Anzeige aufgezeichnet werden, dass der Prozessor 102 inaktiv ist.
  • In einer bevorzugten Ausführungsform zeichnet der Thread-Zustandsanzeiger 412 zusätzlich eine Kennzeichnung der gemeinsam genutzten Ressource 416 auf, auf die der Software-Thread 410 Zugriff sucht, wie vorstehend in Hinblick auf 2 beschrieben wurde. Der Aufbau von 4 kann weiterhin den vorstehend in Hinblick auf 2 beschriebenen Auflöser zum Durchführen einer Auflösung symbolischer Namen enthalten.
  • Insofern als Ausführungsformen der beschriebenen Erfindung zumindest in Teilen mit einer softwaregesteuerten programmierbaren Verarbeitungseinheit wie beispielsweise einem Mikroprozessor, digitalen Signalprozessor oder einer anderen Verarbeitungseinheit, einer anderen Datenverarbeitungsvorrichtung oder einem anderen Datenverarbeitungssystem ausführbar sind, ist ersichtlich, dass ein Computerprogramm zum Konfigurieren einer programmierbaren Einheit, einer programmierbaren Vorrichtung oder eines programmierbaren Systems zum Ausführen der vorstehend beschriebenen Verfahren als ein Aspekt der vorliegenden Erfindung vorgesehen ist. Das Computerprogramm kann zum Beispiel als Quellcode ausgeführt sein, zur Ausführung auf einer Verarbeitungseinheit, einer Verarbeitungsvorrichtung oder einem Verarbeitungssystem eine Kompilierung durchlaufen oder als Objektcode ausgeführt sein.
  • Das Computerprogramm wird geeigneterweise auf einem Trägermedium in maschinen- oder einheitenlesbarer Form zum Beispiel in Halbleiterspeicher, Magnetspeicher wie Platte oder Band, optisch oder magneto-optisch lesbarem Speicher wie beispielsweise einer Compact Disk oder einer DVD (digital versatile disk) usw. gespeichert, und die Verarbeitungseinheit nutzt das Programm oder einen Teil davon, um es für den Betrieb zu einzurichten. Das Computerprogramm kann von einer entfernt angeordneten Quelle geliefert werden, die in einem Datenübertragungsmedium wie beispielsweise einem elektronischen Signal, einem Funkträgersignal oder einem optischen Trägersignal ausgeführt ist. Solche Trägermedien sind ebenfalls als Aspekte der vorliegenden Erfindung vorgesehen.
  • Es ist für den Fachmann erkennbar, dass, obwohl die vorliegende Erfindung in Zusammenhang mit den oben beschriebenen beispielhaften Ausführungsformen beschrieben wurde, die Erfindung nicht darauf beschränkt ist und dass es viele mögliche Variationen und Veränderungen gibt, die unter den Umfang der Erfindung fallen.
  • Der Umfang der vorliegenden Erfindung umfasst sämtliche neuartigen Merkmale oder Kombinationen von Merkmalen, die hierin offenbart wurden. Der Anmelder weist hiermit darauf hin, dass neue Ansprüche zu solchen Merkmalen oder Kombinationen von Merkmalen während der Verfolgung dieser Anmeldung oder weiterer hiervon abgeleiteter Anmeldungen formuliert werden können. Insbesondere können bezüglich der angehängten Ansprüche Merkmale von Unteransprüchen mit denen der unabhängigen Ansprüche kombiniert werden und Merkmale jeweiliger unabhängiger Ansprüche in jeder geeigneten Weise und nicht nur in den besonderen in den Ansprüchen aufgezählten Kombinationen kombiniert werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • „Java Lock Monitor” (JLM) (siehe perfinsp.sourceforge.net/jlm.html) [0005]
    • „IBM Monitoring and Diagnostic Tools for Java – Health Centre” (siehe publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jsp) [0005]
    • perfinsp.sourceforge.net/tprof.html [0036]

Claims (16)

  1. Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung, die Software-Threads in einem Computersystem ausführt, wobei das Aktivitätsaufzeichnungssystem aufweist: einen Thread-Zustandsanzeiger zum Aufzeichnen einer Anzeige eines Synchronisierungszustandes eines Software-Thread, in dem der Software-Thread aufhört, in einem Prozessor des Computersystems ausgeführt zu werden, wobei die Anzeige einer Kennzeichnung des Software-Thread zugeordnet ist; einen Zeit-Profiler zum Erkennen, dass ein Prozessor des Computersystems inaktiv ist, und Aufzeichnen einer Anzeige, dass der Prozessor inaktiv ist; einen Zuteilungsüberwacher zum Erkennen der Zuteilung des Software-Thread zum Prozessor und als Reaktion auf die Anzeige, dass der Prozessor inaktiv ist, und die Anzeige des Synchronisierungszustands des Software-Thread Erzeugen eines Datensatzes, der die Inaktivität des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.
  2. Aktivitätsaufzeichnungssystem nach Anspruch 1, wobei der Zeit-Profiler weiterhin in der Lage ist, eine inaktive Periode für den Prozessor als eine Periode zu erkennen, während der der Prozessor kontinuierlich inaktiv ist, und wobei der Datensatz, der die Inaktivität zuschreibt, die inaktive Periode des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.
  3. Aktivitätsaufzeichnungssystem nach Anspruch 2, wobei festgestellt wird, dass der Prozessor inaktiv ist, indem festgestellt wird, dass dem Prozessor kein darauf auszuführender Software-Thread zugeteilt ist.
  4. Aktivitätsaufzeichnungssystem nach Anspruch 3, weiterhin aufweisend: eine Berechnungskomponente zum Berechnen eines Zeitanteils, für den sich der Thread in einem angegebenen Zustand befunden hat.
  5. Aktivitätsaufzeichnungssystem nach Anspruch 3, wobei der Thread-Zustandsanzeiger in der Lage ist aufzuzeichnen: eine Anzeige eines „blockierten” Zustands des Software-Thread, in dem der Software-Thread davon abgehalten wird, ein ausschließendes Konstrukt zum Erreichen der Synchronisierung in der parallelen Softwareumgebung zu erwerben; eine Anzeige eines „Warte”-Zustands des Software-Thread, in dem der Software-Thread auf eine durch einen anderen Software-Thread vorzunehmende Verarbeitung wartet; eine Anzeige eines „ausführbaren” Zustands des Software-Thread, in dem der Software-Thread zur Ausführung auf einem Prozessor des Computersystems bereit ist; und eine Anzeige eines nicht synchronisierten Zustands eines Software-Thread.
  6. Aktivitätsaufzeichnungssystem nach Anspruch 5, wobei die Anzeige eines Synchronisierungszustands eines Software-Thread weiterhin eine Kennung einer gemeinsam genutzten Ressource enthält, auf die der Software-Thread Zugriff sucht.
  7. Aktivitätsaufzeichnungssystem nach Anspruch 6, weiterhin aufweisend: einen Auflöser zum Ermitteln eines symbolischen Namens, welcher der Kennung einer gemeinsam genutzten Ressource zugeordnet ist.
  8. Aktivitätsaufzeichnungssystem nach Anspruch 7, wobei der Zeit-Profiler weiterhin eingerichtet ist, festzustellen, dass die Softwareroutine in einer Dienstbibliothek von Routinen der Softwareumgebung enthalten ist, und als Reaktion auf die Feststellung eine aufrufende Routine für die Softwareroutine zu erkennen.
  9. Aktivitätsaufzeichnungssystem nach Anspruch 8, wobei der Zeit-Profiler die aufrufende Routine mithilfe eines oder mehrerer erkennt von: dem Auflöser; und einem Softwareaufrufstapel.
  10. Aktivitätsaufzeichnungssystem nach Anspruch 3, wobei der Synchronisierungszustand des Software-Thread ermittelt wird durch eines oder mehrere von: dem Software-Thread selbst; und der parallelen Softwareumgebung.
  11. Aktivitätsaufzeichnungssystem nach Anspruch 5, wobei es sich bei dem ausschließende Konstrukt um eines handelt von: einer Sperre; und einem Überwacher.
  12. Aktivitätsaufzeichnungssystem nach Anspruch 6, wobei es sich bei der gemeinsam genutzten Ressource um ein Softwareobjekt handelt.
  13. Aktivitätsaufzeichnungssystem nach Anspruch 3, wobei der Zeit-Profiler weiterhin in der Lage ist, Werte eines Programmzählers für den Prozessor des Computersystems in regelmäßigen Intervallen abzufragen, und der Zeit-Profiler die inaktive Periode durch Zählen einer Anzahl regelmäßiger Intervalle erkennt, während derer der Prozessor inaktiv ist.
  14. Aktivitätsaufzeichnungssystem nach Anspruch 13, wobei die Anzeige, dass der Prozessor inaktiv ist, die Zählung regelmäßiger Intervalle enthält, während derer der Prozessor inaktiv ist.
  15. Verfahren zum Aufzeichnen von Aktivitäten für eine parallele Softwareumgebung, die Software-Threads in einem Computersystem ausführt, wobei das Verfahren die Schritte aufweist: ein Thread-Zustandsanzeiger zeichnet eine Anzeige eines Synchronisierungszustandes eines Software-Thread auf, in dem der Software-Thread aufhört, auf einem Prozessor des Computersystems ausgeführt zu werden, wobei die Anzeige einer Kennzeichnung des Software-Thread zugeordnet ist; ein Zeit-Profiler erkennt, dass ein Prozessor des Computersystems inaktiv ist, und zeichnet eine Anzeige auf, dass der Prozessor inaktiv ist, wobei ein Zuteilungsüberwacher die Zuteilung des Software-Thread zum Prozessor erkennt; und als Reaktion auf die Anzeige, dass der Prozessor inaktiv ist und die Anzeige des Synchronisierungszustands des Software-Thread, erzeugt der Zuteilungsüberwacher einen Datensatz, der die Inaktivität des Prozessors dem Software-Thread und dem angezeigten Synchronisierungszustand zuschreibt.
  16. Computerprogrammelement, das Computerprogrammcode aufweist, um im Falle, dass es auf ein Computersystem geladen und darauf ausgeführt wird, den Computer zu veranlassen, die Schritte eines Verfahrens wie in Anspruch 15 beansprucht durchzuführen.
DE112012000245T 2011-01-10 2012-01-05 Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung Pending DE112012000245T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11150483.3 2011-01-10
EP11150483 2011-01-10
PCT/IB2012/050051 WO2012095762A1 (en) 2011-01-10 2012-01-05 Activity recording system for a concurrent software environment

Publications (1)

Publication Number Publication Date
DE112012000245T5 true DE112012000245T5 (de) 2013-08-14

Family

ID=46506805

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012000245T Pending DE112012000245T5 (de) 2011-01-10 2012-01-05 Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung

Country Status (6)

Country Link
US (1) US9600348B2 (de)
JP (1) JP5889332B2 (de)
CN (1) CN103339606B (de)
DE (1) DE112012000245T5 (de)
GB (1) GB2501434B (de)
WO (1) WO2012095762A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment
US9081629B2 (en) * 2013-05-19 2015-07-14 Frank Eliot Levine Excluding counts on software threads in a state
US20150052400A1 (en) 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US9465721B2 (en) * 2013-08-19 2016-10-11 Microsoft Technology Licensing, Llc Snapshotting executing code with a modifiable snapshot definition
CA2831134A1 (en) * 2013-10-24 2015-04-24 Ibm Canada Limited - Ibm Canada Limitee Identification of code synchronization points
JP6152786B2 (ja) * 2013-11-29 2017-06-28 富士通株式会社 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法
WO2018051166A1 (en) * 2016-09-15 2018-03-22 Pratik Sharma Application level statistics
US10379928B2 (en) 2017-06-28 2019-08-13 International Business Machines Corporation Preventing software component timer processing issues
CN110515813A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 基于shell脚本的oracle监控系统及方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
JPH09179754A (ja) * 1995-12-21 1997-07-11 Mitsubishi Electric Corp タスク監視装置及びタスク監視方法
US6002872A (en) * 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
JP2001109538A (ja) * 1999-10-08 2001-04-20 Nec Eng Ltd パワーマネジメントシステム
US6728955B1 (en) 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6546443B1 (en) 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
US6996745B1 (en) 2001-09-27 2006-02-07 Sun Microsystems, Inc. Process for shutting down a CPU in a SMP configuration
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7225309B2 (en) 2003-10-09 2007-05-29 International Business Machines Corporation Method and system for autonomic performance improvements in an application via memory relocation
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US20050081206A1 (en) * 2003-10-14 2005-04-14 Armstrong Douglas R. Methods and apparatus for profiling threaded programs
US7617499B2 (en) 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
JP2005284749A (ja) 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7567963B2 (en) * 2004-06-28 2009-07-28 Intel Corporation Thread synchronization with lock inflation methods and apparatus for managed run-time environments
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
US8095921B2 (en) 2005-10-12 2012-01-10 International Business Machines Corporation Identifying code that wastes time switching tasks
US7474991B2 (en) 2006-01-19 2009-01-06 International Business Machines Corporation Method and apparatus for analyzing idle states in a data processing system
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
US8392932B2 (en) 2008-06-25 2013-03-05 Panasonic Corporation Information processing device for causing a processor to context switch between threads including storing contexts based on next thread start position
CN101334742B (zh) * 2008-08-05 2011-06-01 中国科学院软件研究所 一种Java EE应用服务器并发处理方法
CN101403982B (zh) * 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20120180057A1 (en) 2011-01-10 2012-07-12 International Business Machines Corporation Activity Recording System for a Concurrent Software Environment
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"IBM Monitoring and Diagnostic Tools for Java - Health Centre" (siehe publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jsp)
"Java Lock Monitor" (JLM) (siehe perfinsp.sourceforge.net/jlm.html)
perfinsp.sourceforge.net/tprof.html

Also Published As

Publication number Publication date
JP5889332B2 (ja) 2016-03-22
CN103339606A (zh) 2013-10-02
US9600348B2 (en) 2017-03-21
GB2501434B (en) 2013-12-25
GB2501434A (en) 2013-10-23
GB201313798D0 (en) 2013-09-18
WO2012095762A1 (en) 2012-07-19
JP2014505294A (ja) 2014-02-27
CN103339606B (zh) 2017-04-26
US20130227586A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
DE112012000245T5 (de) Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung
Yoon et al. Dbsherlock: A performance diagnostic tool for transactional databases
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US9081629B2 (en) Excluding counts on software threads in a state
DE102012215216B4 (de) Verbesserte Erfassung von Speicherauszugsdaten von Hardwareausfallmodi
Dias et al. Automatic Performance Diagnosis and Tuning in Oracle.
Beyer et al. Benchmarking and resource measurement
DE112012002545B4 (de) Verwalten von Arbeitslasten in einem Mehrprozessor-Computersystem
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
US20120180057A1 (en) Activity Recording System for a Concurrent Software Environment
DE3611223A1 (de) Verfahren und vorrichtung zum verhindern einer blockierung in einem datenbank-verwaltungssystem
DE2244402A1 (de) Datenverarbeitungsanlage
DE10050684A1 (de) Verfahren und System zur periodischen Ablaufverfolgung für die Echtzeitgenerierung von Segmenten von Aufrufstack-Bäumen
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
US9471458B2 (en) Synchronization activity recording system for a concurrent software environment
DE202017106569U1 (de) Analyse grossangelegter Datenverarbeitungsaufträge
DE60314742T2 (de) System und verfahren zur überwachung eines computers
DE112011100168T5 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE112019000189T5 (de) Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung
Kalmegh et al. Analyzing query performance and attributing blame for contentions in a cluster computing framework
DE112016004038T5 (de) Referenzstundenüberwachung für maschinenwartung
Zellag et al. Consad: a real-time consistency anomalies detector
Bell Computer performance analysis-Measurement objectives and tools
JP2008269578A (ja) 競合部分処理検出方法、装置及びコンピュータプログラム
DE102020123911A1 (de) Synchronisierung des verhaltens mehrerer instrumente mithilfe von aufträgen und zwischenzielen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009500000

Ipc: G06F0011300000

Effective date: 20130710

R016 Response to examination communication
R016 Response to examination communication
R084 Declaration of willingness to licence