DE112011101759T5 - Sampling von Leerlauftransitionen - Google Patents
Sampling von Leerlauftransitionen Download PDFInfo
- Publication number
- DE112011101759T5 DE112011101759T5 DE112011101759T DE112011101759T DE112011101759T5 DE 112011101759 T5 DE112011101759 T5 DE 112011101759T5 DE 112011101759 T DE112011101759 T DE 112011101759T DE 112011101759 T DE112011101759 T DE 112011101759T DE 112011101759 T5 DE112011101759 T5 DE 112011101759T5
- Authority
- DE
- Germany
- Prior art keywords
- thread
- processor
- allocated
- monitored
- computer
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
- Technisches Fachgebiet
- Die Erfindung betrifft allgemein eine Rechenumgebung. Die Offenbarung betrifft insbesondere Sampling-Technologie (Mustererstellungstechnologie).
- Hintergrund
- Bei Anwendungs-Profiling-Werkzeugen wird entweder Zeit-basierte oder Hardwareereignis-basierte Sampling-Technologie verwendet, um die spezifische Nutzung von Betriebsmitteln festzustellen. Ein aktueller Ansatz besteht darin, periodisch einen Interrupt zu erzeugen, um eines Musters (Sample) zu nehmen. Während des Interrupts werden Musterdaten gesammelt und aufgezeichnet. Beispiele für die Musterdaten sind der unterbrochene Prozess/Thread, die gerade ausgeführte Anweisung oder optional die Datenadresse, auf die zur Zeit des Musters zugegriffen wird. Zu einem späteren Zeitpunkt werden die gesammelten Daten aggregiert, und es werden Berichte erstellt, die die Musterverteilung nach Adresse, Symbol, Prozess usw. zeigen. Verschiedene Werkzeuge basieren auf dieser Technologie. Der vollständige Ausführungskontext des Musters wird üblicherweise nicht aufgezeichnet und steht nicht in Berichten zur Verfügung.
- Es wurden Versuche unternommen, diese Technologie durch Erfassen von Aufruflisten zur Zeit des Musters zu verbessern. Mithilfe des vorhandenen Werkzeugsatzes kann entweder versucht werden, die Aufrufliste direkt zu durchlaufen oder in einem separaten (Sampler-)Thread Funktionen aufzurufen, um die Aufrufliste des unterbrochenen Threads zu erhalten. Der Versuch, die Aufrufliste auf der Interrupt-Ebene zu durchlaufen, ist nicht ideal, da einige Anwendungen Listen haben können, die ausgelagert wurden. Außerdem nimmt zum Durchlaufen von Aufruflisten bestimmter Code üblicherweise Speicherzuweisungen vor, die auf der Interrupt-Ebene nicht zulässig sind. Dadurch kann ein Sampling-Thread im Benutzermodus dazu verwendet werden, auf Anforderung die Aufruflisten zu durchlaufen. Bei Mehrprozessorsystemen kann die Anforderung, dass ein separater Thread die Aufrufliste des unterbrochenen Threads erfassen soll, es dem unterbrochenen Thread ermöglichen, zu einem anderen Prozessor zu migrieren und weiter fortzuschreiten, d. h. weiter ausgeführt zu werden, während die Aufrufliste erfasst wird. Die erfasste Aufrufliste spiegelt dann nicht den Status des Threads zum Zeitpunkt seiner Unterbrechung wider.
- Kurzdarstellung
- Bei einem Aspekt der Erfindung wird ein Computerprogrammprodukt bereitgestellt. Das Computerprogrammprodukt enthält ein computerverwendbares Medium mit einem computerlesbaren Programm. Wenn das computerlesbare Programm auf einem Computer ausgeführt wird, veranlasst es den Computer dazu, auf der Grundlage eines Ereignisses ein Muster zu erstellen. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer weiter dazu, mithilfe eines Zuteilungsmonitors (dispatch monitor) einen nächsten zugeteilten überwachten Thread zu erkennen, der auf einem aktuellen Prozessor zugeteilt wird. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer überdies dazu, eine Prozessoraffinität des nächsten zugeteilten überwachten Threads so einzustellen, dass der nächste zugeteilte überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer außerdem dazu, mithilfe eines auf dem aktuellen Prozessor laufenden Sampler-Threads („Musternehmer-Thread”) eine Aufrufliste eines nächsten zugeteilten überwachten Threads abzurufen, nachdem die Prozessoraffinität des nächsten zugeteilten überwachten Threads auf den aktuellen Prozessor eingestellt wurde. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer überdies dazu, die Prozessoraffinität des nächsten zugeteilten überwachten Threads wiederherzustellen, nachdem die Aufrufliste des nächsten zugeteilten, überwachten Threads abgerufen wurde. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer dazu, die Aufrufliste für den nächsten zugeteilten überwachten Thread aufzuzeichnen.
- Bei einem anderen Aspekt der Erfindung wird ein Prozess bereitgestellt. Der Prozess erstellt ein Muster auf der Grundlage eines Ereignisses. Der Prozess erkennt weiter mithilfe eines Zuteilungsmonitors einen nächsten zugeteilten überwachten Thread, der durch einen aktuellen Prozessor zugeteilt wird. Der Prozess stellt überdies die Prozessoraffinität des nächsten zugeteilten überwachten Threads so ein, dass der nächste zugeteilte überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Der Prozess ruft außerdem mithilfe eines Sampler-Threads, der auf dem aktuellen Prozessor läuft, eine Aufrufliste eines nächsten zugeteilten überwachten Threads ab, nachdem die Prozessoraffinität des nächsten zugeteilten überwachten Threads auf den aktuellen Prozessor eingestellt wurde. Der Prozess stellt überdies die Prozessoraffinität des nächsten zugeteilten überwachten Threads wieder her, nachdem die Aufrufliste des nächsten zugeteilten, überwachten Threads abgerufen wurde. Der Prozess zeichnet außerdem die Aufrufliste für den nächsten zugeteilten überwachten Thread auf.
- Bei noch einem anderen Aspekt der Erfindung wird ein System bereitgestellt. Das System enthält einen aktuellen Prozessor, der auf der Grundlage eines Ereignisses ein Muster erstellt. Das System enthält weiter ein Betriebssystem, das (i) mithilfe eines Zuteilungsmonitors einen nächsten zugeteilten überwachten Thread erkennt, der durch den aktuellen Prozessor zugeteilt wird, und (ii) die Prozessoraffinität des nächsten zugeteilten überwachten Threads so einstellt, dass der nächste zugeteilte überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Außerdem enthält das System einen Profiler, der (i) mithilfe eines Sampler-Threads, der so konfiguriert ist, dass er nur auf dem aktuellen Prozessor läuft, eine Aufrufliste eines nächsten zugeteilten überwachten Threads abruft, nachdem die Prozessoraffinität des nächsten zugeteilten überwachten Threads auf den aktuellen Prozessor eingestellt wurde, (ii) die Prozessoraffinität des nächsten zugeteilten überwachten Threads wieder herstellt, nachdem die Aufrufliste des nächsten zugeteilten, überwachten Threads abgerufen wurde, und (iii) die Aufrufliste für den nächsten zugeteilten überwachten Thread aufzeichnet.
- Bei einem anderen Aspekt der Erfindung wird ein Computerprogrammprodukt bereitgestellt. Das Computerprogrammprodukt enthält ein computerverwendbares Medium mit einem computerlesbaren Programm. Wenn das computerlesbare Programm auf einem Computer ausgeführt wird, veranlasst es den Computer dazu, auf der Grundlage eines Ereignisses ein Muster zu erstellen. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer weiter dazu, mithilfe eines Zuteilungsmonitors einen letzten zugeteilten überwachten Thread zu erkennen, der durch einen aktuellen Prozessor zugeteilt wird. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer überdies dazu, die Prozessoraffinität des letzten zugeteilten überwachten Threads so einzustellen, dass der letzte zugeteilte überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer außerdem dazu, mithilfe eines auf dem aktuellen Prozessor laufenden Sampler-Threads eine Aufrufliste eines letzten zugeteilten überwachten Threads abzurufen, nachdem die Prozessoraffinität des letzten zugeteilten überwachten Threads auf den aktuellen Prozessor eingestellt wurde. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer überdies dazu, die Prozessoraffinität des letzten zugeteilten überwachten Threads wiederherzustellen, nachdem die Aufrufliste des letzten zugeteilten, überwachten Threads abgerufen wurde. Wenn das computerlesbare Programm auf dem Computer ausgeführt wird, veranlasst es den Computer außerdem dazu, die Aufrufliste für den letzten zugeteilten überwachten Thread aufzuzeichnen.
- Kurze Beschreibung der Zeichnungen
- Im Folgenden werden Ausführungsformen der Erfindung ausschließlich beispielhaft beschrieben, und zwar unter Bezugnahme auf die begleitenden Zeichnungen, die Folgendes zeigen:
-
1 veranschaulicht ein Sampling-System gemäß einer Ausführungsform der vorliegenden Erfindung, das Muster von Leerlauftransitionen nimmt. -
2A veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Interrupt-Handler für einen to_idle_thread (letzter Thread vor dem Leerlauf) verwendet werden kann. -
2B veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Interrupt-Handler für einen from_idle_thread (erster Thread nach dem Leerlauf) verwendet werden kann. -
3A veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Zuteilungsüberwachungscode in dem Scheduler für einen to_idle_thread verwendet werden kann. -
3B veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Zuteilungsüberwachungscode in dem Scheduler für einen from_idle_thread verwendet werden kann. -
4 veranschaulicht einen Prozess zur Benachrichtigung des Profilers gemäß einer Ausführungsform der vorliegenden Erfindung. -
5 veranschaulicht gemäß einer Ausführungsform der vorliegenden Erfindung einen Prozess für das Interrupt-Backend, das bei dem Prozessblock in eine Warteschlange eingereiht ist. -
6 veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Profiler ausgeführt wird, nachdem dieser als Folge des Prozessblocks aktiviert wurde. -
7 veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, bei dem der Profiler das Betriebssystem darüber informiert, dass das Muster fertig gestellt wurde. -
8A veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der für das Sampling von Leerlauftransitionen für einen from_idle_thread verwendet werden kann. -
8B veranschaulicht einen Prozess gemäß einer Ausführungsform der vorliegenden Erfindung, der für das Sampling von Leerlauftransitionen für einen to_idle_thread verwendet werden kann. -
9 veranschaulicht ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung, das Muster von Leerlauftransitionen nimmt. - Ausführliche Beschreibung
- Ein Verfahren und System verwenden Sampling-Technologie, um festzustellen, warum ein oder mehrere Prozessoren nicht ausgelastet sind. Es kann sehr schwierig sein, festzustellen, warum eine auf dem Prozessor oder den Prozessoren laufende Anwendung nicht skaliert wird. Bei einigen Umgebungen, besonders denjenigen, die Transaktionsverarbeitung unterstützen, ist es wichtig, die maximale Transaktionsrate festzustellen und das System dazu zu veranlassen, alle Verarbeitungsbetriebsmittel in vollem Umfang zu nutzen. Wenn die maximale Transaktionsrate erreicht wird, aber nicht alle Prozessoren ausgelastet sind, liegt eine Art von Engpass vor, der die vollständige Auslastung verhindert. Durch Feststellen des Kontextes für den letzten Thread, der ausgeführt wurde, bevor ein Prozessor in den Leerlauf ging, d. h. der to_idle_thread und/oder des Kontextes für den ersten Thread, der ausgeführt wird, sobald der Prozessor beschäftigt ist, d. h. der from_idle_thread, erhält man möglicherweise Informationen, die dazu beitragen, die Ursache des Engpasses festzustellen.
- Ein Ansatz besteht darin, alle Listen für diejenigen Threads zu erfassen, die zu einem Engpass beigetragen haben könnten. Das heißt zum Beispiel, der Samplingcode könnte einfach Aufruflisten nur für diejenigen Threads beschaffen, die kürzlich auf dem Prozessor gelaufen sind, der sich zur Zeit des Musters im Leerlauf befindet. Dies beinhaltet, zu verfolgen, welcher Thread auf welchem Prozessor gelaufen ist, um die Aufruflisten für die richtigen Threads zu erfassen. Diese Threads können jedoch migrieren und auf anderen Prozessoren ausgeführt werden, während Aufruflisten erfasst werden.
- Alle Prozessoren beschäftigt zu halten, mit Ausnahme desjenigen, dessen Aufrufliste erfasst wird, kann möglicherweise eine Thread-Migration verhindern. Dies könnte dadurch erreicht werden, dass man Sampler-Threads auf diesen Prozessoren einen Spin-Vorgang ausführen lässt, bis die Aufrufliste für den interessierenden Thread vorliegt, aber dies könnte die gesamte Anwendungsleistung beeinträchtigen.
- Indem stattdessen der interessierende Thread an der Migration zu einem anderen Prozessor gehindert wird, was bei einer Ausführungsform durchgeführt werden kann, indem seine Prozessoraffinität so eingestellt wird, dass er nur auf einem Prozessor laufen kann, müssen die anderen Prozessoren keine Spin-Vorgänge ausführen, so dass die anderen Prozessoren frei für das weitere Ausführen der Anwendung sind. Durch das Verhindern der Thread-Migration tritt daher nur eine minimale Verschlechterung der Anwendungsleistung auf. Anstatt die Leistung der Anwendung, deren Profil erstellt wird, stark zu beeinträchtigen, indem alle Sampler-Threads aktiviert werden, d. h. einer pro Prozessor, und Spin-Vorgänge ausführen, bis die Aufruflisten abgerufen sind, könnten ein Verfahren, System und Computerprogrammprodukt die Prozessoraffinität so einstellen, dass Thread-Migration bei minimaler Beeinträchtigung der Leistung der Anwendung, deren Profil erstellt wird, verhindert wird und außerdem das Sampling von Leerlauftransitionen ermöglicht wird. Bei einer Ausführungsform wird für bereits angesehene Aufruflisten lediglich ein Zählwert des Vorkommens (occurrence count) inkrementiert.
- To_idle-Verarbeitung und/oder from_idle-Verarbeitung können verwendet werden, um die Prozessoraffinität so einzustellen, dass Thread-Migration verhindert wird. Es wird ein Sampling-Ansatz verwendet.
-
1 veranschaulicht ein Sampling-System100 gemäß einer Ausführungsform der vorliegenden Erfindung, das Muster von Leerlauftransitionen nimmt. Das Sampling-System100 enthält eine Anwendung102 , die mit einem Profiler104 interagiert, der ein Profil der Anwendung102 erstellt. Der Profiler104 interagiert mit einem Betriebssystem106 . Der Profiler104 trägt dazu bei, festzustellen, warum ein Prozessor nicht ausgelastet ist, d. h., wodurch verursacht wird, dass ein Prozessor im Leerlauf ist, anstelle nützliche Arbeit zu verrichten. Die Verarbeitung basiert auf Sampling, wenn die Prozessoren im Leerlauf sind. Da Aufruflisten zur Zeit des Musters erfasst werden, wird der Code, der potenziell zu dem Leerlaufzustand beiträgt, genau festgestellt. Der Ort des Codes sowie die Aufrufsequenz, die zum Vorhandensein des Codes an dieser Stelle führte, werden festgestellt. - Gleichzeitig mit dem Sampling überwacht der Scheduler
108 Thread-Zuteilungen mithilfe von Zuteilungsüberwachungscode (dispatch monitoring code). Dieser Code ist entweder Teil des Betriebssystems oder wird mithilfe eines Bauelementtreibers oder einer Kernel-Erweiterung hinzugefügt. Es können auch Daten hinsichtlich des to_thread und/oder from_thread gespeichert werden. Asynchron zueinander laufen einige Vorgänge ab. Der Zuteilungsüberwachungscode überwacht Thread-Zuteilungen. Weiter werden von den Prozessoren mit konstanter Häufigkeit Muster erstellt, d. h. Zeit-basiert oder bei jedem n-ten Auftreten eines Ereignisses, d. h. Ereignis-basiert. Außerdem „lauschen” Sampler-Threads auf Befehle, die sie dazu veranlassen würden, die Aufrufliste eines interessierenden Threads abzurufen, was von dem Profiler104 ausgeführt wird. Ein Sampler-Thread ist ein Profiler-Thread. Es können zahlreiche Sampler-Threads verwendet werden, da eine Vielzahl von Prozessoren verwendet werden kann. Jeder Sampler-Thread hat eine Affinität zu einem einzigen Prozessor. Sampler-Threads können Threads mit einer sehr hohen Priorität sein, so dass sie sofort ausgeführt werden, wenn sie das Signal erhalten, Arbeit zu verrichten, wie beispielsweise die Aufrufliste eines Ziel-Threads abzurufen. Der Ziel-Thread ist der Thread, dessen Aufrufsliste abgerufen werden soll. Überdies ist ein Ziel-Prozessor der Prozessor, auf dem der Ziel-Thread ausgeführt wurde und auf dem die Affinität so eingestellt ist, dass der Ziel-Thread auf diesem Prozessor verbleibt, bis seine Aufrufliste erfasst wurde. - Sobald als Ergebnis des Samplings entweder des to_idle oder des from_idle eine Feststellung getroffen wird, ist die Aufrufliste eines Ziel-Threads abzurufen. Es wird verhindert, dass der Ziel-Thread während dieser Zeit in irgendeiner Weise fortschreitet, es sei denn, ein Fortschreiten wäre für den Abruf der Aufrufliste erforderlich. Mit anderen Worten wird der Ziel-Thread an seinem Platz gehalten, bis die Aufrufliste erfasst ist. Danach kann der Ziel-Thread fortgesetzt werden. Da Aufruflisten von Profiler-Sampler-Threads erfasst werden, könnte der Ziel-Thread potenziell auf einem anderen verfügbaren Prozessor zu laufen beginnen. Zu dem Zeitpunkt, an dem der Sampler-Thread mit dem Erfassen der Aufrufliste beginnt, befindet sich der Ziel-Thread möglicherweise nicht mehr an dem Punkt, an dem ein Muster erstellt wurde, und die Aufrufliste würde nicht genau widerspiegeln, wo sich der Ziel-Thread zur Zeit des Musters befand.
- Anstatt die Anwendungsleistung durch „Wegboxen” des Ziel-Threads von anderen Prozessoren als dem Ziel-Prozessor deutlich zu behindern (d. h., alle anderen Prozessoren mit nutzloser Arbeit zu beschäftigen, um sie Spin-Vorgänge ausführen zu lassen, so dass sie für eine Ausführung des Ziel-Threads nicht zur Verfügung stehen), wird die Gruppe der Prozessoren, auf denen der Ziel-Thread laufen könnte, auf den Ziel-Prozessor beschränkt. Mit anderen Worten führen die verbleibenden Prozessoren keine Spin-Vorgänge aus und können weiterhin echte Arbeit verrichten. Nur der Ziel Prozessor ist betroffen, während die Aufrufliste des Ziel-Threads abgerufen wird. Sobald die Aufrufliste des Ziel-Threads abgerufen wurde, kann der Ziel-Thread wieder auf jedem verfügbaren Prozessor laufen. Die Prozessoraffinität ist so eingestellt, dass der Ziel-Thread nur auf dem einen Prozessor laufen kann, zu dem er eine Affinität hat.
- Das Sampling-System
100 kann über eine Vielzahl von Prozessoren verfügen. Beispielsweise kann das Sampling-System100 über einen ersten Prozessor112 , einen zweiten Prozessor114 , ..., und einen n-ten Prozessor116 verfügen. Zu einer gegebenen Zeit kann auf jedem Prozessor nur ein Thread laufen. Dieser Thread kann jedoch potenziell auf einem anderen Prozessor und zu einer anderen Zeit laufen. Bei dem Sampling-System100 erzeugen ein oder mehrere Prozessoren entweder Zeit- oder Ereignis-basiert Interrupts. Ein Interrupt kann ein Muster einleiten. Folglich kann jeder der Prozessoren unabhängig von dem Status jedes anderen Prozessors einen Interrupt erzeugen, z. B. unabhängig davon, ob sich dieser im Leerlauf befindet oder nicht. Der Interrupt für jeden Prozessor wird durch Hardware erzeugt und durch einen Interrupt-Handler110 gehandhabt, der feststellt, ob der Prozessor, auf dem der Interrupt auftrat, sich im Leerlauf befindet, d. h., ob auf diesem speziellen Prozessor kein Thread ausgeführt wird, oder ob er sich nicht im Leerlauf befindet. Der Interrupt-Handler110 leitet das Erfassen von Aufruflisten ein. Darüber hinaus kann der Interrupt-Handler einen Profiler-Sampler-Thread benachrichtigen oder diesem ein Signal senden. Bei einer Ausführungsform und wenn der Interrupt-Handler110 feststellt, dass ein bestimmter Prozessor sich im Leerlauf befindet, kann der Interrupt-Handler110 einem Scheduler108 ein Flag wie beispielsweise ein Flag „Zeitverzögerte Verarbeitung” senden, der dann das Ausführen eines Sampler-Threads auf diesem speziellen Prozessor einplanen kann oder auch nicht, um ein Muster des Ziel-Threads zu nehmen. Um während der Mustererstellung Thread-Migration zu verhindern, kann die Prozessoraffinität eines Threads zu einem bestimmten Prozessor festgelegt werden. Für einen from_idle-Thread legt der Scheduler108 die Prozessoraffinität fest. Für einen to_idle-Thread können der Interrupt-Handler110 oder der Profiler104 die Prozessoraffinität festlegen. - Während der from_idle-Verarbeitung kann eine Benachrichtigung von dem Scheduler
108 an den Profiler104 gesendet werden. Der erste interessierende überwachte Thread, der aktiviert und ausgeführt wird, nachdem ein Prozessor sich im Leerlauf befindet, ist wahrscheinlich der Thread, der den Engpass verursacht. Während das System läuft, wartet der Zuteilungsüberwachungscode darauf, mitgeteilt zu bekommen, dass er den nächsten interessierenden Thread speichern soll, der ausgeführt wird, z. B. indem er das Setzen des Flag „Zeitverzögerte Verarbeitung” beobachtet. Der Samplingcode teilt dem Zuteilungsüberwachungscode dies mit, indem er nach eines Musters, bei der sich der Prozessor im Leerlauf befindet, ein Flag „Zeitverzögerte Verarbeitung” sendet/setzt. Der Zuteilungsüberwachungscode speichert den ersten interessierenden/überwachten Thread, der läuft, nachdem bei einem vorhergehenden Muster entdeckt wurde, dass der Prozessor sich im Leerlauf befindet. Zu derselben Zeit, in der Muster anfallen, wird eine Feststellung getroffen, ob der Prozessor sich im Leerlauf befindet oder nicht. Wenn der Prozessor beschäftigt ist, wird nichts unternommen. Wenn der Prozessor sich im Leerlauf befindet, wird das Flag „Zeitverzögerte Bearbeitung” gesetzt, damit der Zuteilungsüberwachungscode mit der Überwachung von Thread-Zuteilungen beginnt und den nächsten interessierenden/überwachten Thread speichert, der auf dem Prozessor eingeplant werden soll. Der Zuteilungsüberwachungscode entfernt anschließend das Flag „Zeitverzögerte Bearbeitung”. Das Muster wird dann fertig gestellt. - Dieselbe Verarbeitung kann auf mehr als einem Prozessor zurzeit stattfinden. Wenn sich beispielsweise zwei Prozessoren im Leerlauf befinden und zufällig ungefähr zu derselben Zeit interessierende Threads zuteilen, dann können zwei Sampler-Threads zu derselben Zeit Aufruflisten abrufen.
- Überdies kann eine to_idle-Benachrichtigung von dem Interrupt-Handler
110 an den Profiler104 gesendet werden. Der letzte interessierende/überwachte Thread, der auf einem Prozessor läuft, bevor dieser in den Leerlauf geht, ist wahrscheinlich von einem Konflikt einiger Betriebsmittel betroffen. Beispielsweise schreitet der Thread möglicherweise nicht fort, weil er auf ein Betriebsmittel wartet, hinsichtlich dessen ein Konflikt besteht. Nach einem to_idle thread stehen keine anderen Threads zur Ausführung zur Verfügung. Während das System läuft, merkt sich der Zuteilungsüberwachungscode den letzten interessierenden Thread, der auf jedem Prozessor ausgeführt wurde. Da er sich den Thread, den er sich jetzt merkt, vorher auf einem anderen Prozessor gemerkt haben könnte, wird dieser von der Merkliste des anderen Prozessors entfernt. Gleichzeitig fallen periodisch Muster an, die entweder Zeit- oder Ereignis-basiert sind. Bei jedem Muster wird eine Feststellung darüber getroffen, ob der Prozessor sich im Leerlauf befindet oder nicht. Wenn der Prozessor beschäftigt ist, wird nichts unternommen. Wenn der Prozessor sich im Leerlauf befindet, wird eine Feststellung darüber getroffen, ob ein interessierender überwachter Thread zuletzt auf dem Prozessor gelaufen ist. Wenn ein interessierender Thread zuletzt auf dem Prozessor gelaufen ist, dann wird die Prozessoraffinität des Threads auf den aktuellen Prozessor eingestellt. - Bei einer Ausführungsform wird nur der from_idle_thread verwendet. Bei einer alternativen Ausführungsform wird nur der to_idle_thread verwendet. Bei noch einer anderen alternativen Ausführungsform werden sowohl der from_idle_thread als auch der to_idle_thread verwendet.
- Bei einer anderen Ausführungsform kann eine Komponente wie beispielsweise ein Zuteilungsmonitor in Verbindung mit dem Scheduler
108 verwendet werden. Der Zuteilungsmonitor kann Teil des Betriebssystems106 sein oder kann als Teil einer Kernel-Erweiterung oder eines Bauelementtreibers hinzugefügt werden. Bei einer anderen Ausführungsform kann eine Komponente wie beispielsweise ein Interrupt-Backend-Worker, Offlevel-Processing-Worker, Interrupt-Backend-Worker oder Ähnliches als Teil einer Kernel-Erweiterung oder eines Bauelementtreibers hinzugefügt werden. Die Komponente wird benötigt, da die Gruppe von Aktionen, die auf Interrupt-Ebene ausgeführt werden kann, begrenzt ist, und ein Teil der Arbeit bis zu einem späteren Zeitpunkt verzögert werden muss, wenn der Interrupt-Handler beendet ist. - Der Profiler
104 kann die Aufrufliste, d. h. den Ausführungskontext, abrufen. Der Profiler104 kann weiter die Prozessoraffinität wiederherstellen. -
2A veranschaulicht einen Prozess200 gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Interrupt-Handler110 für einen to_idle_thread verwendet werden kann. Bei einem Prozessblock202 stellt der Prozess200 eine ID eines unterbrochenen Prozesses („PID”) und/oder eines unterbrochenen Threads („TID”) fest. Bei einem Entscheidungsblock204 stellt der Prozess200 weiter fest, ob der Mikroprozessor sich im Leerlauf befindet. Wenn der Mikroprozessor sich nicht im Leerlauf befindet, schreitet der Prozess200 zu einem Prozessblock210 fort, um den unterbrochenen Thread fortzusetzen. Wenn sich alternativ der Mikroprozessor im Leerlauf befindet, schreitet der Prozess200 zu einem Entscheidungsblock206 fort, um festzustellen, ob eine gespeicherte to_idle-PID, die von dem Zuteilungsüberwachungscode gespeichert wurde, von Interesse ist. Wenn die gespeicherte to_idle-PID nicht von Interesse ist, schreitet der Prozess200 zu dem Prozessblock210 fort, um in dem unterbrochenen Thread fortzufahren. Wenn alternativ die gespeicherte to_idle-PID von Interesse ist, schreitet der Prozess200 zu einem Prozessblock208 fort, um den Profiler zu benachrichtigen. Der Prozess200 schreitet dann zu einem Prozessblock210 fort, um den unterbrochenen Thread fortzusetzen. -
2B veranschaulicht einen Prozess250 gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Interrupt-Handler110 für einen from_idle_thread verwendet werden kann. Bei einem Prozessblock252 stellt der Prozess250 eine ID eines unterbrochenen Prozesses (PID = interrupted process ID) oder eine ID eines unterbrochene Threads (TID = unterbrocher Thread) fest. Bei einem Entscheidungsblock254 stellt der Prozess250 weiter fest, ob der Mikroprozessor sich im Leerlauf befindet. Wenn der Mikroprozessor sich nicht im Leerlauf befindet, schreitet der Prozess250 zu einem Prozessblock258 fort, um den unterbrochenen Thread fortzusetzen. Wenn sich alternativ der Mikroprozessor im Leerlauf befindet, schreitet der Prozess250 zu einem Entscheidungsblock255 fort, um festzustellen, ob das Flag „Zeitverzögerte Bearbeitung” schon gesetzt wurde. Wenn das Flag „Zeitverzögerte Bearbeitung” schon gesetzt wurde, schreitet der Prozess250 zu dem Prozessblock258 fort, um den unterbrochenen Thread fortzusetzen. Wenn das Flag „Zeitverzögerte Bearbeitung” noch nicht gesetzt wurde, schreitet der Prozess250 zu einem Prozessblock256 fort, um ein Flag „Zeitverzögerte Bearbeitung” für den Scheduler108 zu setzen. Der Prozess250 schreitet dann zu einem Prozessblock258 fort, um den unterbrochenen Thread fortzusetzen. -
3A veranschaulicht einen Prozess300 gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Scheduler108 für einen to_idle_thread verwendet werden kann. Bei einem Entscheidungsblock302 stellt der Prozess300 fest, ob ein ausgehender Thread existiert, der von Interesse ist. Wenn kein ausgehender Thread existiert, der von Interesse ist, schreitet der Prozess300 zu einem Prozessblock306 fort, um den Thread-Wechsel (thread switch) fortzusetzen. Wenn ein ausgehender Thread existiert, der von Interesse ist, schreitet der Prozess300 zu einem Prozessblock304 fort, um die ausgehende PID und/oder TID zu speichern. Der Prozess300 schreitet dann zu einem Prozessblock305 fort, um die ausgehende PID/TID aus der gespeicherten PID/TID-Liste des anderen Prozessors zu entfernen. Der Prozess300 schreitet dann zu dem Prozessblock306 fort, um den Thread-Wechsel fortzusetzen. -
3B veranschaulicht einen Prozess350 gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Scheduler108 für einen from_idle_thread verwendet werden kann. Bei einem Entscheidungsblock352 stellt der Prozess350 fest, ob das Flag „Zeitverzögerte Verarbeitung” gesetzt wurde. Wenn das Flag „Zeitverzögerte Bearbeitung” nicht gesetzt wurde, schreitet der Prozess350 zu einem Prozessblock360 fort, um den Thread-Wechsel fortzusetzen. Wenn alternativ das Flag „Zeitverzögerte Bearbeitung” gesetzt wurde, schreitet der Prozess350 zu einem Entscheidungsblock354 fort, um festzustellen, ob ein eingehender Thread existiert, der von Interesse ist. Wenn kein eingehender Thread existiert, der von Interesse ist, schreitet der Prozess350 zu einem Prozessblock360 fort, um den Thread-Wechsel fortzusetzen. Wenn alternativ ein eingehender Thread existiert, der von Interesse ist, schreitet der Prozess350 zu einem Prozessblock356 fort, um das Flag „Zeitverzögerte Bearbeitung” zurückzusetzen. Der Prozess350 schreitet dann zu einem Prozessblock358 fort, um den Profiler104 zu benachrichtigen. Der Prozess350 schreitet dann weiter zu dem Prozessblock350 fort, um den Thread-Wechsel fortzusetzen. -
4 veranschaulicht einen Prozess400 zur Benachrichtigung des Profilers104 gemäß einer Ausführungsform der vorliegenden Erfindung. Bei einem Entscheidungsblock402 stellt der Prozess400 fest, ob ein Profiler zu benachrichtigen ist. Wenn kein Profiler zu benachrichtigen ist, schreitet der Prozess400 zu einem Abschlussblock408 fort. Wenn alternativ ein Profiler zu benachrichtigen ist, schreitet der Prozess400 zu einem Prozessblock404 fort, um die Benachrichtigungsdaten zu sichern und/oder zu speichern. Der Prozess400 schreitet zu einem Prozessblock406 fort, um das Interrupt-Backend in eine Warteschlange einzureihen. Als Folge davon wird eine Arbeitsaufgabe durch das Betriebssystem106 in eine Warteschlange eingereiht. Eine der Informationen in dieser Arbeitsaufgabe ist die Adresse der Worker-Funktion (Arbeitsfunktion), die auszuführen ist, wenn das Interrupt-Backend durch das Betriebssystem106 aus der Warteschlange entfernt wird. Der Prozess400 schreitet dann zu einem Abschlussblock408 fort. -
5 veranschaulicht einen Prozess500 für das Verhalten des Interrupt-Backend in dem Prozessblock406 gemäß einer Ausführungsform der vorliegenden Erfindung. Bei einem Prozessblock502 zeigt der Prozess500 ein ausstehendes Muster an. Weiter schreitet der Prozess500 dann zu einem Prozessblock504 fort, um die Prozessoraffinität des Ziel-Threads auf den aktuellen Prozessor einzustellen. Darüber hinaus schreitet der Prozess500 dann zu einem Prozessblock506 fort, um den Profiler zu aktivieren. -
6 veranschaulicht einen Prozess600 gemäß einer Ausführungsform der vorliegenden Erfindung, der von dem Profiler ausgeführt wird, nachdem diesem als Folge des Prozessblocks506 entweder von dem Interrupt-Handler oder von dem Scheduler ein Signal gesendet wurde. Bei einem Prozessblock602 lässt der Prozess600 den Profiler auf ein Ereignis oder Signal warten. Das Ereignis oder Signal kommt von dem Interrupt-Handler110 , wenn der Thread ein to_idle-Thread ist. Das Ereignis oder Signal kommt von dem Scheduler108 , wenn der Thread ein from_idle-Thread ist. Bei einem Prozessblock604 empfängt der Prozess600 weiter das Signal von dem Betriebssystem106 . Bei einem Prozessblock606 liest der Prozess600 überdies die Musterdaten, die Informationen über den Ziel-Thread enthalten. Bei einem Prozessblock608 fordert der Prozess600 die Aufrufliste für den Ziel-Thread an. Bei einem Prozessblock610 stellt der Prozess600 weiter die Prozessoraffinität des Ziel-Threads wieder her. Bei einem Prozessblock612 verarbeitet der Prozess600 die zurückgegebene Aufrufliste. Bei einer Ausführungsform kann das Verarbeiten der zurückgegebenen Aufrufliste das Speichern der zurückgegebenen Aufrufliste in einem Baum beinhalten. Weiter können ein to_idle-Zählwert und/oder ein from_idle-Zählwert inkrementiert werden. Der to_idle-Zählwert oder der from_idle-Zählwert zeigen an, wie viele Male die Aufrufliste, d. h. die Aufrufsequenz, an dem Blattknoten endete. Bei einem Prozessblock614 informiert der Prozess600 das Betriebssystem106 darüber, dass das Muster fertig gestellt wurde. Der Prozess600 kehrt dann zu dem Prozessblock602 zurück, um auf ein Ereignis oder Signal zu warten. -
7 veranschaulicht einen Prozess700 gemäß einer Ausführungsform der vorliegenden Erfindung, bei dem das Betriebssystem106 darüber informiert wird, dass das Muster fertig gestellt wurde. Bei einem Prozessblock702 wurde ein Muster fertig gestellt. Bei einem Prozessblock704 zeigt der Prozess700 weiter an, dass keine ausstehendes Muster existiert. Auf einem Prozessor mit einem ausstehenden Muster werden keine weiteren Muster eingeleitet. Bei einem Prozessblock706 reinitialisiert der Prozess700 zudem Interrupts. - Bei einer Ausführungsform kann das Melden der Leerlauftransition für den letzten Thread, der überwacht wurde, bevor der Prozessor in den Leerlauf ging, durch Unterhalten eines Zuletzt-zugeteilt-Eintrags in einer jedem Prozessor zugeordneten Tabelle unterstützt werden. Wenn ein Zeit-basiertes Muster anfällt und das Muster einen Prozessor im Leerlauf unterbricht, wird der Sampler-Thread aktiviert und beschafft die Aufrufliste des letzten überwachten Threads. Dessen Aufrufliste wird in einem Baum gespeichert, und der to_idle-Zählwert des Blattknotens der gerade eingefügten Aufrufliste wird inkrementiert. Um eine Aufrufliste des überwachten from_idle-Threads zu erhalten, die dessen Zustand zu der Zeit widerspiegelt, zu der der Leerlauf begann, muss entweder die Aufrufliste zu der Zeit abgerufen werden, wenn der Prozessor sich im Leerlauf befindet, oder zu der Zeit, wenn festgestellt wird, dass der Thread zugeteilt werden soll, bevor die Möglichkeit eintritt, dass der Thread ausgeführt wird. In jedem Fall wird die Aufrufliste für den ersten überwachten Thread, der zugeteilt wird, nachdem ein to_idle-Muster genommen wurde, in einem Baum gespeichert, und der from_idle-Zählwert des Blattknotens der gerade eingefügten Aufrufliste wird inkrementiert. Berichte können erstellt und angezeigt werden.
- Wenn ein Muster genommen und festgestellt wird, dass der Prozessor sich im Leerlauf befindet, zeigt der Samplingcode dem Zuteilungsüberwachungscode an, dass von dem nächsten zugeteilten überwachten Thread auf diesem Prozessor ein Muster erstellt werden muss. Dieser Thread wird in dem jedem Prozessor zugeordneten Überwachungsblock gekennzeichnet und nicht aktualisiert, bevor das nächste Muster genommen wird.
- Wenn der Zuteilungsüberwachungscode erkennt, dass eine Aufrufliste eines from_idle-Threads aufgezeichnet werden sollte und der zuzuteilende Thread ein überwachter Thread ist, dann kann er dafür sorgen, dass stattdessen der Sampler-Thread zugeteilt wird. Bei einer Ausführungsform kann dies ausgeführt werden, indem ein Interrupt-Backend oder Second Level Interrupt Handler mit einem Hinweis in eine Warteschlange eingereiht wird, zu erzwingen, dass der Sampling-Thread die Aufrufliste für den überwachten Thread verarbeitet. Bei einer anderen Ausführungsform kann der Zuteilungsüberwachungscode direkt erzwingen, dass der Sampling-Thread als nächster zugeteilt wird, und zwar mit den Informationen, die dafür benötigt werden, die Aufrufliste für den überwachten Thread zu erhalten. Diese Information könnte durch einfaches Aktualisieren der Kennzeichnung des überwachten from_idle-Threads in einem zugeordneten Musterdatenbereich weitergegeben werden.
- Wenn die Aufrufliste für den from_idle-Thread nicht abgerufen werden kann, bevor dieser zugeteilt wird, dann können Aufrufslisten für aktuell nicht ausgeführte Threads zu einer Zeit abgerufen werden, wenn der Prozessor sich im Leerlauf befindet. Die Listen können auf eine Untergruppe beschränkt sein, wie beispielsweise nur die, die auf dem Prozessor, der sich im Leerlauf befindet, zuletzt zugeteilt wurden. Es kann auch andere Kriterien geben, beispielsweise Ausschließen von Threads, die keine zuvor zurückgegebenen Listen aufweisen, oder von Threads, die als Daemon-Threads erkannt werden. Wenn die Liste des from_idle-Threads zu der Zeit erfasst wurde, als der Prozessor sich im Leerlauf befand, dann kann diese zuvor erfasste Aufrufliste zu einem späteren Zeitpunkt verwendet werden, beispielsweise bei das nächsten Muster. Die Untergruppe von Threads kann auf nur diejenigen beschränkt sein, die auf dem Prozessor, der sich im Leerlauf befindet, zuletzt zugeteilt wurden. Verschiedene Sampler-Threads könnten Listen gleichzeitig abrufen. Mit einer gewissen Menge an Logik ließe sich die Liste der Threads erkennen, deren Aufruflisten abgerufen werden, und um sicherzustellen, dass diese nicht als Folge von Timing-Problemen auf einem anderen Prozessor dupliziert werden.
-
8A veranschaulicht einen Prozess800 gemäß einer Ausführungsform der vorliegenden Erfindung, der für das Sampling von Leerlauftransitionen für einen from_idle_thread verwendet werden kann. Bei einem Prozessblock802 erstellt der Prozess800 ein Muster auf der Grundlage eines Ereignisses. Bei einem Prozessblock804 erkennt der Prozess800 weiter mithilfe eines Zuteilungsmonitors einen nächsten zugeteilten überwachten Thread, der durch einen Prozessor zugeteilt wird, wenn auf der Grundlage des Interrupts festgestellt wird, dass sich der Prozessor im Leerlauf befindet. Zudem stellt bei einem Prozessblock806 der Prozess800 eine Prozessoraffinität des nächsten zugeteilten überwachten Threads so ein, dass der nächste zugeteilte überwachte Thread nur auf dem Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Bei einem Prozessblock808 ruft der Prozess800 mithilfe eines Threads, von dem ein Muster erstellt wurde – bzw. eines vermusterten Threads bzw. Muster-basierenden Threads – und der auf dem Prozessor läuft, eine Aufrufliste eines nächsten zugeteilten überwachten Threads ab, nachdem die Prozessoraffinität des nächsten zugeteilten überwachten Threads auf den Prozessor eingestellt wurde. Bei einem Prozessblock810 stellt der Prozess800 zudem die Prozessoraffinität des nächsten zugeteilten überwachten Threads wieder her, nachdem die Aufrufliste des nächsten zugeteilten überwachten Threads abgerufen wurde. Bei einem Prozessblock812 zeichnet der Prozess800 die Aufrufliste für den nächsten zugeteilten überwachten Thread auf. Die Aufzeichnung kann die Form eines Berichts haben. -
8B veranschaulicht einen Prozess850 gemäß einer Ausführungsform der vorliegenden Erfindung, der für das Sampling von Leerlauftransitionen für einen to_idle_thread verwendet werden kann. Bei einem Prozessblock852 erstellt der Prozess850 ein Muster auf der Grundlage eines Ereignisses. Bei einem Prozessblock854 erkennt der Prozess850 weiter mithilfe eines Zuteilungsmonitors einen letzten zugeteilten überwachten Thread, der durch einen Prozessor zugeteilt wird, wenn auf der Grundlage des Interrupts festgestellt wird, dass sich der Prozessor im Leerlauf befindet. Zudem stellt bei einem Prozessblock806 der Prozess850 eine Prozessoraffinität des letzten zugeteilten überwachten Threads so ein, dass der letzte zugeteilte überwachte Thread nur auf dem Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können. Bei einem Prozessblock858 erhält der Prozess850 durch die Aufrufliste des letzten zugeteilten überwachten Threads weiter einen Ausführungskontext für den letzten zugeteilten überwachten Thread. Bei einem Prozessblock860 stellt der Prozess850 zudem die Prozessoraffinität des letzten zugeteilten überwachten Threads wieder her, nachdem die Aufrufliste des letzten zugeteilten, überwachten Threads abgerufen wurde. Bei einem Prozessblock864 zeichnet der Prozess850 die Aufrufliste für den letzten zugeteilten überwachten Thread auf. Die Aufzeichnung kann die Form eines Berichts haben. - Der hier beschriebene Prozess kann in einem oder mehreren Universal- oder Spezial-Mikroprozessoren realisiert werden. Derartige Mikroprozessoren führen Anweisungen entweder assembliert, compiliert oder auf Maschinenebene aus, um die Prozesse auszuführen. Diese Anweisungen können von Durchschnittsfachleuten geschrieben werden, die die Beschreibung der Figuren befolgen, die den Prozessen entsprechen und auf einem computerlesbaren Medium gespeichert bzw. auf ein solches übertragen werden. Die Anweisungen können außerdem mithilfe von Quellcode oder jedem anderen bekannten computerunterstützten Design-Werkzeug erstellt werden.
-
9 veranschaulicht ein Blockschaltbild eines Systems900 gemäß einer Ausführungsform der vorliegenden Erfindung, das Muster von Leerlauftransitionen nimmt. Bei einer Ausführungsform ist das System900 dafür geeignet, Programmcode zu speichern und/oder auszuführen, und wird mithilfe eines Universalcomputers oder beliebiger anderer Hardware-Äquivalente realisiert. Das System900 umfasst daher einen Prozessor902 (der als ein „Mikroprozessor” bezeichnet werden kann), einen Speicher912 , z. B. Speicher mit wahlfreiem Zugriff (random access memory, „RAM”) und/oder Nur-Lese-Speicher (read only memory, „ROM”), den Profiler104 sowie verschiedene Eingabe-/Ausgabeeinheiten904 . - Der Prozessor
902 ist mit dem Speicher912 entweder direkt oder indirekt durch einen Systembus verbunden. Der Speicher912 kann lokalen Speicher umfassen, der während der tatsächlichen Ausführung des Programmcodes genutzt wird, Massenspeicher und/oder Cachespeicher, in denen mindestens ein Teil des Programmcodes vorübergehend gespeichert wird, damit Code bei der Ausführung weniger häufig aus dem Massenspeicher abgerufen werden muss. - Die Eingabe-/Ausgabe-Einheiten
904 können mit dem System900 direkt oder durch dazwischenliegende Eingabe-/Ausgabe-Controller verbunden sein. Die Eingabe-/Ausgabe-Einheiten904 können weiter eine Tastatur, ein Tastenfeld, eine Maus, ein Mikrofon zum Erfassen von Sprachbefehlen, eine Zeigeeinheit sowie andere Benutzereingabeeinheiten enthalten, die Fachleute erkennen werden. Die Eingabe-/Ausgabe-Einheiten904 können weiter einen Empfänger, Sender, Lautsprecher, Bildschirm, Bildaufnahmesensor, biometrischen Sensor usw. enthalten. Darüber hinaus können die Eingabe-/Ausgabe-Einheiten904 Speichereinheiten wie beispielsweise ein Bandlaufwerk, ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein Compact Disk(„CD”)-Laufwerk, ein Digital Video Disk(„DVD”)-Laufwerk usw. enthalten. - Netzwerkadapter können ebenfalls mit dem System
900 verbunden sein, um das System900 dazu in die Lage zu versetzen, mit anderen Systemen, Remote-Druckern oder Speichereinheiten durch dazwischengeschaltete private oder öffentliche Netzwerke verbunden zu werden. Modems, Kabelmodems und Netzwerkkarten sind nur einige der aktuell zur Verfügung stehenden Arten von Netzwerkadaptern. - Es sollte beachtet werden, dass das hier beschriebene Verfahren und System die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform oder einer Ausführungsform annehmen kann, die sowohl Hardware- als auch Software-Elemente enthält. Wenn Software zur Realisierung des Verfahrens oder Systems verwendet wird, kann die Software Folgendes enthalten, ohne aber darauf beschränkt zu sein: Firmware, residente Software, Mikrocode usw. Obwohl bei der veranschaulichten Ausführungsform aus
9 nur ein Mikroprozessor ausdrücklich gezeigt wird, kann das System mehr als einen Mikroprozessor aufweisen. - Jede der hier beschriebenen Konfigurationen kann mit einer virtuellen Maschine verwendet werden. Eine virtuelle Maschine kann dafür konfiguriert sein, den Aufrufstatus zu verfolgen und diesen Status zurückzugeben, wobei an eine von einer virtuellen Maschine unterstützte Schnittstelle verwiesen wird, um Aufruflisten zurückzugeben. Beispielsweise können durch Trace-Daten Informationen über die Ausführung von Threads gewonnen werden. Diese Informationen können Aufruflistendaten enthalten, die von Aufruflisten stammen, die zu interessierenden Threads gehören. Es kann eine virtuelle Maschine verwendet werden, um die Aufruflistendaten zu erhalten. Die virtuelle Maschine kann verschiedene Ansätze verwenden, um die Aufruflistendaten zu erhalten. Es können beispielsweise Eintritts-/Austrittsereignisse, ein Anwendungs-Timer-Tick oder „Instrumentierungscodes” verwendet werden, die Muster von den „instrumentierten Werten” nehmen. Ein ausgewählter Sampling-Thread kann einen Aufruf an die virtuelle Maschine senden, die Aufruflistendaten abzurufen. Der ausgewählte Sampling-Thread kann den Aufruf an die virtuelle Maschine mithilfe einer Virtual Machine Tool Interface („Virtual Maschine-Werkzeug-Schnittstelle”) ausführen. Die Virtual Machine Tool Interface kann Aufruflistendaten an den Sampling-Thread zurückgeben oder kann die Aufruflistendaten in einem Arbeitsbereich speichern. Die erhaltenen Daten können zur späteren Analyse in einen Baum eingefügt werden.
- Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (eingeschlossen Firmware, speicherresidente Software, Mikrocode usw.) annehmen oder die einer Ausführungsform, bei der Software- und Hardwareaspekte kombiniert werden, die hier alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden sollen. Aspekte der vorliegenden Erfindung können außerdem die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit in dem Medium verkörperten computerlesbaren Programmcode verkörpert ist.
- Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, aber ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede beliebige Kombination von diesen sein. Als spezifischere Beispiele (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium könnten die folgenden aufgeführt werden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
- Ein computerlesbares Signalmedium kann unter anderem ein verbreitetes Datensignal mit in diesem verkörperten computerlesbaren Programmcode sein, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitetes Signal kann verschiedene Formen annehmen, unter anderem, aber ohne darauf beschränkt zu sein, eine elektromagnetische oder optische Form oder eine beliebige Kombination aus diesen. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit übermitteln, verbreiten oder transportieren kann.
- Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe jedes geeigneten Mediums übermittelt werden, darunter unter anderem, aber ohne darauf beschränkt zu sein, ein drahtloses oder drahtgebundenes Medium, Lichtwellenleiter-Kabel, HF (Hochfrequenz) usw. oder jede geeignete Kombination des Vorstehenden.
- Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder Ähnliche sowie herkömmliche verfahrensorientierte Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig oder teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. Bei dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers durch ein beliebiges Netzwerk, darunter ein Lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN) verbunden sein, oder es kann eine Verbindung mit einem externen Computer hergestellt werden (zum Beispiel mithilfe eines Internetdienstanbieters über das Internet).
- Aspekte der vorliegenden Erfindung werden unten mit Bezug auf Flussdiagramme und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramme und/oder Blockschaltbilder sowie Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, so dass der Prozessor und die Anweisungen eine Maschine bereitstellen, die Funktionen und Handlungen realisiert, die in dem Flussdiagramm bzw. den Flussdiagrammen oder dem Blockschaltbild bzw. den Blockschaltbildern hier spezifiziert sind. Der „Prozessor” eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung kann hier als ein „Mikroprozessor” bezeichnet werden. Der Begriff „Mikroprozessor” sollte jedoch nicht als auf eine zentrale Recheneinheit mit einem einzigen Chip oder eine beliebige andere bestimmte Art von programmierbarer Datenverarbeitungsvorrichtung beschränkt aufgefasst werden, außer wenn dieses ausdrücklich so angegeben ist.
- Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis samt der Anweisungen herstellen, mithilfe derer die in dem Block oder den Blöcken des Flussdiagramms und/oder Blockschaltbilds spezifizierte Funktion/Handlung ausgeführt wird. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Betriebsschritten zu bewirken, um einen computerimplementierten Prozess zu schaffen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Realisierung der in dem Block oder den Blöcken des Flussdiagramms und/oder Blockschaltbilds spezifizierten Funktionen/Handlungen bereitstellen.
- Das Flussdiagramm und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Beziehung kann jeder Block in dem Flussdiagramm oder den Blockschaltbildern ein Modul, Segment oder einen Codeabschnitt enthalten, das/der eine oder mehrere ausführbare Anweisungen zur Realisierung der spezifizierten Logikfunktion(en) umfasst. Es sollte auch beachtet werden, dass bei einigen alternativen Realisierungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben auftreten können. Zum Beispiel können zwei aufeinander folgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können in Abhängigkeit von der betreffenden Funktionalität manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist ebenfalls zu beachten, dass jeder Block der Blockschaltbilder und/oder des Flussdiagramms sowie Blockkombinationen in den Blockschaltbildern und/oder dem Flussdiagramm durch hardwarebasierte Spezialsysteme, die die spezifizierten Funktionen oder Handlungen ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen realisiert werden können.
- Wird in dieser Beschreibung auf „eine Ausführungsform” oder Ähnliches Bezug genommen, so heißt das, dass ein bestimmtes in Verbindung mit der Ausführungsform beschriebenes Merkmal, eine bestimmte derartige Struktur und/oder eine bestimmte derartige Eigenschaft in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Daher können in dieser gesamten Beschreibung die Formulierung „bei einer Ausführungsform” sowie ähnliche Begriffe sich alle auf dieselbe Ausführungsform beziehen, obwohl dies nicht notwendigerweise der Fall ist. Darüber hinaus können die beschriebenen Merkmale, Strukturen oder Eigenschaften der Erfindung auf jede geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden. Dementsprechend können, selbst wenn anfänglich beansprucht wird, dass Merkmale in bestimmten Kombinationen auftreten, in einigen Fällen ein oder mehrere Merkmale aus der Kombination herausgenommen werden, und die beanspruchte Kombination kann in eine Unterkombination oder eine Abänderung einer Unterkombination übergeleitet werden.
- Obwohl die Vorrichtung und das Verfahren im Hinblick auf die Ausführungsformen beschrieben wurden, die gegenwärtig als die praktikabelsten und bevorzugten angesehen werden, versteht es sich, dass die Offenbarung nicht auf die offenbarten Ausführungsformen beschränkt sein muss. Die Offenbarung soll verschiedene Abwandlungen und ähnliche Anordnungen abdecken, die in dem Sinn und Schutzumfang der Ansprüche enthalten sind, wobei deren Schutzumfang die umfassendste Interpretation eingeräumt werden sollte, um alle derartigen Abwandlungen und ähnliche Strukturen zu umfassen. Die vorliegende Offenbarung enthält jegliche und alle Ausführungsformen der folgenden Ansprüche.
Claims (13)
- Computerimplementiertes Verfahren aufweisend: Erstellen eines Musters auf der Grundlage eines Ereignisses; Erkennen, mithilfe eines Zuteilungsmonitors, eines nächsten zugeteilten überwachten Threads, der durch einen aktuellen Prozessor zugeteilt wird; Einstellen einer Prozessoraffinität des nächsten zugeteilten überwachten Threads, so dass der nächste zugeteilte, überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können; Abrufen, mithilfe eines Muster-basierenden Threads, der auf dem aktuellen Prozessor läuft, einer Aufrufliste eines nächsten zugeteilten überwachten Threads, nachdem die Prozessoraffinität des nächsten zugeteilten, überwachten Threads auf den Prozessor eingestellt wurde; Wiederherstellen der Prozessoraffinität des nächsten zugeteilten überwachten Threads, nachdem die Aufrufliste des nächsten zugeteilten, überwachten Threads abgerufen wurde, und Aufzeichnen der Aufrufliste des nächsten zugeteilten, überwachten Threads für den nächsten zugeteilten, überwachten Thread.
- Verfahren nach Anspruch 1, wobei das Ereignis auf einem vorgegebenen Ereignis basiert.
- Verfahren nach Anspruch 2, wobei das vorgegebene Ereignis Zeit-basiert ist.
- Verfahren nach Anspruch 1, wobei das Ereignis auf einem Interrupt basiert.
- Verfahren nach einem der vorhergehenden Ansprüche, das weiter eine Benachrichtigung eines Profilers aufweist, der den Thread auswählt, von dem ein Muster genommen wird.
- Verfahren nach Anspruch 5, wobei der Profiler ein Profil der Anwendung erstellt.
- Verfahren nach einem der vorhergehenden Ansprüche, das weiter ein Benachrichtigen eines Betriebssystems nach dem Aufzeichnen der Aufrufliste des nächsten zugeteilten überwachten Threads für den nächsten zugeteilten überwachten Thread aufweist, dass ein Muster fertig gestellt wurde.
- Computerimplementiertes Verfahren, aufweisend: Erstellen eines Musters auf der Grundlage eines Ereignisses; Erkennen, mithilfe eines Zuteilungsmonitors, eines letzten zugeteilten überwachten Threads, der durch einen aktuellen Prozessor zugeteilt wird; Einstellen einer Prozessoraffinität des letzten zugeteilten überwachten Threads, so dass der letzte zugeteilte überwachte Thread nur auf dem aktuellen Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können; Abrufen, mithilfe eines Muster-basierenden Threads, der auf dem aktuellen Prozessor läuft, einer Aufrufliste eines letzten zugeteilten überwachten Threads, nachdem die Prozessoraffinität des letzten zugeteilten überwachten Threads auf den aktuellen Prozessor eingestellt wurde; Wiederherstellen der Prozessoraffinität des letzten zugeteilten überwachten Threads, nachdem die Aufrufliste des letzten zugeteilten, überwachten Threads abgerufen wurde, und Aufzeichnen der Aufrufliste des letzten zugeteilten überwachten Threads für den letzten zugeteilten überwachten Thread.
- Computerprogrammprodukt, das ein computerverwendbares Medium mit einem computerlesbaren Programm aufweist, wobei das computerlesbare Programm, wenn es auf einem Computer ausgeführt wird, den Computer dazu veranlasst, alle Schritte aus einem der Ansprüche 1 bis 8 auszuführen.
- System, das Folgendes aufweist: einen Prozessor zum Erstellen einer Probe auf der Grundlage eines Ereignisses; ein Betriebssystem zum (i) Erkennen, mithilfe eines Zuteilungsmonitors, eines nächsten zugeteilten überwachten Threads, der durch den aktuellen Prozessor zugeteilt wird, und (ii) zum Einstellen einer Prozessoraffinität des nächsten zugeteilten überwachten Threads, so dass der nächste zugeteilte überwachte Thread nur auf dem Prozessor läuft, ohne zu einem anderen Prozessor migrieren zu können; einen Profiler, zum (i) Abrufen, mithilfe eines Sampler-Threads, der so konfiguriert ist, dass er nur auf dem aktuellen Prozessor läuft, einer Aufrufliste eines nächsten zugeteilten überwachten Threads, nachdem die Prozessoraffinität des nächsten zugeteilten überwachten Threads auf den Prozessor eingestellt wurde, und (ii) und Wiederherstellen der Prozessoraffinität des nächsten zugeteilten überwachten Threads, nachdem die Aufrufliste des nächsten zugeteilten überwachten Threads abgerufen wurde, und (iv) Aufzeichnen der Aufrufliste des nächsten zugeteilten überwachten Threads für den nächsten zugeteilten überwachten Thread.
- System nach Anspruch 10, wobei das Ereignis auf einem vorgegebenen Ereignis basiert.
- System nach Anspruch 10, wobei das vorgegebene Ereignis Zeit-basiert ist.
- System nach Anspruch 10, wobei das Ereignis auf einem Interrupt basiert.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/786,381 | 2010-05-24 | ||
US12/786,381 US9176783B2 (en) | 2010-05-24 | 2010-05-24 | Idle transitions sampling with execution context |
PCT/EP2011/057574 WO2011147685A1 (en) | 2010-05-24 | 2011-05-11 | Idle transitions sampling |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112011101759T5 true DE112011101759T5 (de) | 2013-03-07 |
DE112011101759B4 DE112011101759B4 (de) | 2015-03-05 |
Family
ID=44275921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112011101759.6T Active DE112011101759B4 (de) | 2010-05-24 | 2011-05-11 | Sampling von Leerlauftransitionen |
Country Status (5)
Country | Link |
---|---|
US (1) | US9176783B2 (de) |
CN (1) | CN102893261B (de) |
DE (1) | DE112011101759B4 (de) |
GB (1) | GB2493609B (de) |
WO (1) | WO2011147685A1 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8843684B2 (en) * | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) * | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US20140223062A1 (en) * | 2013-02-01 | 2014-08-07 | International Business Machines Corporation | Non-authorized transaction processing in a multiprocessing environment |
US9092332B2 (en) * | 2013-05-02 | 2015-07-28 | Microsoft Technology Licensing, Llc | Activity based sampling of diagnostics data |
US9552223B2 (en) * | 2014-09-30 | 2017-01-24 | International Business Machines Corporation | Post-return asynchronous code execution |
Family Cites Families (188)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5218704A (en) | 1989-10-30 | 1993-06-08 | Texas Instruments | Real-time power conservation for portable computers |
US5305454A (en) | 1991-08-12 | 1994-04-19 | International Business Machines Corporation | Notification of event handlers in broadcast or propagation mode by event management services in a computer system |
GB2276737A (en) | 1993-03-30 | 1994-10-05 | Ibm | Fault-tolerant transaction-oriented data processing |
US5544318A (en) | 1993-04-16 | 1996-08-06 | Accom, Inc., | Asynchronous media server request processing system for servicing reprioritizing request from a client determines whether or not to delay executing said reprioritizing request |
US5473777A (en) | 1993-07-19 | 1995-12-05 | Moeller; Christopher P. | Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls |
US5379432A (en) | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US5404529A (en) | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
US5619202A (en) | 1994-11-22 | 1997-04-08 | Analog Devices, Inc. | Variable sample rate ADC |
EP0649084A1 (de) | 1993-10-18 | 1995-04-19 | Cyrix Corporation | Verzweigungsverarbeitung in Mikroprozessor |
EP0689141A3 (de) | 1994-06-20 | 1997-10-15 | At & T Corp | Unterbrechungsbasierte hardwaremässige Unterstützung für Systemleistungsprofilierung |
US6633897B1 (en) | 1995-06-30 | 2003-10-14 | International Business Machines Corporation | Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler |
US6728959B1 (en) | 1995-08-08 | 2004-04-27 | Novell, Inc. | Method and apparatus for strong affinity multiprocessor scheduling |
US5682537A (en) | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5751789A (en) | 1995-11-13 | 1998-05-12 | Bell Atlantic Network Services, Inc. | SNID with wireless backup |
US5764241A (en) | 1995-11-30 | 1998-06-09 | Microsoft Corporation | Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior |
JP3672208B2 (ja) | 1996-07-02 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層化トランザクション処理方法 |
GB2321540A (en) | 1997-01-25 | 1998-07-29 | Ibm | Automatic transactional locking using object request broker |
US5881138A (en) | 1997-04-27 | 1999-03-09 | Ameritech Corporation | Method and system for detecting a change in at least one telecommunication service rate plan |
US6199075B1 (en) | 1997-05-30 | 2001-03-06 | Sun Microsystems, Inc. | Method and apparatus for generational garbage collection of a heap memory shared by multiple processors |
US5913213A (en) | 1997-06-16 | 1999-06-15 | Telefonaktiebolaget L M Ericsson | Lingering locks for replicated data objects |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6108654A (en) | 1997-10-31 | 2000-08-22 | Oracle Corporation | Method and system for locking resources in a computer system |
US6338159B1 (en) | 1997-12-12 | 2002-01-08 | International Business Machines Corporation | System and method for providing trace information |
US6055492A (en) | 1997-12-12 | 2000-04-25 | International Business Machines Corporation | System and method for providing trace information data reduction |
US6002872A (en) | 1998-03-31 | 1999-12-14 | International Machines Corporation | Method and apparatus for structured profiling of data processing systems and applications |
US6651243B1 (en) | 1997-12-12 | 2003-11-18 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees |
US6662358B1 (en) | 1997-12-12 | 2003-12-09 | International Business Machines Corporation | Minimizing profiling-related perturbation using periodic contextual information |
US6751789B1 (en) | 1997-12-12 | 2004-06-15 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination |
US6553564B1 (en) | 1997-12-12 | 2003-04-22 | International Business Machines Corporation | Process and system for merging trace data for primarily interpreted methods |
US6158024A (en) | 1998-03-31 | 2000-12-05 | International Business Machines Corporation | Method and apparatus for structured memory analysis of data processing systems and applications |
US6442572B2 (en) | 1998-01-28 | 2002-08-27 | International Business Machines Corporation | Method of and computer system for performing a transaction on a database |
US6233585B1 (en) | 1998-03-12 | 2001-05-15 | Crossworlds Software, Inc. | Isolation levels and compensating transactions in an information system |
US6125363A (en) | 1998-03-30 | 2000-09-26 | Buzzeo; Eugene | Distributed, multi-user, multi-threaded application development method |
US6112225A (en) | 1998-03-30 | 2000-08-29 | International Business Machines Corporation | Task distribution processing system and the method for subscribing computers to perform computing tasks during idle time |
US6954922B2 (en) | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
US6128611A (en) | 1998-04-30 | 2000-10-03 | International Business Machines Corporation | Internet-enabled generic application program for accessing hierarchical data |
US6941552B1 (en) | 1998-07-30 | 2005-09-06 | International Business Machines Corporation | Method and apparatus to retain applet security privileges outside of the Java virtual machine |
US6314471B1 (en) | 1998-11-13 | 2001-11-06 | Cray Inc. | Techniques for an interrupt free operating system |
US6681230B1 (en) | 1999-03-25 | 2004-01-20 | Lucent Technologies Inc. | Real-time event processing system with service authoring environment |
US6449614B1 (en) | 1999-03-25 | 2002-09-10 | International Business Machines Corporation | Interface system and method for asynchronously updating a share resource with locking facility |
US6601233B1 (en) | 1999-07-30 | 2003-07-29 | Accenture Llp | Business components framework |
US7028298B1 (en) | 1999-09-10 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and methods for managing resource usage |
US6438512B1 (en) | 1999-09-28 | 2002-08-20 | Convergys Cmg Utah, Inc. | System and method for performance monitoring of application code |
US6654948B1 (en) | 1999-10-12 | 2003-11-25 | International Business Machines Corporation | Methods and apparatus for partial and consistent monitoring of object-oriented programs and systems |
US6728955B1 (en) | 1999-11-05 | 2004-04-27 | International Business Machines Corporation | Processing events during profiling of an instrumented program |
US6742016B1 (en) | 2000-03-24 | 2004-05-25 | Hewlett-Packard Devolpment Company, L.P. | Request acceptor for a network application system and a method thereof |
US6625602B1 (en) | 2000-04-28 | 2003-09-23 | Microsoft Corporation | Method and system for hierarchical transactions and compensation |
US6880086B2 (en) | 2000-05-20 | 2005-04-12 | Ciena Corporation | Signatures for facilitating hot upgrades of modular software components |
US7020696B1 (en) | 2000-05-20 | 2006-03-28 | Ciena Corp. | Distributed user management information in telecommunications networks |
US6769074B2 (en) | 2000-05-25 | 2004-07-27 | Lumigent Technologies, Inc. | System and method for transaction-selective rollback reconstruction of database objects |
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 |
US7236976B2 (en) | 2000-06-19 | 2007-06-26 | Aramark Corporation | System and method for scheduling events and associated products and services |
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 |
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 |
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 |
JP2002055848A (ja) | 2000-08-11 | 2002-02-20 | Omron Corp | プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体 |
US20020073103A1 (en) | 2000-08-25 | 2002-06-13 | Bottomley Thomas Mark Walter | Memory garbage collection method and apparatus |
US6993246B1 (en) | 2000-09-15 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | Method and system for correlating data streams |
US7206848B1 (en) | 2000-09-21 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Intelligently classifying and handling user requests in a data service system |
US6857120B1 (en) | 2000-11-01 | 2005-02-15 | International Business Machines Corporation | Method for characterizing program execution by periodic call stack inspection |
US6874074B1 (en) | 2000-11-13 | 2005-03-29 | Wind River Systems, Inc. | System and method for memory reclamation |
US7426730B2 (en) | 2001-04-19 | 2008-09-16 | Wre-Hol Llc | Method and system for generalized and adaptive transaction processing between uniform information services and applications |
US20030004970A1 (en) | 2001-06-28 | 2003-01-02 | Watts Julie Ann | Method for releasing update locks on rollback to savepoint |
US7499924B2 (en) | 2001-06-28 | 2009-03-03 | International Business Machines Corporation | Method for releasing update locks on rollback to savepoint |
US7178145B2 (en) | 2001-06-29 | 2007-02-13 | Emc Corporation | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system |
US20030023655A1 (en) | 2001-07-26 | 2003-01-30 | Stepan Sokolov | Method and apparatus to facilitate suspending threads in a platform-independent virtual machine |
US6697802B2 (en) | 2001-10-12 | 2004-02-24 | International Business Machines Corporation | Systems and methods for pairwise analysis of event data |
US20030083912A1 (en) | 2001-10-25 | 2003-05-01 | Covington Roy B. | Optimal resource allocation business process and tools |
EP1461723A4 (de) | 2001-11-01 | 2009-08-05 | Verisign Inc | Verfahren und system zum validieren einer ferndatenbank |
US6976263B2 (en) | 2001-11-19 | 2005-12-13 | Lsi Logic Corporation | Mechanism for encoding and decoding upgradeable RPC/XDR structures |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7263108B2 (en) | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US6792460B2 (en) | 2002-10-02 | 2004-09-14 | Mercury Interactive Corporation | System and methods for monitoring application server performance |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7546333B2 (en) | 2002-10-23 | 2009-06-09 | Netapp, Inc. | Methods and systems for predictive change management for access paths in networks |
US7234166B2 (en) | 2002-11-07 | 2007-06-19 | Stonesoft Corporation | Event sequence detection |
US7398518B2 (en) | 2002-12-17 | 2008-07-08 | Intel Corporation | Method and apparatus for measuring thread wait time |
JP4436036B2 (ja) | 2002-12-18 | 2010-03-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、トレース処理方法、プログラム及び記録媒体 |
US20040148594A1 (en) | 2003-01-24 | 2004-07-29 | Stephen Williams | Acquiring call-stack information |
US20040162741A1 (en) | 2003-02-07 | 2004-08-19 | David Flaxer | Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference |
US7114150B2 (en) | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US7222119B1 (en) | 2003-02-14 | 2007-05-22 | Google Inc. | Namespace locking scheme |
US6798022B1 (en) | 2003-03-11 | 2004-09-28 | Oki Electric Industry Co., Ltd. | Semiconductor device with improved protection from electrostatic discharge |
US8762415B2 (en) | 2003-03-25 | 2014-06-24 | Siebel Systems, Inc. | Modeling of order data |
US7299478B2 (en) | 2003-03-28 | 2007-11-20 | Sbc Knowledge Ventures, L.P. | Integration service and domain object for telecommunications operational support |
US7278141B2 (en) | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7000047B2 (en) | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US7299229B2 (en) | 2003-04-25 | 2007-11-20 | International Business Machines Corporation | Grid quorum |
US7305393B2 (en) | 2003-04-29 | 2007-12-04 | International Business Machines Corporation | Mounted filesystem integrity checking and salvage |
US7124131B2 (en) | 2003-04-29 | 2006-10-17 | International Business Machines Corporation | Discipline for lock reassertion in a distributed file system |
US7496574B2 (en) | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7194732B2 (en) | 2003-06-26 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for facilitating profiling an application |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
US7321965B2 (en) | 2003-08-28 | 2008-01-22 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7089250B2 (en) | 2003-10-08 | 2006-08-08 | International Business Machines Corporation | Method and system for associating events |
US20050086455A1 (en) | 2003-10-16 | 2005-04-21 | International Business Machines Corporation | Method and apparatus for generating interrupts for specific types of instructions |
JP4330429B2 (ja) | 2003-11-05 | 2009-09-16 | 株式会社日立製作所 | プロファイル情報の取得装置及び方法 |
US7257657B2 (en) | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
US7458078B2 (en) | 2003-11-06 | 2008-11-25 | International Business Machines Corporation | Apparatus and method for autonomic hardware assisted thread stack tracking |
US6931354B2 (en) | 2003-11-13 | 2005-08-16 | International Business Machines Corporation | Method, apparatus and computer program product for efficient, large counts of per thread performance events |
US20050138443A1 (en) | 2003-12-23 | 2005-06-23 | Barnes Cooper | Method for C state management |
US7624137B2 (en) | 2004-01-05 | 2009-11-24 | International Business Machines Corporation | Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds |
US7526757B2 (en) | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7114036B2 (en) | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7392370B2 (en) | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7093081B2 (en) | 2004-01-14 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for identifying false cache line sharing |
US20050155018A1 (en) | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values |
US7509653B2 (en) | 2004-01-22 | 2009-03-24 | International Business Machines Corporation | Efficient and scalable event partitioning in business integration applications using multiple delivery queues |
US7424705B2 (en) | 2004-03-11 | 2008-09-09 | Intel Corporation | Dynamic management of compiled code |
US7296130B2 (en) | 2004-03-22 | 2007-11-13 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data |
US7162666B2 (en) | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US20050246461A1 (en) * | 2004-04-29 | 2005-11-03 | International Business Machines Corporation | Scheduling threads in a multi-processor computer |
US20050262130A1 (en) | 2004-05-21 | 2005-11-24 | Krishna Mohan | Input data specification method and system in business-to-business integration |
US7496918B1 (en) | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US7610585B2 (en) | 2004-06-03 | 2009-10-27 | Intel Corporation | Thread synchronization methods and apparatus for managed run-time environments |
IL167628A (en) | 2004-06-04 | 2010-11-30 | Optier Ltd | System and method for performance management in a multi-tier computing environment |
US20050273757A1 (en) | 2004-06-07 | 2005-12-08 | Anderson Craig D | Methods, systems, and computer program products for summarizing operational behavior of a computer program |
US7779238B2 (en) | 2004-06-30 | 2010-08-17 | Oracle America, Inc. | Method and apparatus for precisely identifying effective addresses associated with hardware events |
US7529914B2 (en) | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US20060023642A1 (en) | 2004-07-08 | 2006-02-02 | Steve Roskowski | Data collection associated with components and services of a wireless communication network |
US20060031837A1 (en) | 2004-08-05 | 2006-02-09 | International Business Machines Corporation | Thread starvation profiler |
US7487503B2 (en) | 2004-08-12 | 2009-02-03 | International Business Machines Corporation | Scheduling threads in a multiprocessor computer |
US20060059486A1 (en) | 2004-09-14 | 2006-03-16 | Microsoft Corporation | Call stack capture in an interrupt driven architecture |
US7716647B2 (en) | 2004-10-01 | 2010-05-11 | Microsoft Corporation | Method and system for a system call profiler |
US7721268B2 (en) | 2004-10-01 | 2010-05-18 | Microsoft Corporation | Method and system for a call stack capture |
US20060072563A1 (en) | 2004-10-05 | 2006-04-06 | Regnier Greg J | Packet processing |
US20060080486A1 (en) | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Method and apparatus for prioritizing requests for information in a network environment |
US7548974B2 (en) | 2004-10-12 | 2009-06-16 | International Business Machines Corporation | Adaptively processing client requests to a network server |
US7593980B2 (en) | 2004-11-30 | 2009-09-22 | Cisco Technology, Inc. | Application server system and method |
US20060130001A1 (en) | 2004-11-30 | 2006-06-15 | International Business Machines Corporation | Apparatus and method for call stack profiling for a software application |
US20060149877A1 (en) | 2005-01-03 | 2006-07-06 | Pearson Adrian R | Interrupt management for digital media processor |
FR2881242B1 (fr) | 2005-01-21 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede non intrusif de journalisation d'evements internes au sein d'un processus applicatif, et systeme mettant en oeuvre ce procede |
US20060184769A1 (en) | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Localized generation of global flush requests while guaranteeing forward progress of a processor |
US7325108B2 (en) | 2005-03-15 | 2008-01-29 | International Business Machines Corporation | Method and system for page-out and page-in of stale objects in memory |
TWI257216B (en) | 2005-03-23 | 2006-06-21 | Ind Tech Res Inst | System and a method of request scheduling for the differentiated quality of service at an intermediary |
EP1880266A4 (de) | 2005-04-25 | 2010-09-08 | Invensys Sys Inc | Aufzeichnen und verfolgen von nicht-trend-produktionsdaten und ereignissen in einer industriellen prozessteuerumgebung |
US7689867B2 (en) | 2005-06-09 | 2010-03-30 | Intel Corporation | Multiprocessor breakpoint |
US9110712B2 (en) | 2005-06-10 | 2015-08-18 | International Business Machines Corporation | Method for encapsulating logical units of work using business objects |
US8533709B2 (en) | 2005-08-04 | 2013-09-10 | Microsoft Cororation | Changing frequency of a virtual programmable interrupt timer in virtual machines to control virtual time |
US7788664B1 (en) | 2005-11-08 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method of virtualizing counter in computer system |
US20070150904A1 (en) | 2005-11-15 | 2007-06-28 | International Business Machines Corporation | Multi-threaded polling in a processing environment |
US7877734B2 (en) | 2006-01-12 | 2011-01-25 | International Business Machines Corporation | Selective profiling of program code executing in a runtime environment |
US7474991B2 (en) | 2006-01-19 | 2009-01-06 | International Business Machines Corporation | Method and apparatus for analyzing idle states in a data processing system |
US9323578B2 (en) | 2006-01-19 | 2016-04-26 | International Business Machines Corporation | Analyzing wait states in a data processing system |
US7653895B1 (en) | 2006-01-20 | 2010-01-26 | Xilinx, Inc. | Memory arrangement for message processing by a plurality of threads |
US8018845B2 (en) | 2006-01-25 | 2011-09-13 | Cisco Technology, Inc | Sampling rate-limited traffic |
US7584332B2 (en) | 2006-02-17 | 2009-09-01 | University Of Notre Dame Du Lac | Computer systems with lightweight multi-threaded architectures |
US7827541B2 (en) | 2006-03-16 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for profiling execution of code using multiple processors |
US7587364B2 (en) | 2006-03-24 | 2009-09-08 | Sap Ag | Systems and methods for bank determination and payment handling |
US20080082761A1 (en) | 2006-09-29 | 2008-04-03 | Eric Nels Herness | Generic locking service for business integration |
US7921075B2 (en) | 2006-09-29 | 2011-04-05 | International Business Machines Corporation | Generic sequencing service for business integration |
US8402253B2 (en) | 2006-09-29 | 2013-03-19 | Intel Corporation | Managing multiple threads in a single pipeline |
US20080148241A1 (en) | 2006-10-11 | 2008-06-19 | Scott Thomas Jones | Method and apparatus for profiling heap objects |
US8839271B2 (en) | 2006-10-11 | 2014-09-16 | International Business Machines Corporation | Call stack sampling to obtain information for analyzing idle states in a data processing system |
US9514201B2 (en) | 2006-10-13 | 2016-12-06 | International Business Machines Corporation | Method and system for non-intrusive event sequencing |
US9274857B2 (en) | 2006-10-13 | 2016-03-01 | International Business Machines Corporation | Method and system for detecting work completion in loosely coupled components |
US7493436B2 (en) | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
US8136124B2 (en) | 2007-01-18 | 2012-03-13 | Oracle America, Inc. | Method and apparatus for synthesizing hardware counters from performance sampling |
US20080196030A1 (en) | 2007-02-13 | 2008-08-14 | Buros William M | Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system |
JP4905974B2 (ja) | 2007-03-30 | 2012-03-28 | 株式会社エヌ・ティ・ティ・データ | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
US20080263325A1 (en) | 2007-04-19 | 2008-10-23 | International Business Machines Corporation | System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor |
US7962924B2 (en) | 2007-06-07 | 2011-06-14 | International Business Machines Corporation | System and method for call stack sampling combined with node and instruction tracing |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8132170B2 (en) * | 2007-08-07 | 2012-03-06 | International Business Machines Corporation | Call stack sampling in a data processing system |
US8381215B2 (en) * | 2007-09-27 | 2013-02-19 | Oracle America, Inc. | Method and system for power-management aware dispatcher |
JP4912375B2 (ja) | 2007-09-28 | 2012-04-11 | 長堀工業株式会社 | 流体継手 |
US8117618B2 (en) | 2007-10-12 | 2012-02-14 | Freescale Semiconductor, Inc. | Forward progress mechanism for a multithreaded processor |
US8141053B2 (en) | 2008-01-04 | 2012-03-20 | International Business Machines Corporation | Call stack sampling using a virtual machine |
US8156495B2 (en) | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
US8739165B2 (en) | 2008-01-22 | 2014-05-27 | Freescale Semiconductor, Inc. | Shared resource based thread scheduling with affinity and/or selectable criteria |
US8434098B2 (en) | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
GB2457341B (en) * | 2008-02-14 | 2010-07-21 | Transitive Ltd | Multiprocessor computing system with multi-mode memory consistency protection |
EP2266026A4 (de) | 2008-03-11 | 2012-01-11 | Univ Washington | Effiziente deterministische mehrfachverarbeitung |
KR20090098500A (ko) | 2008-03-14 | 2009-09-17 | 삼성전자주식회사 | 가상 머신의 유휴 구간 검사 장치 및 방법, 그리고 그방법을 수행하기 위한 컴퓨터 프로그램 |
US8286139B2 (en) | 2008-03-19 | 2012-10-09 | International Businesss Machines Corporation | Call stack sampling for threads having latencies exceeding a threshold |
KR100959548B1 (ko) | 2008-05-21 | 2010-05-27 | 한국과학기술원 | 인터럽트 스케줄링 방법 |
US8607237B2 (en) | 2008-06-02 | 2013-12-10 | Microsoft Corporation | Collection with local lists for a multi-processor system |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US20100017583A1 (en) | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US8566795B2 (en) | 2008-07-15 | 2013-10-22 | International Business Machines Corporation | Selectively obtaining call stack information based on criteria |
US8286134B2 (en) | 2008-07-15 | 2012-10-09 | International Business Machines Corporation | Call stack sampling for a multi-processor system |
US20100017581A1 (en) | 2008-07-18 | 2010-01-21 | Microsoft Corporation | Low overhead atomic memory operations |
US8332852B2 (en) | 2008-07-21 | 2012-12-11 | International Business Machines Corporation | Thread-to-processor assignment based on affinity identifiers |
US20100036981A1 (en) | 2008-08-08 | 2010-02-11 | Raghavendra Ganesh | Finding Hot Call Paths |
US20100333071A1 (en) | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
US8843684B2 (en) | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
-
2010
- 2010-05-24 US US12/786,381 patent/US9176783B2/en active Active
-
2011
- 2011-05-11 DE DE112011101759.6T patent/DE112011101759B4/de active Active
- 2011-05-11 WO PCT/EP2011/057574 patent/WO2011147685A1/en active Application Filing
- 2011-05-11 GB GB1212738.7A patent/GB2493609B/en active Active
- 2011-05-11 CN CN201180023759.6A patent/CN102893261B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102893261A (zh) | 2013-01-23 |
CN102893261B (zh) | 2016-03-16 |
GB2493609B (en) | 2014-02-12 |
US9176783B2 (en) | 2015-11-03 |
US20110289361A1 (en) | 2011-11-24 |
DE112011101759B4 (de) | 2015-03-05 |
GB2493609A (en) | 2013-02-13 |
GB201212738D0 (en) | 2012-08-29 |
WO2011147685A1 (en) | 2011-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112011101759B4 (de) | Sampling von Leerlauftransitionen | |
DE10050684B4 (de) | Verfahren und System zur periodischen Ablaufverfolgung für Aufrufsequenzen zwischen Routinen | |
DE112012000797B4 (de) | Mehrfach-Modellierungsparadigma für eine Vorhersageanalytik | |
DE69826418T2 (de) | Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline | |
US9639446B2 (en) | Trace monitoring | |
US10552289B2 (en) | Correlation analysis of performance metrices | |
DE112004002296B4 (de) | Anwenderprogrammierbares Multithreading mit geringem Overhead | |
DE60032694T2 (de) | Speicherrückforderungsverfahren | |
DE112012004747B4 (de) | Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen | |
DE60221136T2 (de) | System und verfahren zur überwachung von computeranwendungen und der betriebsmittelausnutzung | |
DE112016003249T5 (de) | Container-Bereitstellung auf Abhängigkeitsgrundlage | |
DE112010005473T5 (de) | Opportunistisches multitasking | |
DE102014103488A1 (de) | Ausgeglichenes Scheduling mit gemischten Abfrage-Lasten | |
DE112013005882T5 (de) | Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage | |
DE202012013432U1 (de) | Speichern von Daten auf Speicherknoten | |
DE112011103979T5 (de) | Computerprogramm und System für ein Verfahren zur Optimierung der Speicherverwaltung einer auf einer virtuellen Maschine ausgeführten Anwendung | |
DE60207070T2 (de) | Überwachung von tasks | |
DE112012003961T5 (de) | Gleichzeitige Verarbeitung von eingereihten Nachrichten | |
DE112012005639T5 (de) | Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing | |
DE202017106569U1 (de) | Analyse grossangelegter Datenverarbeitungsaufträge | |
DE60314742T2 (de) | System und verfahren zur überwachung eines computers | |
DE112014000336T5 (de) | Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip | |
DE102006041444B4 (de) | Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem | |
DE112014000340T5 (de) | Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern | |
DE112011100168B4 (de) | Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE |
|
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R084 | Declaration of willingness to licence | ||
R020 | Patent grant now final | ||
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE |
|
R082 | Change of representative |
Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |