DE102010053971A1 - Aufteilen eines gezählten Wertes auf einem auf einem Mehrkernprozessor ausgeführten Task - Google Patents

Aufteilen eines gezählten Wertes auf einem auf einem Mehrkernprozessor ausgeführten Task Download PDF

Info

Publication number
DE102010053971A1
DE102010053971A1 DE102010053971A DE102010053971A DE102010053971A1 DE 102010053971 A1 DE102010053971 A1 DE 102010053971A1 DE 102010053971 A DE102010053971 A DE 102010053971A DE 102010053971 A DE102010053971 A DE 102010053971A DE 102010053971 A1 DE102010053971 A1 DE 102010053971A1
Authority
DE
Germany
Prior art keywords
time
counter
processor
tasks
counted value
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.)
Ceased
Application number
DE102010053971A
Other languages
English (en)
Inventor
Christopher J. Oreg. Cormack
Nathaniel Calif. Duca
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102010053971A1 publication Critical patent/DE102010053971A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

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

Abstract

Eine Technik beinhaltet, Daten bereitzustellen, die für einen gezählten Wert bezeichnend sind, der durch einen Hardwarezähler eines Prozessorkerns während eines Zeitsegments, in dem eine Vielzahl von Tasks auf dem Kern aktiv ist, erworben wurde, und bei einer prozessorbasierten Maschine eine Wahrscheinlichkeit zu bestimmen, dass der gezählte Wert einem gegebenen Task der Tasks während des Zeitsegments zugeschrieben werden kann, und einen Teil des gezählten Wertes dem gegebenen Task zumindest teilweise basierend auf der bestimmten Wahrscheinlichkeit zuzuschreiben.

Description

  • HINTERGRUND
  • Ein typisches modernes Computersystem kann einen Mehrkernprozessor beinhalten, der ein oder mehr Prozessorkerne beinhaltet, die viele Threads ausführen. Ein relativ komplexer Softwarestapel kann auf dem Mehrkernprozessor laufen und als solches kann eine gegebene Softwarefunktion, wie z. B. ein Zeichenaufruf, nicht seriell über den Satz an Prozessorkernen ausgeführt werden, sondern stattdessen wird die Funktion typischerweise in mehrere Tasks unterteilt, die über viele Threads auf den Prozessorkernen ausgeführt werden. Wenn zusätzlich ein spezifischer Task typisch ausführt, ist dies nicht deterministischer Natur, da jeglicher einzelner Task theoretisch von dem Scheduler vorab geleert, midstream von der Ausführung entfernt und zu späterer Zeit auf einem anderen Thread und/oder Kern erneut geschedult werden kann.
  • Angesichts dieser Komplexitäten kann es für ein Analyseprogramm zur Herausforderung werden, zu bestimmen, welche beobachteten Leistungsmetriken, wie z. B. Cache-Misses, Ausführungsblockierungen etc., einem spezifischen Task, einer Gruppe von Tasks oder einer Softwarefunktion zugeschrieben werden können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein schematisches Diagramm eines Computersystems gemäß einer erfindungsgemäßen Ausführungsform.
  • 2 ist ein Ablaufdiagramm, das eine Technik darstellt, um einen gezählten Wert gemäß einer erfindungsgemäßen Ausführungsform auf einem auf einem Mehrkernprozessor ausgeführten Task aufzuteilen.
  • 3 ist eine Veranschaulichung sich zeitlich überlappender Tasks, die gemäß einer erfindungsgemäßen Ausführungsform auf einem Mehrkernprozessor ausgeführt werden.
  • 4 ist ein Ablaufdiagramm, das eine Technik darstellt, um ausgewählte Tasks gemäß des Prozessorkerns, auf dem die Tasks ausführen, gemäß einer erfindungsgemäßen Ausführungsform zu sortieren.
  • 5A und 5B sind Ablaufdiagramme, die eine Technik darstellen, um einen gezählten Wert gemäß einer erfindungsgemäßen Ausführungsform auf ausgewählte Tasks aufzuteilen, die auf einem Prozessorkern ausführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Mit Bezug auf 1 weist, gemäß erfindungsgemäßer Ausführungsformen, eine Mehrkernmaschine oder System 10 einen Mehrkern-Grafikprozessor 30 auf, der mehrere Prozessorkerne 34 aufweist. Jeder Prozessorkern 34 weist für dieses Beispiel einen Hardwarezähler 36 auf (wobei ein Zähler 36 pro Kern 34 in 1 dargestellt ist), um eine bestimmte Leistungsmetrik zu messen. Beispielsweise kann ein gegebener Prozessorkern 34 einen Hardwarezähler 36 beinhalten, um Cache-Misses zu zählen, einen Zähler 36, um die Anzahl an Ausführungsblockierungen zu zählen, einen Zähler 36, um eine Zählung zu verwalten, die für eine Ausführungsauslastung bezeichnend ist, etc. Es wird festgestellt, dass der Mehrkern-Grafikprozessor 30 lediglich ein Beispiel eines Mehrkernprozessors ist, da der hierin beschriebene Mehrkernprozessor kein Grafikprozessor sein muss, wie z. B. ein SIMD-(single instruction multiple data)-Mehrkernprozessor oder ein Hauptsystemprozessor 14 des Systems 10, als nicht einschränkende Beispiele.
  • Es wird hierin angenommen, dass die Prozessorkerne 34 Tasks ausführen, wobei ein Task jegliche übliche Arbeitseinheit zum Scheduling und zur Ausführung ist. Im Allgemeinen kann ein Task jeglicher Teil eines Codes mit einem Anfang und einem Ende sein, und die Dauer des Tasks kann als eine Anzahl an Prozessorzyklen definiert sein, um den Task auszuführen. Eine gegebene übergeordnete Softwarefunktion (im Falle von Grafikverarbeitung beispielsweise ein Zeichenaufruf) kann mehrere Tasks aufrufen, die über viele Threads auf mehreren Prozessorkernen 34 ausgeführt werden.
  • Der Hardwarezähler 36 ist kernspezifisch, sodass die Prozessorkerne 34 keinen Hardwarezähler pro Thread aufweisen. Stattdessen wird der Hardwarezähler 36 ohne Unterscheidung von den einzelnen Tasks geprüft, die auf dem Prozessorkern 34 laufen. Die fehlende Korrespondenz zwischen dem Hardwarezähler 36 und den Tasks kann zu Problemen beim Bestimmen führen, welcher Teil eines gezählten Wertes einem gegebenen Task zugeschrieben wird. Beispielsweise kann ein bestimmter Hardwarezähler 36 Cache-Misses für den gesamten Prozessorkern 34 zählen. Obwohl ein gegebener Task, der auf dem Prozessorkern 34 ausführt, den Hardwarezähler 36 am Anfang und Ende des Tasks prüfen kann, ist der von diesen Prüfungen abgeleitete gezählte Wert (d. h. das Zähl-Delta) nicht notwendigerweise bezeichnend für die Cache-Misses, die diesem gegebenen Task zugeschrieben werden können, da viele andere überlappende Tasks Cache-Misses während des Zeitintervalls hervorrufen können, währenddessen der gegebene Task aktiv ist.
  • Gemäß erfindungsgemäßer Ausführungsformen, die hierin beschrieben sind, führt das System 10 eine Technik durch, um gezählte Werte unter den Tasks aufzuteilen, die während einer gegebenen Zeitspanne ausführen. Um die folgende Erörterung zu vereinfachen, wird davon ausgegangen, dass der Hardwarezähler 36 ein Cache-Miss-Zähler ist, der von dem Prozessorkern 34 jedes Mal hochgezählt wird, wenn ein bestimmter Cache-Miss in dem Kern 34 auftritt. Die hierin beschriebenen Techniken können gemäß anderer erfindungsgemäßer Ausführungsformen angewendet werden, um gezählte Werte aufzuteilen, die mit anderen Metriken als Cache-Misses verbunden sind.
  • Mit Bezug auf 2 in Verbindung mit 1 führt das System 10 gemäß einiger erfindungsgemäßer Ausführungsformen eine Technik 100 durch, um einen Teil eines gezählten Wertes einem gegebenen Task zuzuschreiben, der auf einem Prozessorkern 34 ausführt. Die Technik 100 beinhaltet, dass Zählerdaten bereitgestellt werden (Block 104), die für einen gezählten Wert während eines Zeitsegments in dem mehrere Tasks auf dem Prozessorkern 34 aktiv sind, bezeichnend sind. Die Technik 100 beinhaltet, dass eine Wahrscheinlichkeit bestimmt wird (Block 108), dass der gezählte Wert einem gegebenen Task der Tasks während des Zeitsegments zugeschrieben werden kann, und einen Teil des gezählten Wertes dem gegebenen Task zumindest teilweise basierend auf der bestimmten Wahrscheinlichkeit, gemäß Block 112 zuzuschreiben.
  • Mit Bezug auf 1 führt der Grafikprozessor 30 gemäß einiger erfindungsgemäßer Ausführungsformen im Allgemeinen Tasks aus, um Bilder auf einem Display 40 zu generieren, wie z. B. einer beispielhaften dargestellten grafischen Benutzeroberfläche (graphical user interface, GUI) 44, die in 1 dargestellt ist. Die GUI 44 zeigt Tasks an, die auf dem Grafikprozessor 30 ausführen und erlaubt es einem Benutzer, ein oder mehr der Tasks zur Analyse auszuwählen. Als ein spezifischeres Beispiel kann die GUI 44 es gemäß einiger erfindungsgemäßer Ausführungsformen einem Benutzer erlauben, eine bestimmte Softwarefunktion (einen Zeichenaufruf als ein nicht einschränkendes Beispiel) hervorzuheben, um die Funktion zur Analyse von Leistungsmetriken auszuwählen, die mit diesem Aufruf verbunden sind. Die ausgewählte Funktion kann mehrere Tasks beinhalten, die auf dem Grafikprozessor 30 ausgeführt werden, kann mehrere Tasks beinhalten, die auf unterschiedlichen Threads ausführen, und kann Tasks beinhalten, die auf unterschiedlichen Prozessorkernen 34 ausgeführt werden.
  • Indem eine gegebene Softwarefunktion hervorgehoben und ausgewählt wird, kann ein Benutzer von einer Analyse profitieren, die von dem System 10 bereitgestellt wird, und diese Analyse kann nützlich sein, um zu bewerten, ob die Änderungen an Programmcode bestimmte Leistungsmetriken geändert haben. Beispielsweise kann die Leistungsanalyse aufdecken, dass Änderungen an dem Programm die Anzahl an Cache-Misses erhöht oder verringert haben. Andere und/oder unterschiedliche Verwendungen dieser Analyse werden in Betracht gezogen und liegen im Umfang der beigefügten Ansprüche.
  • Gemäß einiger erfindungsgemäßer Ausführungsformen kann die GUI 44 durch Ausführen eines Analyseprogramms betrieben werden, das auf ein oder mehr Prozessorkernen 34 ausführt. Bei anderen erfindungsgemäßen Ausführungsformen kann das Analyseprogramm das Ergebnis von Software sein, die auf dem Hauptsystemprozessor 14 des Systems 10 ausführt. Der Hauptprozessor 14 kann ein oder mehr Mikroprozessoren und/oder Mikroprozessorkerne beinhalten, die Anwendungen ausführen, wie z. B. ein Analyseprogramm. Der entsprechende Programmcode kann in einem Systemspeicher 18 gemäß einiger erfindungsgemäßer Ausführungsformen gespeichert sein. Auf diese Weise kann der Systemspeicher 18 Daten speichern, die für ein oder mehr Anwendungen 20 bezeichnend sind, die von dem Prozessor 14 ausgeführt werden. Eine der Anwendungen 20 kann beispielsweise ein Analyseprogramm sein, das, wenn es von dem Prozessor 14 ausgeführt wird, den Prozessor 14 veranlasst, ein oder mehr Teile der Technik 100 von 2 durchzuführen. Bei dieser Analyse kann der Speicher 18 ein oder mehr anfängliche, zwischenzeitliche oder endgültige Datensätze 22 speichern, die beispielsweise Auswahlen von Softwarefunktion oder Tasks durch den Benutzer; geprüfte Zählerwerte, die von auf dem Grafikprozessor 30 ausführenden Tasks geprüft werden; gezählte Werte, die spezifischen Tasks zugeschrieben werden können; mit den bestimmten gezählten Werten für die Tasks verbundene Fehler; etc. anzeigen können.
  • Unter den anderen Merkmalen des Systems 10 kann das System 10 eine Eingabe/Ausgabe-(I/O-Input/Output)-Schnittstelle 50 beinhalten, um I/O-Daten von solchen Eingabegeräten wie einer Maus oder einer Tastatur zu empfangen, die Tasks zur Analyse auswählen können. Das System 10 kann eine Netzwerkkarte (network interface card, NIC) beinhalten, um mit einem Netzwerk zu kommunizieren.
  • Es wird festgestellt, dass die Architektur, die in 1 dargestellt ist, lediglich ein Beispiel eines Mehrkernsystems ist, das verwendet werden kann, um die Techniken zur Aufteilung des gezählten Wertes, die hierin offenbart sind, zu implementieren. Beispielsweise können bei anderen erfindungsgemäßen Ausführungsformen über Verarbeiten auf dem Hauptprozessor 14 abgeleitete gezählte Werte auf Tasks aufgeteilt werden, die auf dem Prozessor 14 aktiv sind. Des Weiteren kann das System 10 zahlreiche andere Komponenten aufweisen, die nicht in 1 dargestellt sind, wie z. B. zusätzliche Grafikprozessoren, Bridges, Peripheriegeräte und andere Komponenten gemäß anderer erfindungsgemäßer Ausführungsformen.
  • 3 stellt ein Beispiel dar, um zu veranschaulichen, wie das System 10 (1) einen gezählten Wert auf einem bestimmten Task gemäß einiger erfindungsgemäßer Ausführungsformen aufteilt. Mit Bezug auf 3 in Verbindung mit 1 wird für dieses Beispiel angenommen, dass mehrere Tasks 120 (speziell Tasks 1201, 1202, 1203 und 1204 als Beispiele) in überlappenden Zeitintervallen aktiv sind. Das Ziel für dieses Beispiel ist, einen Zähleränderungswert zu bestimmen, der der Ausführung des Tasks 1204 zugeschrieben werden kann. Wie aus 3 ersichtlich, führen Tasks 1201, 1202 und 1203 auf Threads T0, T1 bzw. T2 aus, und überlappen zumindest teilweise mit dem Task 1204, der auf Thread T4 ausführt. Die für dieses Beispiel besonders interessante Zeit ist Zeit t2 bis Zeit t5, während der der Task 1204 aktiv ist. Obwohl der Task 1204 Anfang und Ende von Zählerwerten bei Zeiten t2 bzw. t5 prüft, um einen gezählten Wert abzuleiten, zeigt dieser gezählte Wert nicht direkt einen gezählten Wert an, der einzig dem Task 1204 zugeschrieben werden kann.
  • Um die Änderung bei dem gezählten Wert dem Task 1204 zuzuschreiben, unterteilt das System 10 das Zeitintervall von Zeit t2 bis Zeit t5 in „Zeitscheiben”. In diesem Kontext ist eine „Zeitscheibe” eine Zeiteinheit, in der die Anzahl aktiver Tasks 120 sich nicht ändert. Setzt man dieses Kriterium ein, stellt das in 3 dargestellte Beispiel daher drei relevante Zeitscheiben dar, um den gezählten Wert auf dem Task 1204 aufzuteilen: eine erste Zeitscheibe von t2 bis Zeit t3, in der alle vier Tasks 1201, 1202, 1203 und 1204 aktiv sind; eine zweite Zeitscheibe von Zeit t3 bis Zeit t4, in der die Scheiben 1202, 1203 und 1204 aktiv sind; und eine dritte Zeitscheibe von Zeit t4 bis Zeit t5, in der die Tasks 1203 und 1204 aktiv sind.
  • Gemäß einiger erfindungsgemäßer Ausführungsformen prüft jeder Task 120 idealerweise den Hardwarezähler 34 am Anfang und Ende des Tasks 120. Daher wird für die vier Tasks 1201, 1202, 1203 und 1204, die in 3 dargestellt sind, der Hardwarezähler 34 acht entsprechende Male geprüft. Als nicht einschränkendes Beispiel können die für die geprüften Zählerwerte bezeichnenden Daten auf dem Grafikprozessor 30 gespeichert werden und/oder können dem Speicher 18 kommuniziert werden, wobei beispielsweise der gespeicherte Wert als ein Datensatz 22 gemäß einiger erfindungsgemäßer Ausführungsformen gespeichert wird.
  • Jede Zeitscheibe wird mit einem bestimmten gezählten Wert verbunden. Beispielsweise die Zeitscheibe von t2 bis Zeit t3 wird mit einem gezählten Wert verbunden, der von dem geprüften Zählerwert abgeleitet ist, der bei Zeit t3 genommen wird, minus des geprüften Zählerwertes, der bei Zeit t2 angezeigt wird. Für jede Zeitscheibe teilt das System 10 den verbundenen gezählten Wert auf dem Task 1204 gemäß einer bestimmten Wahrscheinlichkeit auf, dass der Task 1204 den Zählerwert während dieser Zeitscheibe geändert hat. Somit ist für die Zeitscheibe von Zeit t0 bis Zeit t1 der Teil des gezählten Wertes, der dem Task 1204 zugeschrieben werden kann, Null; und ebenso ist für die Zeitscheibe von Zeit t1 bis Zeit t2 der Teil des gezählten Wertes, der dem Task 1204 zugeschrieben werden kann, Null, da der Task 1204 während dieser Zeitscheiben nicht aktiv ist. Für die verbleibenden Zeitscheiben jedoch, die in 3 dargestellt sind, ist der Task 1204 aktiv, und somit schreibt das System 10 einen Teil des gezählten Wertes dem Task 1204 zu.
  • Nachdem das System 10 den aufgeteilten gezählten Wert für jede Zeitscheibe des Tasks 1204 bestimmt hat, führt das System 10 eine Summierung der aufgeteilten gezählten Werte durch, um einen aufgeteilten gezählten Wert für den Task 1204 vom Anfang des Tasks bei Zeit t2 bis zum Ende des Tasks bei Zeit t5 abzuleiten.
  • Als spezifischeres Beispiel ist für die Zeitscheibe von Zeit t2 bis Zeit t3 der Task 1204 gleichzeitig mit den Tasks 1201, 1202 und 1203 aktiv. Als nicht einschränkendes Beispiel schätzt das System 10 die Wahrscheinlichkeit für den Task 1204 als ein Viertel des gezählten Wertes während dieser Zeitscheibe ab, da vier Zeitscheiben aktiv waren. Wenn sich somit beispielsweise der Zähler bei 100 Zählungen während der Zeitscheibe von Zeit t2 bis Zeit t3 ändert, wird ein Viertel, oder eine Zähleränderung von 25, dem Task 1204 für diese Zeitscheibe zugeschrieben. Während der Zeitscheibe von Zeit t3 bis Zeit t4 ist der Task 1204 mit zwei anderen Zeitscheiben 1202 und 1203 aktiv; und demzufolge wird ein Drittel des verbundenen gezählten Wertes dem Task 1204 während dieser Zeitscheibe zugeschrieben. Ebenso ist während der Zeitscheibe von Zeit t4 bis Zeit t5 der Task 1204 mit dem Task 1203 aktiv; und demzufolge schreibt das System 10 eine Hälfte des gezählten Wertes dem Task 1204 während dieser Zeitscheibe zu.
  • Die vorstehend beschriebene proportionale Aufteilung des gezählten Wertes basierend auf der Anzahl an Tasks, die aktiv sind, ist ein Beispiel einer von vielen unterschiedlichen möglichen Arten, den gezählten Wert aufzuteilen. Gemäß anderer erfindungsgemäßer Ausführungsformen beispielsweise kann die Aufteilung des gezählten Wertes auf einem Gewichtungsschema basieren. Beispielsweise kann den Tasks 120, die rechenintensiver sind, eine höhere Gewichtung zugeordnet werden, und somit kann ihnen eine unverhältnismäßig größere Menge des gezählten Wertes zugeordnet werden als im Vergleich zu Tasks, die weniger rechenintensiv sind. Somit werden viele Varianten in Betracht gezogen und liegen im Umfang der beigefügten Ansprüche.
  • Mit Bezug auf 4 in Verbindung mit 1 führt das System 10 gemäß einiger erfindungsgemäßer Ausführungsformen eine Technik 150 durch, um Tasks zu identifizieren, die auf den spezifischen Prozessorkernen 34 analysiert werden sollen. Gemäß der Technik 150 empfängt das System 10 eine Benutzereingabe, die für ausgewählte Tasks bezeichnend ist, gemäß Block 154. Somit kann ein Benutzer, als Beispiel, über die GUI 44 einen bestimmten Aufruf (einen Zeichenaufruf als nicht einschränkendes Beispiel) beispielsweise unter Verwendung einer Maus hervorheben und auswählen. In Antwort auf die ausgewählten Tasks bestimmt das System 10 (Block 158) alle Tasks, die zeitlich mit den ausgewählten Tasks überlappen gemäß Block 158. Nach dieser Identifizierung sortiert das System 10 (Block 162) die analysierten Tasks gemäß Prozessorkern 34 gemäß Block 162.
  • Mit Bezug auf 5A und 5B in Verbindung mit 1, führt das System 10 gemäß einiger erfindungsgemäßer Ausführungsformen eine Technik 200 für jeden Prozessorkern 34 durch, nachdem das System 10 die auf jedem Prozessorkern 34 zu analysierenden Tasks bestimmt hat.
  • Gemäß der Technik 200 verarbeitet das System 10 jeden ausgewählten Task auf jedem Prozessorkern 34 wie folgt. Zuerst identifiziert (Block 204) das System 10 Zeitscheiben für den nächsten verfügbaren Task und ruft geprüfte Zählerwerte für die Anfangs- und Endzeiten eines jeden Tasks ab (Block 208). Das System 10 kann die Anfangs- und/oder Endzeit interpolieren, wenn eine Prüfung nicht verfügbar ist. Auf diese Art und Weise bestimmt das System 10 (Raute 212), ob eine Interpolation einer Prüfung benötigt wird, und wenn ja, führt es die Interpolation gemäß Block 214 durch.
  • Gemäß einiger erfindungsgemäßer Ausführungsformen führt das System 10 die Prüfinterpolation wie folgt durch. Das System 10 findet den nächsten geprüften Zählerwert auf beiden Seiten der Zeit, bei der eine Prüfung interpoliert werden soll. Basierend auf dem Ort dieser Zeit zwischen den beiden Zeiten an denen Prüfungen verfügbar sind, stellt das System 10 den Unterschied bei den geprüften Werten ein, um den interpolierten Wert abzuleiten. Dies kann eine lineare Interpolation gemäß einiger erfindungsgemäßer Ausführungsformen sein. Als nicht einschränkendes Beispiel können Prüfwerte für Prozessorzyklus-Zählungen 100 und 200 verfügbar sein, und diese Werte können Werte 300 bzw. 360 aufweisen. Die Zeit, bei der die Prüfung interpoliert werden soll, kann Prozessorzyklus-Zählung 120 sein. Daher wäre für dieses Szenario die interpolierte Prüfung 312.
  • Noch immer mit Bezug auf 1, 5A und 5B geht eine Überprüfung nach einer möglichen Interpolation eines oder mehrerer Prüfwerte zu Raute 218 weiter, bei der das System 10 bestimmt, ob einem bestimmten Task ein Anfangs- oder Endzeitstempel fehlt. Wenn ja, dann erzeugt das System 10 gemäß Block 222 einen entsprechenden Zeitstempel, indem die nächste Anfangs- oder Endzeit eines weiteren Tasks gefunden wird.
  • Nachdem die Daten wie vorstehend gegeben vorausgesetzt wurden, geht das System 10 gemäß der Technik 200 weiter, um den gezählten Wert für jede Zeitscheibe des analysierten Tasks gemäß der Zeitscheiben des Tasks aufzuteilen. Auf diese Art und Weise bestimmt das System 10 gemäß Block 226 einen gezählten Wert für jede Zeitscheibe und bestimmt (Block 230) für jede Zeitscheibe die Wahrscheinlichkeit, dass der gezählte Wert durch den Task bedingt ist. Als nächstes teilt das System 10 (Block 234) den gezählten Wert für jede Zeitscheibe basierend auf der bestimmten Wahrscheinlichkeit auf und summiert daraufhin die aufgeteilten gezählten Werte für alle Zeitscheiben des analysierten Tasks gemäß Block 238, um einen aufgeteilten gezählten Wert für den gesamten Task abzuleiten.
  • Schließlich gibt das System 10 (Block 242) gemäß der Technik 200 den aufgeteilten gezählten Wert für den Task und einen Wert, der für den Fehler in dem bestimmten gezählten Wert bezeichnend ist, aus. Als nicht einschränkendes Beispiel kann der Fehler mit jeder Zeitscheibe zusammen mit dem aufgeteilten Wert berechnet werden. Wenn beispielsweise für eine bestimmte Zeitscheibe der aufgeteilte gezählte Wert aufgrund zweier anderer Tasks, die gleichzeitig in der Zeitscheibe aktiv sind, dreiunddreißig Prozent der gesamten Zeitänderung für die Zeitscheibe beträgt, dann wäre der berichtete Fehler der Prozentsatz des verbleibenden aufgeteilten gezählten Wertes oder siebenundsechzig Prozent. Es wird festgestellt, dass der Fehler mit entsprechend zunehmender Anzahl gleichzeitig aktiver Tasks abnimmt. Somit ist der Fehler für eine ziemlich große Anzahl aktiver Tasks, wie z. B. mehrere tausend Tasks, relativ gering.
  • Schließlich bestimmt das System 10 gemäß der Technik 200, ob ein weiterer Task für den Prozessorkern analysiert werden soll gemäß Raute 246. Wenn ja, kehrt die Überprüfung zu Block 154 (5A) zurück.
  • Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden für Fachleute, die den Vorteil dieser Offenbarung kennen, zahlreiche Modifikationen und Varianten davon selbstverständlich sein. Es ist beabsichtigt, dass die beigefügten Ansprüche alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Umfang dieser vorliegenden Erfindung entsprechen.

Claims (20)

  1. Verfahren, umfassend: Daten bereitzustellen, die für einen gezählten Wert bezeichnend sind, der durch einen Hardwarezähler eines Prozessorkerns während eines Zeitsegments erworben wird, in dem eine Vielzahl an Tasks auf dem Kern aktiv sind; und bei einer prozessorbasierten Maschine eine Wahrscheinlichkeit zu bestimmen, dass der gezählte Wert einem gegebenen Task der Tasks während des Zeitsegments zugeschrieben werden kann, und einen Teil des gezählten Wertes dem gegebenen Task zumindest teilweise basierend auf der bestimmten Wahrscheinlichkeit zuzuschreiben.
  2. Verfahren nach Anspruch 1, wobei der Vorgang eines Bestimmens der Wahrscheinlichkeit umfasst: das Zeitsegment in Zeitscheiben zu unterteilen, sodass alle am Anfang einer jeden Zeitscheibe aktiven Tasks zumindest bis zum Ende der Zeitscheibe aktiv waren; und für jede Zeitscheibe eine Wahrscheinlichkeit zu bestimmen, dass der gezählte Wert dem gegebenen Task während der Zeitscheibe zugeschrieben werden kann.
  3. Verfahren nach Anspruch 2, wobei der Vorgang eines Bestimmens einer Wahrscheinlichkeit, dass der gezählte Wert dem gegebenen Task während der Zeitscheibe zugeschrieben werden kann umfasst, dass erste Daten bereitgestellt werden, die für eine Prüfung des Zählers am Anfang der Zeitscheibe bezeichnend sind, und dass zweite Daten bereitgestellt werden, die für eine Prüfung des Zählers am Ende der Zeitscheibe bezeichnend sind.
  4. Verfahren nach Anspruch 3, wobei der Vorgang eines Bereitstellens der ersten Daten umfasst, dass die Prüfung des Zählers am Anfang der Zeitscheibe interpoliert wird, basierend zumindest teilweise auf Daten, die für eine Zählerprüfung zu einer anderen Zeit bezeichnend sind.
  5. Verfahren nach Anspruch 3, wobei der Vorgang eines Bereitstellens der zweiten Daten umfasst, dass die Prüfung des Zählers am Ende der Zeitscheibe interpoliert wird, basierend zumindest teilweise auf Daten, die für eine Zählerprüfung zu einer anderen Zeit bezeichnend sind.
  6. Verfahren nach Anspruch 1, weiter umfassend: eine Benutzeroberfläche auf der Maschine bereitzustellen, um den gegebenen Task auszuwählen; und den zugeschriebenen Teil der Änderung auf der Benutzeroberfläche anzuzeigen.
  7. Verfahren nach Anspruch 6, wobei der Vorgang eines Bereitstellens der Benutzeroberfläche umfasst, dass die Benutzeroberfläche bereitgestellt wird, um eine Gruppe von Tasks auszuwählen, die den gegebenen Task beinhaltet, wobei das Verfahren weiter umfasst: zu identifizieren, dass der gegebene Task auf dem Prozessorkern aktiv war.
  8. System, umfassend: einen Hardwarezähler eines Prozessorkerns, wobei der Zähler einen gezählten Wert während des Zeitsegments anzeigen soll, in dem eine Vielzahl von Tasks auf dem Kern aktiv ist; und einen Prozessor, um eine Wahrscheinlichkeit zu bestimmen, dass der gezählte Wert einem gegebenen Task der Tasks während des Zeitsegments zugeschrieben werden kann, und einen Teil des gezählten Wertes dem gegebenen Task zumindest teilweise basierend auf der bestimmten Wahrscheinlichkeit zuzuschreiben.
  9. System nach Anspruch 8, wobei der Prozessor: das Zeitsegment in Zeitscheiben unterteilt, sodass alle am Anfang einer jeden Zeitscheibe aktiven Tasks zumindest bis zum Ende der Zeitscheibe aktiv waren; für jede Zeitscheibe eine Wahrscheinlichkeit bestimmt, dass der gezählte Wert dem gegebenen Task während der Zeitscheibe zugeschrieben werden kann; und Ergebnisse der Bestimmungen einer Wahrscheinlichkeit für jede Zeitscheibe kombiniert.
  10. System nach Anspruch 9, wobei der Prozessor: erste Daten bereitstellt, die für einen geprüften Wert bezeichnend sind, der durch den Zähler am Anfang der Zeitscheibe angezeigt wird, und zweite Daten bereitstellt, die für einen geprüften Wert bezeichnend sind, der durch den Zähler am Ende der Zeitscheibe angezeigt wird.
  11. System nach Anspruch 10, wobei der Prozessor den geprüften Wert interpoliert, der durch den Zähler am Anfang der Zeitscheibe basierend zumindest teilweise auf Daten, die für einen geprüften Zählerwert zu einer anderen Zeit bezeichnend sind, angezeigt wird.
  12. System nach Anspruch 10, wobei der Prozessor den geprüften Wert interpoliert, der durch den Zähler am Ende der Zeitscheibe basierend zumindest teilweise auf Daten, die für einen geprüften Zählerwert zu einer anderen Zeit bezeichnend sind, angezeigt wird.
  13. System nach Anspruch 8, wobei der Prozessor eine Benutzeroberfläche auf der Maschine bereitstellt, um den gegebenen Task auszuwählen, und den zugeschriebenen Teil der Änderung auf der Benutzeroberfläche anzeigt.
  14. System nach Anspruch 8, wobei der Prozessor die Benutzeroberfläche bereitstellt, um eine Gruppe von Tasks auszuwählen, die den gegebenen Task beinhaltet, und identifiziert, dass der gegebene Task auf dem Prozessorkern aktiv war.
  15. Produkt, das ein computerlesbares Speichermedium umfasst, um Befehle zu speichern, die, wenn sie ausgeführt werden, einen Computer veranlassen: Daten bereitzustellen, die für einen gezählten Wert bezeichnend sind, der durch einen Hardwarezähler eines Prozessorkerns während eines Zeitsegments angezeigt wird, in dem Tasks auf dem Kern aktiv sind; und eine Wahrscheinlichkeit zu bestimmen, dass der gezählte Wert einem gegebenen Task der Tasks während des Zeitsegments zugeschrieben werden kann, und einen Teil des gezählten Wertes dem gegebenen Task zumindest teilweise basierend auf der bestimmten Wahrscheinlichkeit zuzuschreiben.
  16. Produkt nach Anspruch 15, wobei das Speichermedium Befehle speichert, die, wenn sie von dem Computer ausgeführt werden, den Computer veranlassen: das Zeitsegment in Zeitscheiben zu unterteilen, sodass alle am Anfang einer jeden Zeitscheibe aktiven Tasks zumindest bis zum Ende der Zeitscheibe aktiv waren; für jede Zeitscheibe eine Wahrscheinlichkeit zu bestimmen, dass die Änderung dem gegebenen Task während der Zeitscheibe zugeschrieben werden kann; und Ergebnisse der Bestimmungen einer Wahrscheinlichkeit für jede Zeitscheibe zu kombinieren.
  17. Produkt nach Anspruch 16, wobei das Speichermedium Befehle speichert, die, wenn sie von dem Computer ausgeführt werden, den Computer veranlassen, erste Daten bereitzustellen, die für den geprüften Wert bezeichnend sind, der durch den Zähler am Anfang der Zeitscheibe angezeigt wird, und zweite Daten bereitzustellen, die für den geprüften Wert bezeichnend sind, der durch den Zähler am Ende der Zeitscheibe angezeigt wird.
  18. Produkt nach Anspruch 15, wobei das Speichermedium Befehle speichert, die, wenn sie von dem Computer ausgeführt werden, den Computer veranlassen, eine Benutzeroberfläche auf der Maschine bereitzustellen, um den gegebenen Task auszuwählen, und den zugeschriebenen Teil des gezählten Wertes auf der Benutzeroberfläche anzuzeigen.
  19. Produkt nach Anspruch 15, wobei der Computer einen Grafikprozessor umfasst, um die Befehle auszuführen.
  20. Produkt nach Anspruch 15, wobei der Computer einen Hauptprozessor, um Befehle auszuführen, und einen Grafikprozessor umfasst, der den Prozessorkern umfasst.
DE102010053971A 2009-12-23 2010-12-09 Aufteilen eines gezählten Wertes auf einem auf einem Mehrkernprozessor ausgeführten Task Ceased DE102010053971A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/645,609 2009-12-23
US12/645,609 US8453146B2 (en) 2009-12-23 2009-12-23 Apportioning a counted value to a task executed on a multi-core processor

Publications (1)

Publication Number Publication Date
DE102010053971A1 true DE102010053971A1 (de) 2011-08-18

Family

ID=43531603

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010053971A Ceased DE102010053971A1 (de) 2009-12-23 2010-12-09 Aufteilen eines gezählten Wertes auf einem auf einem Mehrkernprozessor ausgeführten Task

Country Status (5)

Country Link
US (1) US8453146B2 (de)
CN (1) CN102110024B (de)
DE (1) DE102010053971A1 (de)
GB (1) GB2476547B (de)
TW (1) TWI434215B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
GB2555586B (en) * 2016-10-31 2019-01-02 Imagination Tech Ltd Performance profiling in a graphics unit
CN112052081B (zh) * 2020-08-13 2022-06-03 烽火通信科技股份有限公司 一种任务调度方法、装置及电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288237A (ja) * 2002-03-27 2003-10-10 Hitachi Ltd 制御装置における実行時間測定装置及び実行時間測定方法
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US6925424B2 (en) * 2003-10-16 2005-08-02 International Business Machines Corporation Method, apparatus and computer program product for efficient per thread performance information
US20060230409A1 (en) * 2005-04-07 2006-10-12 Matteo Frigo Multithreaded processor architecture with implicit granularity adaptation
WO2007017932A1 (ja) * 2005-08-09 2007-02-15 Fujitsu Limited スケジュール制御プログラム及びスケジュール制御方法
TW200805047A (en) * 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
US8402463B2 (en) * 2006-10-30 2013-03-19 Hewlett-Packard Development Company, L.P. Hardware threads processor core utilization
US8028286B2 (en) * 2006-11-30 2011-09-27 Oracle America, Inc. Methods and apparatus for scheduling threads on multicore processors under fair distribution of cache and other shared resources of the processors
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
US7725518B1 (en) * 2007-08-08 2010-05-25 Nvidia Corporation Work-efficient parallel prefix sum algorithm for graphics processing units
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
CN102057356A (zh) * 2008-06-11 2011-05-11 高通股份有限公司 用于测量任务负载的方法和系统
US8601444B2 (en) * 2009-10-27 2013-12-03 Microsoft Corporation Analysis and timeline visualization of thread activity

Also Published As

Publication number Publication date
GB2476547B (en) 2013-05-22
TWI434215B (zh) 2014-04-11
CN102110024B (zh) 2013-06-19
CN102110024A (zh) 2011-06-29
US20110154238A1 (en) 2011-06-23
TW201140449A (en) 2011-11-16
GB201020732D0 (en) 2011-01-19
US8453146B2 (en) 2013-05-28
GB2476547A (en) 2011-06-29

Similar Documents

Publication Publication Date Title
DE69029983T2 (de) Leistungsverbesserungsgerät für auf Regeln beruhendes Expertensystem
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE102011101328A1 (de) Kachelrendering für die Bildbearbeitung
DE102013221052A1 (de) System und Verfahren für Batch-Auswertungs-Programme
EP2137615B1 (de) Verfahren zum rechnergestützten ermitteln der abhängigkeiten einer vielzahl von modulen eines technischen systems, insbesondere eines softwaresystems
EP1756714A2 (de) Verfahren zur prüfung der echtzeitfähigkeit eines systems
CN111143143B (zh) 一种性能测试方法及装置
DE102011005382A1 (de) Aufgabenausführungs-Steuereinheit und Aufzeichnungsmedium, auf dem ein Aufgabenausführungs-Steuerprogramm aufgezeichnet ist
DE102006046201A1 (de) Verfahren zum rechnergestützten Optimieren des Ressourcenverbrauchs eines Programms
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
DE202017106569U1 (de) Analyse grossangelegter Datenverarbeitungsaufträge
DE102010050430A1 (de) Das Durchführen paralleler Schattierungsoperationen
DE60314742T2 (de) System und verfahren zur überwachung eines computers
DE102013014778A1 (de) System und verfahren zur synchronisierung von strängen in einem divergenten codegebiet
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
DE112012000245T5 (de) Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung
DE102010053971A1 (de) Aufteilen eines gezählten Wertes auf einem auf einem Mehrkernprozessor ausgeführten Task
DE102010053558A1 (de) Relationales Modellieren zur Leistungsanalyse von Mehrkernprozessoren unter Verwendung virtueller Tasks
DE102013000857A1 (de) Kompakte Funktionsablaufprotokollierung
DE112012004468B4 (de) Anwendungs-Level-Spekulative-Verarbeitung
DE102010053701A1 (de) Beziehungsmodellierung für Leistungsanalyse von Mehrkernprozessoren
EP1745375A1 (de) Verfahren zur bestimmung von verklemmungen in nebenläufigen prozessen
DE102008022302A1 (de) Elektronische Rechenvorrichtung zur Bestimmung einer Ausführzeit einer Aufgabe und Programm
DE102021200575A1 (de) Anomalieerkennungsvorrichtung, Anomalieerkennungsverfahren und Programm
DE102016117568B3 (de) Verfahren zum Betrieb eines Watchdog umfassend eine Mustererkennung für wiederkehrende Lastsituationen

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0011340000

Ipc: G06F0009500000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0011340000

Ipc: G06F0009500000

Effective date: 20141013

R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R130 Divisional application to

Ref document number: 102010064612

Country of ref document: DE

R003 Refusal decision now final