DE69614645T2 - System und Verfahren zum Profilieren von Code für eine symmetrische Multiprozessorarchitektur - Google Patents
System und Verfahren zum Profilieren von Code für eine symmetrische MultiprozessorarchitekturInfo
- Publication number
- DE69614645T2 DE69614645T2 DE69614645T DE69614645T DE69614645T2 DE 69614645 T2 DE69614645 T2 DE 69614645T2 DE 69614645 T DE69614645 T DE 69614645T DE 69614645 T DE69614645 T DE 69614645T DE 69614645 T2 DE69614645 T2 DE 69614645T2
- Authority
- DE
- Germany
- Prior art keywords
- child
- subprocess
- memory
- subprocesses
- delta
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 127
- 230000008569 process Effects 0.000 claims description 104
- 238000005070 sampling Methods 0.000 claims 8
- 230000008901 benefit Effects 0.000 description 12
- 230000001427 coherent effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- 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/865—Monitoring of software
-
- 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/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
- Diese Erfindung bezieht sich allgemein auf Computerprogrammierung und insbesondere auf eine Code- Pro filanalyseeinrichtung zum Sammeln von Leistungsmetriken über einen Prozeß, der auf einem symmetrischen Multiprozessorcomputersystem ausgeführt wird.
- Moderne Computersysteme umfassen häufig mehrere zentrale Verarbeitungseinheiten ("CPUs"; CPU = central processing unit), welche unterschiedliche oder die gleichen Teile eines Prozesses gleichzeitig ausführen können. Solche Computer werden symmetrische Multiprozessor- ("SMP " = symmetric muitiprocessor) Systeme genannt. Ein einziger Prozeß, der auf einem solchen Computer ausgeführt wird, kann mehrere Steuerteilprozesse bzw. Steuerthreads aufweisen, die gleichzeitig auf unterschiedlichen CPUs ausgeführt werden.
- Beim Entwickeln oder Portieren von Software für SMP-Systeme ist es vorteilhaft, den Code so zu optimieren, daß er das System voll ausnutzen kann. Beispielsweise möchte ein Programmierer den Code so optimieren, daß Prozeßberechnungen zwischen den Teilprozessen ausgeglichen sind. Gleichartig dazu möchte ein Programmierer die Anzahl der CPUs maximieren, die während spezieller Coderegionen aktiv arbeiten.
- Um diese Ziele zu erreichen, verwendet ein Programmierer eine Code-"Profilanalyseeinrichtung", um das Verhalten eines Prozesses zu analysieren und um Leistungsengpässe zu entfernen. Solche Profilanalyseeinrichtungen arbeiten typischerweise durch Bestimmen der Anzahl von CPUs und der CPU- Zeit, die von einem Prozeß verwendet wird, zusammen mit anderen Leistungsinformationen für spezielle Coderegionen. Der Programmierer verwendet dann die Ergebnisse der Profilanalyseeinrichtung, um die Prozeßstruktur und den Prozeßbetrieb zu überarbeiten.
- Beispielsweise kann ein Programmierer eine Profilanalyseeinrichtung verwenden, um die CPU-Zeit mit der realen Zeit oder von einer Wanduhr angezeigten Zeit zu vergleichen, die benötigt wird, um einen Prozeß auszuführen. Idealerweise ist das Gleichzeitigkeitsverhältnis, das Verhältnis der CPU-Zeit zu der von einer Wanduhr angezeigten Zeit, gleich zu der Anzahl von CPUs, die für den Prozeß verfügbar sind. Falls das Verhältnis geringer ist als die Anzahl der CPUs, dann verlangsamen der Systemzusatzaufwand oder die Leistungsengpässe den Prozeß und die Teilprozesse desselben.
- Einige herkömmliche Profilanalyseeinrichtungen liefern den Programmierern jedoch keinen Einblick in das Verhalten des Prozesses auf einer Teilprozeß-zu-Teilprozeß-Basis. Ein äuβ erst naiver Lösungsansatz des Bestimmens der CPU- Verwendung, der von einigen Profilanalyseeinrichtungen verwendet wird, besteht darin, einen CPU-on-board- bzw. -an- Bord-Zeitgeber zu verwenden, um die Zeit vor und nach einer Coderegion abzufragen. Dieser Lösungsansatz bestimmt den Zeitumfang, den der Prozeß für diese Coderegion benötigt hat. Dieser Ansatz ist jedoch nicht in der Lage, den Arbeitsumfang zu erklären, der von Teilprozessen durchgeführt wird, die symmetrisch auf unterschiedlichen CPUs ausgeführt werden. Das heißt, die Profilanalyseeinrichtung wird denjenigen von einer Wanduhr angezeigten Zeitumfang angeben, der für die Aufgabe benötigt wurde, aber nicht die CPU-Zeit, die von Teilprozessen zur Ausführung auf anderen Prozessoren verwendet wurde. Daher befähigen die Informationen, die durch den naiven Lösungsansatz zurückgegeben werden, einen Programmierer nicht, zu bestimmen, welche Teile eines Prozesses wirklich den größten Teil der Zeit des Computersystems belegen.
- Einige moderne Profilanalyseeinrichtungen versuchen, die Prozeßleistungsfähigkeit auf einer Teilprozeß-zu- Teilprozeß-Basis zu messen. Solche Profilanalyseeinrichtungen weisen jedoch unterschiedliche Probleme auf. Einige Pro filanalyseeinrichtungen erfordern große Mengen an Datenplatz, um Leistungsinformationen für jeden gleichzeitigen Teilprozeß zu halten. Andere erfordern extreme Synchronisation, um sicherzustellen, daß sie genaue Ergebnisse erzeugen. Weitere Profilanalyseeinrichtungen sind einfach nicht gut bei Systemen mit vielen Prozessoren geeignet bzw. dafür skaliert. Diese Typen von Profilanalyseeinrichtungen werden in Verbindung mit der detaillierten Beschreibung des bevorzugten Ausführungsbeispiels detaillierter erörtert.
- Daher gibt es in der Technik Bedarf nach einer Profilanalyseeinrichtung, die einen Programmierer mit einer vollständigen Analyse von CPU-Zeit und anderen Leistungsmetriken eines Mehrfachfarbenprozesses, der auf einem SMP-System ausführt, versorgt. Genauer gesagt, gibt es einen Bedarf nach einer Profilanalyseeinrichtung, die Leistungsmetriken an dem Prozeß und Teilprozeßebenen während einem einzigen Durchlauf des profilanalysierten Prozesses genau bestimmt.
- Experience with a performance analyzer for multithreaded applications, Hansen G. J. u. a., Proceedings of Supercomputing Conference, New York, 12. - 16. November 1990, Nr. CONF. 3, 12. November 1990, IEEE, Seiten 124-131, offenbart eine Leistungsanalyseeinrichtung mit der Fähigkeit, parallele Regionen von Codes zu überwachen, die in einer time-sharing-bzw. Teilnehmer-Umgebung ausgeführt werden. Dieses Dokument beschreibt außerdem, wie Profilanalyseinformationen für eine parallele Region gemessen werden, welche Systemanforderungen für den Betrieb derselben bestehen, und wertet den beschriebenen Lösungsansatz aus.
- Der obige und ein weiterer Bedarf werden durch ein Verfahren der Profilanalyse gemäß Anspruch 1 und durch eine Profilanalyseeinrichtung gemäß Anspruch 6 und 10 erfüllt, das Leistungsmetriken für alle Teilprozesse, die einen Prozeß auf einem SMP-Computersystem ausführen, genau mißt. Die Profilanalyseeinrichtung verwendet eine dynamische Instrumentierung, um zu bewirken, daß Teilprozesse Leistungsmetriken vor und nach speziellen Coderegionen abfragen. Zusätzlich verwendet die Profilanalyseeinrichtung Erweiterungen auf eine Parallelunterstützungsschicht, um einen E1- ternteilprozeß mit seinen Kindteilprozessen auszurichten. Jeder Teilprozeß speichert die gemessene Leistungsmetrik, oder Delta, in einer Speicherzelle oder Zellen, die der Region und der Elternregion desselben entsprechen. Wenn der Prozeß abgeschlossen ist, tastet die Profilanalyseeinrichtung die Speicherbereiche ab bzw. geht dieselben durch und summiert die Deltas für jede spezielle Code-Ebene. Danach können die Ergebnisse auf der Teilprozeß- oder Prozeßebene analysiert werden. Auf diese Weise kann die Profilanalyseeinrichtung angepaßt werden, um mit jedem Prozeß zu arbeiten, der auf dem Computersystem ausgeführt wird.
- Ein technischer Vorteil der vorliegenden Erfindung ist ein Weg, eine Profilanalyse bezüglich eines Codes auf symmetrischen Multiprozessorcomputersystemen durchzuführen, der alle Leistungsmetriken innerhalb einer Coderegion auf einer Teilprozeß-um-Teilprozeß-Ebene berücksichtigt.
- Ein weiterer technischer Vorteil der vorliegenden Erfindung besteht in einem Weg, eine Codeprofilanalyse durchzuführen, die Gleichzeitigkeitsverhältnisse von 0 bis "n" Teilprozesse erzielt.
- Ein weiterer technischer Vorteil der vorliegenden Erfindung liegt darin, daß sie eine Summierung der Leistungsmetriken für den gesamten Prozeß nach einem einzigen Ablauf des Prozesses schafft.
- Ein weiterer technischer Vorteil der vorliegenden Erfindung besteht in einem Weg, eine Codeprofilanalyse durchzuführen, der eine Synchronisation und einen Datenaustausch zwischen den Teilprozessen minimiert.
- Ein weiterer technischer Vorteil der vorliegenden Erfindung besteht in einem Weg, eine Codeprofilanalyse durchzuführen, der mit Nur-Lese-Zeitgebern/Zählern arbeitet, die auf einer Teilprozeßbasis beibehalten werden, oder auf die auf einer Teilprozeßbasis zugegriffen wird, und der keine Synchronisation zwischen den Teilprozessen erfordert.
- Ein weiterer technischer Vorteil der vorliegenden Erfindung ist ein Weg, Codeprofilanalyse durchzuführen, die mit einer zunehmenden Anzahl von Teilprozessen und Prozessoren gut mißt.
- Die vorangehenden Ausführungen haben die Merkmale und technischen Vorteile der vorliegenden Erfindung eher breit dargelegt, damit die folgende detaillierte Beschreibung der Erfindung besser verstanden werden kann. Zusätzliche Merkmale und Vorteile der Erfindung werden hierin nachfolgend beschrieben, welche das Thema der Ansprüche der Erfindung bilden. Für einen Fachmann auf diesem Gebiet sollte es offensichtlich sein, daß die Konzeption und das offenbarte spezifische Ausführungsbeispiel leicht als eine Basis zum Modifizieren oder Entwickeln anderer Strukturen zum Ausführen der gleichen Zwecke der vorliegenden Erfindung verwendet werden können. Ein Fachmann auf diesem Gebiet sollte außerdem erkennen, daß solche gleichwertigen Konstruktionen nicht von dem Schutzumfang der Erfindung, wie er in den beigefügten Ansprüchen ausgeführt ist, abweichen.
- Für ein vollständigeres Verständnis der vorliegenden Erfindung und die Vorteile derselben wird nun Bezug genommen auf die folgenden Beschreibungen in Zusammenhang mit den beiliegenden Zeichnungen, wobei:
- Fig. 1 ein bevorzugtes Ausführungsbeispiel einer Profilanalyseeinrichtung gemäß der vorliegenden Erfindung darstellt;
- Fig. 2 eine Profilanalyseeinrichtung des Stands der Technik darstellt;
- Fig. 3 eine Profilanalyseeinrichtung des Stands der Technik darstellt;
- Fig. 4 die Probleme darstellt, die der Profilanalyseeinrichtung von Fig. 3 anhaften;
- Fig. 5 ein Blockdiagramm eines symmetrischen Multiprozessorcomputersystems darstellt; und
- Fig. 6 ein Blockdiagramm darstellt, das die wirksamen Komponenten des Computers von Fig. 5 darstellt.
- Die vorliegende Erfindung analysiert das Profil eines Prozesses, der auf einem Computersystem ausgeführt wird. Ein "Prozeß" ist ein Programm oder ein Teil eines Programms, das eine spezielle Sequenz von Befehlen ausführt. Folglich ist ein Prozeß oft äquivalent zu einer Anwendung oder einem anderen allgemeinen Programmtyp.
- Ein Prozeß kann aus einer Mehrzahl von Teilprozessen bestehen. Teilprozesse sind Aktivitäten, die einen Prozeß zusammenwirkend bis zu seinem Ende ausführen. In anderen Worten, ein Teilprozeß ist ein Ausführungsstück, das in Zusammenwirkung mit anderen Teilprozessen arbeitet, um das Problem zu lösen, an dem der Prozeß arbeitet.
- Diese Anmeldung nimmt häufig auf Code-"Regionen" Bezug. Eine Region ist lediglich ein Abschnitt eines Codes, wie z. B. eine Routine oder Schleife. Eine Coderegion kann in einer anderen Region verschachtelt bzw. eingefügt sein. In diesem Fall ist die umgebende Region der "Elternteil" und die verschachtelte Region ist das "Kind".
- Ein Teilprozeß kann eine Coderegion entweder symmetrisch oder asymmetrisch ausführen. Eine symmetrische Ausführung tritt auf, wenn mehrere Teilprozesse die selbe Coderegion gleichzeitig entweder bezüglich gemeinsam verwendeter oder nicht gemeinsam verwendeter Daten ausführen. Symmetrische Teilprozesse werden gebildet, wenn sich ein Elternteilprozeß in mehrere Kindteilprozesse aufteilt oder diese hervorbringt, wenn derselbe eine spezielle Coderegion erreicht. Die Ausführung wird, während sich dieselbe in der Coderegion befindet, "symmetrische Parallelität" genannt. Nachdem die Coderegion ausgeführt wurde, verbinden sich die Teilprozesse wieder. Eine asymmetrische Ausführung dagegen ist charakterisiert durch Teilprozesse, die unabhängig unterschiedliche Coderegionen bezüglich gemeinschaftlich verwendeter oder nicht gemeinschaftlich verwendeter Daten ausführen.
- Darüber hinaus können Teilprozesse eine Parallelregion in "direkter" oder "indirekter" Parallelität ausführen. Direkte Parallelität tritt auf, wenn der Kindteilprozeß, der die Parallelregion ausführt, in Wirklichkeit der gleiche Teilprozeß ist wie der Elternteil. Indirekte Parallelität tritt auf, wenn der Kindteilprozeß, der die Parallelregion ausführt, für den bzw. auf Geheiß des Elternteils arbeitet.
- Zusätzlich nimmt diese Erörterung gelegentlich auf Teilprozesse als auf einer speziellen "Ebene", z. B. der Elternebene, arbeitend Bezug. Die Ebene eines Teilprozesses entspricht dem, wie tief das Steuerflußkonstrukt, die durch den: Teilprozeß ausgeführt wird, wie z. B. eine Routine oder Schleife, innerhalb anderer Konstrukte verschachtelt ist. Beispielsweise kann ein Elternteilprozeß, der eine Routine ausführt, Kindteilprozesse hervorbringen, um eine Schleife innerhalb der Routine auszuführen. In diesem Beispiel arbeiten die Kindteilprozesse sowohl auf der Schleifen- als auch der Routinenebene, während der Elternteilprozeß auf der Routineebene arbeitet.
- Die erfindungsgemäße Profilanalyseeinrichtung ermöglicht es einem Programmierer, die Leistungsmetriken eines Prozesses und die Teilprozesse desselben zu visualisieren, während sie die unterschiedlichen Ebenen des Prozesses ausführen. Leistungsmetriken umfassen Informationen, wie z. B. verwendete bzw. benötigte CPU-Zeit und von einer Wanduhr angezeigte Zeit, Daten- und Befehlscachefehlschläge und Befehlszählungen. Durch wiederholte Anwendung der dargestellten Prinzipien macht die erfindungsgemäße Profilanalyseeinrichtung jede dieser Messungen an jeder Ebene des Prozesses für den Programmierer zugänglich.
- Der Rest dieser Erörterung konzentriert sich jedoch hauptsächlich auf CPU-Zeit und von einer Wanduhr angezeigte Zeit. Von einer Wanduhr angezeigte Zeit ist echte Zeit. Die CPLI-Zeit dagegen ist der Zeitumfang, den ein Prozeß oder Teilprozeß zum Ausführen erfordert. Beispielsweise kann ein Prozeß mit vier Teilprozessen in 10 Sekunden von einer Wanduhr angezeigten Zeit ausgeführt werden, aber tatsächlich 40 Sekunden (10 Sekunden pro Teilprozeß) an CPU-Zeit erfordern. Das Verhältnis von CPU-Zeit zu einer von einer Wanduhr angezeigten Zeit wird als das "Gleichzeitigkeitsverhältnis" bezeichnet. Das Gleichzeitigkeitsverhältnis kann einen Wert von 0 bis "n" Teilprozesse aufweisen.
- Durch Verwenden der vorliegenden Erfindung kann ein Programmierer oder anderer Beobachter genau bestimmen, wieviel CPU-Zeit von jedem Teilprozeß oder der Summe aller Teilprozesse, die an jeder Ebene eines Prozesses ausführen, verwendet wurde. Die beste Möglichkeit, den Betrieb der vorliegenden Erfindung zu erklären, ist, sie dem Stand der Technik gegenüber zu stellen.
- Fig. 2 zeigt eine Codeprofilanalyseeinrichtung des Stands der Technik, die versucht, das naive Schema zu verbessern, das in dem Hintergrundabschnitt erörtert wurde, durch Berücksichtigen unterschiedlicher Teilprozesse. Fig. 2 umfaßt eine Coderegion 210, vier Teilprozesse 211-214 und einen Speicherbereich 220 mit einer Datenzelle 222. Obwohl in Fig. 2 und in anderen Figuren nur vier Teilprozesse 211 - 214 gezeigt sind, ist es wichtig, darauf hinzuweisen, daß ein Prozeß eine beliebige Anzahl von Teilprozessen aufweisen kann.
- Zusammen führen die vier Teilprozesse 211-214 die Region 210 symmetrisch aus. Jeder Teilprozeß umfaßt ein entsprechendes CPU-Zeitdelta 224-227. Jedes Delta repräsentiert der Umfang an CPU-Uhrzeit, den sein entsprechender Teilprozeß 211-214 damit verbracht hat, auf der Coderegion 210 zu arbeiten. Ein Teilprozeß bestimmt sein Delta typischerweise durch Abfragen eines CPU-Zeitgebers vor und nach der Coderegion. Das Delta ist der Zeitunterschied zwischen den Abfragen.
- Die Datenzelle 222 ist einfach eine Speicheradresse innerhalb des Speicherbereichs 220, die in der Lage ist, einen Deltawert zu halten. Jeder Teilprozeß 211-214 kann auf den Wert in der Zelle 222 zugreifen. Ein Teilprozeß muß jedoch ausschließlichen Zugriff auf die Zelle 222 erhalten, bevor der Teilprozeß den darin enthaltenen Wert ändern kann. Um ausschließlichen Zugriff zu erhalten, muß ein Teilprozeß die Zelle 222 sperren. Der Sperrvorgang wird als "Synchronisation" bezeichnet. Wenn ein Teilprozeß das Aktualisieren der Zelle 222 abgeschlossen hat, löst der Teilprozeß die Sperre.
- Beim Betrieb weist die Profilanalyseeinrichtung von Fig. 2 jeden Teilprozeß 211-214 an, seine CPU-Uhr abzufragen, bevor und nachdem der Teilprozeß die Coderegion ausführt. Danach addiert jeder Teilprozeß den Zeitunterschied der Ablesungen, oder Delta, zu dem Wert in der Zelle 222. Wenn alle der Teilprozesse beendet sind, enthält die Zelle 222 die Gesamt-CPU-Zeit, die verwendet wurde und die erforderlich ist, um die Region 210 auszuführen.
- Man nehme beispielsweise an, daß jeder Teilprozeß in Fig. 2 ein Delta von 10 CPU-Sekunden aufweist. Bei der Beendigung beträgt die Gesamt-CPU-Zeit, die in der Zelle 222 enthalten ist, 40 Sekunden. Folglich enthält die Zelle 222 den Gesamtumfang der CPU-Zeit, die von allen der Teilprozesse beim Ausführen der gemessenen Coderegion verwendet wurde. Der Vorteil des Lösungsansatzes von Fig. 2 liegt darin, daß sehr wenig Speicherplatz erforderlich ist, um die Teilprozeßzeiteinteilungen zu speichern, da alle Teilprozesse die gleiche Zelle 222 verwenden. Ein entsprechender Nachteil ist jedoch, daß die Zelle 222 in einem gemeinschaftlich verwendeten kohärenten Speicher liegen muß.
- Der Hauptnachteil der Profilanalyseeinrichtung von Fig. 2 liegt darin, daß sie nicht gut mißt. Dieser Nachteil liegt an dem extremen Synchronisationsumfang, der zwischen den Teilprozessen erforderlich ist. Genauer gesagt, kann es für jeden Teilprozeß erforderlich sein, daß er einen wesentlichen Zeitraum warten muß, bevor er ausschließlichen Zugriff auf die Zelle 222 erhält, wodurch der Prozeß und die Profilanalyseeinrichtung verlangsamt werden. Falls die Profilanalyseeinrichtung auf einem System mit einer großen Anzahl von CPU oder Teilprozessen ausführt, machen die Synchronisationsverzögerungen die Profilanalyse durch dieses Verfahren unerschwinglich. Nichtlineare Erhöhungen der von einer Wanduhr angezeigten Zeit für einen Prozeß mit mehreren Teilprozessen können für eine Profilanalyseeinrichtung, die dieses Verfahren verwendet, erwartet werden.
- Fig. 3 offenbart eine andere Profilanalyseeinrichtung des Stands der Technik, welche die Meßschwierigkeiten der Profilanalyseeinrichtung von Fig. 2 löst. Fig. 3 zeigt vier Teilprozesse 310-313 und vier entsprechende Speicherbereiche 330-333. Jeder Teilprozeß 310-313 umfaßt ein Delta 326-329 und jeder Speicherbereich umfaßt eine Speicherzelle 340-343.
- Bei der Profilanalyseeinrichtung von Fig. 3 speichert jeder Teilprozeß sein Delta in einer unterschiedlichen Speicherzelle. Ein Programmierer (oder anderer Beobachter) kann die Pro filanalyseeinrichtung verwenden, um entweder die Zellen 340 - 343 zu summieren, um die Gesamt-CPU-Zeit zu erhalten, die durch die Coderegion verwendet wird, oder kann das Delta jedes Teilprozesses (CPU-Zeit) individuell betrachten. Falls jedes Delta 326-329 beispielsweise 10 ist, dann wird jede Speicherzelle 340-343 ebenfalls 10 enthalten und die Gesamt-CPU-Zeit, die verwendet wird, um die Region auszuführen, beträgt 40 Sekunden.
- Die Profilanalyseeinrichtung von Fig. 3 erfordert keinen gemeinschaftlich verwendeten kohärenten Speicher (wie die Profilanalyseeinrichtung von Fig. 2) und leidet nicht unter den Synchronisations- und Skalierbarkeitsproblemen, wie sie oben hinsichtlich Fig. 2 erörtert wurden. Diese Profilanalyseeinrichtung erfordert jedoch einen Speicherbereich pro Teilprozeß, um die Deltas zu speichern.
- Außerdem erfaßt die Profilanalyseeinrichtung von Fig. 3 nicht Zeit über einen Bereich, der eine parallele Unterregion enthält. Fig. 4 zeigt diesen Nachteil. Außerdem zeigt Fig. 4 wesentlich mehr Details als die vorangehenden Figuren, da diese Details außerdem notwendig sind, um die vorliegende Erfindung zu verstehen.
- Fig. 4 zeigt einen Elternteilprozeß 410, der an dem Hervorbringungspunkt 416 vier Kindteilprozesse 412-415 hervorbringt. Es ist anzumerken, daß der Kindteilprozeß 412 der Elternteilprozeß 410 ist, der in direkter Parallelität ausführt. Am Verbindungspunkt 418 beenden die Kindteilprozesse 412 - 415 das Ausführen und verbinden sich wieder in den Elternteilprozeß 410. Jeder Teilprozeß 410, 412-415 hat ein zugeordnetes Delta 419-423. Es ist anzumerken, daß das Delta 419 dem Elternteilprozeß 410 entspricht, während das Delta 420 dem Kindteilprozeß 412 entspricht.
- Jeder Teilprozeß 410, 412-415 umfaßt einen zugeordneten Speicherbereich 425-428. Jeder Speicherbereich, wie z. B. der Speicherbereich 425, umfaßt mindestens zwei Speicherzellen für jede gemessene Region in dem Prozeß. In Fig. 4 sind nur vier Zellen in dem Speicherbereich jedes Teilprozesses gezeigt. Zwei der Zellen, beispielsweise die Zellen 430 und 431, sind mit der Eltern- (Aufrufer-) Region verbunden, während zwei der Zellen 432, 433 mit der Kind- (Aufgerufener-) Region verbunden sind. In jedem Satz von zwei Zellen hält eine Zelle 430, 432 das Delta eines Teilprozesses "mit Kindern", d. h. einschließlich der Deltas jeglicher Kindregionen, die gemessen und ausgeführt werden. Die andere Zelle 431, 433 hält das Delta eines Teilprozesses "ohne Kinder", d. h. ohne die Deltas der Teilprozesse, die Kindregionen ausführen.
- Angenommen, der Elternteilprozeß 410 erfordert 5 Sekunden serieller CPU-Zeit zum Ausführen. Außerdem angenommen, die Kindteilprozesse 412-415 erfordern jeweils 10 Sekunden von CPU-Zeit, um die Parallelregion auszuführen. An dem Pun kt 435 nimmt der Elternteilprozeß 410 einen Anfangsabfragewert von seinem CPU-Zeitgeber. An dem Hervorbringungspun kt 416 bringt der Elternteilprozeß 410 die Kindteilprozesse 412-415 hervor. An dem Punkt 436 tasten die Kindteilprozesse 412-415 ihre jeweiligen CPU-Zeitgeber ab. An dem Punkt 430 beenden die Kindteilprozesse 412-415 die Parallelregion, tasten ihre CPU-Zeitgeber ab und berechnen ihre jeweiligen Deltas 420-423.
- Danach speichert jeder Kindteilprozeß 412-415 sein Delta in den geeigneten Zellen. Folglich speichert der Teilprozeß 412 sein Delta 420, 10 Sekunden, in den Zellen 432 und 433 (diese Zellen weisen den gleichen Wert auf, da der Teilprozeß 412 keine Kindregionen ausgeführt hat). Die anderen Kindteilprozesse 413-415 speichern ihre Deltas 421-423 in den Zellen, die ihnen selbst entsprechen, aber nicht in den Zellen, die ihrer Elternregion entsprechen, da die Kindteilprozesse 413-415 nicht wissen, welcher Elternteilprozeß sie hervorgebracht hat. Beispielsweise speichert der Teilprozeß 413 sein Delta 421 in den Zellen 438 und 439. Der Teilprozeß 413 hat jedoch keine Möglichkeit, zu wissen, welcher Teilprozeß ihn hervorgebracht hat, und kann daher sein Delta nicht in den Zellen 440, 441, die seiner Elternregion entsprechen, speichern.
- Schließlich beendet der Elternteilprozeß 410 am Punkt 445 seine Ausführung und fragt erneut seinen CPU-Zeitgeber ab. Danach speichert der Teilprozeß 410 sein Delta 419, 15 Sekunden, in der Zelle 430. Der Elternteilprozeß speichert außerdem seine CPU-Zeit ohne Kinder, 5 Sekunden, in der Zelle 431.
- Wenn der Prozeß die Ausführung beendet hat, summiert die Profilanalyseeinrichtung von Fig. 4 die Deltawerte für jeden Teilprozeß und jede Coderegion. In diesem Beispiel wird die Profilanalyseeinrichtung den korrekten Umfang, 40 Sekunden, an CPU-Zeit messen, die von den Kindteilprozessen verwendet wurde, um die Parallelregion auszuführen. Die Profilanalyseeinrichtung wird jedoch fälschlicherweise 15 Sekunden, anstatt 45 Sekunden an CPU-Zeit messen, die durch die Elternregion 410 verwendet wurde, um die Coderegion einschließlich der Parallelteilprozesse auszuführen. Der CPU-Zeit für die Elternregion fehlen 30 Sekunden, weil die Kindregionen nicht in der Lage waren, zu bestimmen, zu welcher Elternregion sie ihre CPU-Zeit zuordnen hätten sollen.
- Daher wird die Profilanalyseeinrichtung von Fig. 4 nur die CPLJ-Zeit berichten, die von dem Elternteilprozeß 410 verwendet wurde. Dementsprechend ist das Gleichzeitigkeitsverhältnis (CPU-Zeit/von einer Wanduhr angezeigte Zeit) an der Ebene des Teilprozesses 410 nie höher als Eins. Dies ist ein Hauptnachteil, wenn man versucht, die profilanalysierten Daten zu verwenden, um das wahre Parallelverhalten des Systems zu beobachten.
- Die in Fig. 1 gezeigte erfindungsgemäße Profilanalyseeinrichtung kombiniert die Profilanalyseeinrichtung von Fig. 4 mit einer Technik, die bewirkt, daß Teilprozesse registrierte Funktionen zurückrufen, wenn sie spezielle Ausführungspunkte erreichen. Auf diese Weise können Kindregionen ihre E1- ternregionen bestimmen. In der unteren Ausführung wird Bezug genommen auf eine Parallelunterstützungsschicht (PSL; PSL = parallel support layer). Die PSL ist eine Einrichtung zum Zuweisen paralleler Teilprozesse in einem Computersystem. Der Betrieb der PSL wird vollständig beschrieben bei der Erörterung der Fig. 5 bis 6.
- Es gibt vier unterschiedliche Ausführungspunkte, die von einem Prozeß oder Teilprozeß erreicht werden, wenn er mit einer PSL arbeitet und symmetrische Parallelteilprozesse verwendet. Der erste Punkt ist "vor der Hervorbringung", der auftritt, kurz bevor der Anforderungsprozeß, oder der Teilprozeß nach zusätzlichen Teilprozessen fragt, um beim Ausführen einer speziellen Coderegion zu helfen. Der nächste Punkt ist "nach der Hervorbringung", der auftritt kurz nachdem die Teilprozesse zugewiesen wurden, aber bevor die Teilprozesse begonnen haben, auszuführen. Ein weiterer Punkt ist "vor der Verbindung", der auftritt, kurz bevor die Teilprozesse ihre Ausführung beenden. Schließlich erreichen die Teilprozesse "nach der Verbindung", was dann ist, wenn die zusätzlichen Teilprozesse ihre Ausführung beendet haben und nur der Anforderungsprozeß oder Teilprozeß übrigbleibt.
- Asymmetrische Parallelregionen haben nur zwei unterschiedliche Punkte: "Erzeugen" und "Ausgang". Erzeugen tritt auf, kurz nachdem ein Teilprozeß erzeugt wurde. Ausgang tritt auf, wenn der erzeugte Teilprozeß seine Ausführung beendet.
- Fig. 1 zeigt den Betrieb der erfindungsgemäßen Profilanalyseeinrichtung. Fig. 1 zeigt einen Elternteilprozeß 110, der vier Kindteilprozesse 112-115 hervorbringt, an dem Hervorbringungspunkt 116. Es ist anzumerken, daß der Kindteilprozeß 112 der Elternteilprozeß 110 ist, der in direkter Parallelität ausführt. An dem Verbindungspunkt 118 beenden die Kindteilprozesse 112-115 das Ausführen und verbinden sich zurück zu dem Elternteilprozeß 110. Jeder Teilprozeß 110, 112-115 hat ein zugeordnetes Delta 119 - 123. Es ist anzumerken, daß Delta 119 dem Elternteilprozeß 110 entspricht, während Delta 120 dem Kindteilprozeß 112 entspricht.
- Jeder Teilprozeß 110, 112-115 umfaßt einen zugeordneten Speicherbereich 125-128. Die Speicherbereiche, wie z. B. die Speicherbereiche 125 und 126, umfassen zumindest vier Zellen für jede gemessene Region in dem Prozeß, obwohl in Fig. 1 nur 8 Zellen gezeigt sind. Beispielsweise enthält die Speichereinheit 126 vier Zellen 140-143, die der E1- ternregion zugeordnet sind, und vier Zellen 144-147, die der Kindregion zugeordnet sind. Die Zellen 140 und 141 speichern die CPU-Zeit, die von dem Teilprozeß 113 benötigt wird, um für den Elternteilprozeß 110 in direkter bzw. indirekter Parallelität ausgeführt zu werden. Die Zellen 142 und 143 speichern die CPU-Zeit jeweils mit und ohne Kinder, die von dem Teilprozeß 113 zum Ausführen für den Elternteilprozeß 110 (wie hinsichtlich Fig. 4 beschrieben) benötigt wird. Dementsprechend halten die Zellen 144-147 die gleiche Information wie die Zellen 140-143, außer daß die Zellen 144-147 mit dem Teilprozeß 113 verbunden sind.
- Wenn der Elternteilprozeß 110 den Vor-Hervorbringungspunkt 150 erreicht, weist die PSL Kindteilprozesse 112-115 zu.
- Der Elternteilprozeß 110 registriert sich selbst außerdem in der PSL 618, so daß die Kindteilprozesse 112-115 wissen, welcher Elternteilprozeß 110 sie hervorgebracht hat. Danach, an dem Nach-Hervorbringungspunkt 151, tastet jeder der Kindteilprozesse 112-115 seinen CPU-Zeitgeber auf der Basis eines PSL-ausgelösten Rückrufs (dies ist der Startwert) ab.
- Sobald die parallelen Kindteilprozesse 112-115 den Vor- Verbindungspunkt 152 erreichen, tasten sie jeweils wieder ihre CPU-Zeitgeber ab (dies ist der Endwert) und berechnen ein Delta. Danach speichert jeder Kindteilprozeß 112-115 sein Delta 120-123 in den richtigen Speicherzellen, wie unten beschrieben.
- Angenommen, der Elternteilprozeß 110 erfordert 5 Sekunden CPU-Zeit, um die serielle Region auszuführen, und jeder Kindteilprozeß 112-115 erfordert 10 Sekunden, um die Parallelregion auszuführen. Folglich speichert der Teilprozeß 112: sein Delta 120, 10 Sekunden, in der Zelle 130 (da er in direkter Parallelität ausgeführt wurde). Der Teilprozeß 112 speichert sein Delta 120 außerdem in den Zellen 136 und 137, wie hinsichtlich Fig. 4 beschrieben.
- Gleichermaßen speichert der Teilprozeß 113 sein Delta 121 in der Zelle 141, da es in indirekter Parallelität ausgeführt wurde. Der Teilprozeß 113 speichert sein Delta in den Zellen 146 und 147, wie hinsichtlich Fig. 4 beschrieben.
- Wenn der Elternteilprozeß 110 seine Ausführung beendet, tastet er erneut seinen CPU-Zeitgeber ab und berechnet sein Delta 419. Dann speichert der Elternteilprozeß 110 sein Delta mit Kindern (15 Sekunden) in der Zelle 132 und sein Delta ohne Kinder (5 Sekunden) in der Zelle 133, wie hinsichtlich Fig. 4 beschrieben.
- Sobald die Ausführung des Prozesses beendet ist, tastet die Profilanalyseeinrichtung die Speicherzellen ab und erhält die Zeiteinteilungswerte für die unterschiedlichen Coderegionen. Für jede Region kann die Profilanalyseeinrichtung die inklusive Zeiteinteilung eines Teilprozesses berechnen, die Summe der Deltas mit Kindern plus der Summe der indirekten Parallelität-Deltas, und die exklusive Zeiteinteilung des Teilprozesses, die inklusive Zeit des Teilprozesses minus der inklusiven Zeit aller Kinder des Teilprozesses. Die inklusive Zeiteinteilung für den Teilprozeß 110 beträgt beispielsweise 45 Sekunden (15 + (3 · 10)). Die ausschließliche Zeiteinteilung beträgt 5 Sekunden (45 - 40).
- Ein bevorzugtes Ausführungsbeispiel der Profilanalyseeinrichtung ist der Convex Performance Analyzer, Convex Teil Nr. 710&supmin;&sup0;¹8415-009, erhältlich von Convex Computer Corporation, 3000 Waterview Parkway, Richardson, Texas 75080.
- Die erfindungsgemäße Profilanalyseeinrichtung führt vorzugsweise auf einem SMP-Computersystem aus, könnte aber auβ erdem angepaßt werden, um auf einem Mehrfachbefehlmehrfachdaten- ("MIMD" = multiple instruction multiple data), manchmal bezeichnet als "massiv paralleles" Computersystem, auszuführen. Fig. 5 ist ein funktionales Blockdiagramm eines bevorzugten Hardwareausführungsbeispiels zum Ausführen der erfinderischen Profilanalyseeinrichtung. Fig. 5 zeigt ein symmetrisches Multiprozessor- ("SMP" = symmetric multiprocessor) Computersystem 510. Für eine vollständigere Beschreibung des Computersystems 10 wird Bezug genommen auf "Exemplar Architecture", Convex Teil Nr. 081-023430-000, erhältlich von Convex Computer Corporation, 3000 Waterview Parkway, Richardson, Texas 75080. Das Verarbeitungssystem 510 umfaßt eine Mehrzahl von Hyperknoten 512a - 512p. bei dem dargestellten Ausführungsbeispiel umfaßt das Verarbeitungssystem 510 16 Hyperknoten 512, obwohl bei alternativen Ausführungsbeispielen die Anzahl der Hyperknoten 512 stark abweichen kann, abhängig von der Größe und Anwendung des Verarbeitungssystems 510.
- Allgemein umfaßt jeder Hyperknoten 512 eine Mehrzahl von Unterverarbeitungsblöcken 514 und eine I/O-Schnittstelle 516, die durch eine interne Verbindungsschaltungsanordnung 518 gekoppelt sind. Bei dem dargestellten Ausführungsbeispiel umfaßt jeder Hyperknoten 512 vier Unterverarbeitungsblöcke 514a - 514d, obwohl die Anzahl der Unterverarbeitungsblöcke 514 variieren kann, abhängig von der Größe und Anwendung des Verarbeitungssystems 510. Bei dem dargestellten Ausführungsbeispiel umfaßt jeder Unterverarbeitungsblock 514 allgemein ein Paar zentraler Verarbeitungseinheiten 520a - 520b, Speicher 522 und eine skalierbare kohärente Schnittstelle (SCI) 524. Die Hyperknoten 514 sind zusammengekoppelt unter Verwendung eindimensionaler Schnittstellenringe 526a - 526d durch die entsprechenden skalierbaren kohärenten Schnittstellen 524a - 524d.
- Fig. 6 ist ein Blockdiagramm, das die operativen Komponenten in dem SMP-System von Fig. 5 darstellt. Gezeigt sind zwei Prozessoren 610a - 610b, ein Speicher 612, ein Prozeß 614 mit mehreren Teilprozessen 616a - 616b und das Betriebssystem (OS) und die Parallelunterstützungsschicht (PSL) 618.
- Prozessoren 610 können beliebige, gut bekannte CPU sein, die angepaßt sind, um in dem oben beschriebenen SMP-System zu arbeiten, wie z. B. ein HP PA-RISC 7200. Jeder Prozessor umfaßt eine lokale Nur-Lese-Uhr (auch als Zeitgeber bezeichnet) 620a - 620b, auf die durch einen Teilprozeß 616a 616b zugegriffen werden kann. Zusätzlich umfaßt jeder Prozessor zusätzliche Zähler und Zeitgeber, welche Leistungsmetriken liefern, einschließlich Befehls- und Datencachefehlschläge und Befehlszählungen. Auf diese Zeitgeber und Zähler kann auf die gleiche Weise wie auf die Uhren 620a - 620b durch einen Prozeß oder Teilprozeß zugegriffen werden.
- Der Speicher 612 kann irgend eine Form adressierbaren Speichers sein, der in der Lage ist, Informationen zu halten, die von den Prozessoren verwendet werden. Ein Hochgeschwindigkeitsdirektzugriffsspeicher ("RAM"; RAM = random access memory) wird bevorzugt. Der Speicher 612 könnte jedoch ein festes Plattenlaufwerk sein, auf das direkt oder als Teil eines virtuellen Speichersystems zugegriffen werden kann. Der Speicher 612 kann in mehrere Speicherbereiche unterteilt werden, die entweder aus getrennten Bänken von physikalischem Speicher oder logischen Unterteilungen innerhalb eines einzelnen Speichers bestehen. Der Speicher 612 umfaßt eine Mehrzahl von adressierbaren Speicherpositionen, die äquivalent sind zu den Speicherbereichen und Speicherzellen, die oben erörtert wurden.
- Das Betriebssystem 618 kann eines einer Vielzahl von Betriebssystemen sein, die angepaßt sind, um auf dem SMP- System ausgeführt zu werden. Eine PSL 618 schafft Unterstützung, die es dem Prozeß 614 ermöglicht, mehrere Ausführungsteilprozesse zu umfassen. Die PSL kann eine von bekannten Typen von PSL sein, wie z. B. "P-Teilprozesse", und der genaue Betrieb derselben muß hierin nicht im Detail erörtert werden. PSL 618 ist vorzugsweise in Software als Teil des Betriebssystems implementiert. Die PSL 618 kann jedoch auch als getrennte Schicht oberhalb des Betriebssystems implementiert sein. Alternativ könnte sich die PSL 618 in der Hardware befinden.
- Wenn ein Prozeß 614 oder Teilprozeß 616 zusätzliche Teilprozesse erfordert, um eine spezielle Region auszuführen, fordert er diese Teilprozesse von PSL 618 an. Die PSL 618 stellt dann diese Teilprozesse auf und ordnet sie zu, wie es gut bekannt ist. Zusätzlich kann PSL 618 erweitert werden. Das heißt, Erweiterungen können zu PSL 618 hinzugefügt werden, um die Art und Weise zu modifizieren, in der PSL 618 Teilprozesse zuweist und aufstellt.
- Der Prozeß 614 mit mehreren Teilprozessen wird durch einen Kompilierer kompiliert, unter Verwendung einer Technik, die "Instrumentierung" genannt wird, die im wesentlichen "Schlitze" in dem kompilierten Prozeß 614 hinterläßt, die dynamisch ausgewählt werden können und unter der Steuerung der erfindungsgemäßen Profilanalyseeinrichtung aufgefüllt werden mit Haken zu Daten. Solche Kompilierer umfassen die C- und Fortran-Kompilierer, die von Convex Computer Corporation, 3000 Waterview Parkway, Richardson, Texas 75080 erhältlich sind. Diese Kompilierer hinterlassen Schlitze an den Anfängen und Enden spezieller Codegebilde, die für den Programmierer von Interesse sind.
- Die erfindungsgemäße Profilanalyseeinrichtung von Fig. 1 verwendet dynamische Instrumentierung, um Schlitze in dem Programm Routinen zuzuweisen, die einen Zeitgeber/Zähler ablesen, wenn sie eine Region betreten, und ein Delta berechnen und in den geeigneten Speicherzellen speichern, wenn sie eine Region verlassen. Die vorliegende Erfindung umfaßt außerdem Erweiterungen zu PSL 618, die bewirken, daß Teilprozesse registrierte Funktionen zurückrufen, wenn sie spezielle Ausführungspunkte erreichen. Folglich kombiniert die erfindungsgemäße Profilanalyseeinrichtung die Profilanalyseeinrichtung von Fig. 4 mit PSL-Erweiterungen, die es den Kindregionen ermöglichen, ihre Elternregionen zu bestimmen.
- Zusammenfassend verwendet die erfindungsgemäße Profilanalyseeinrichtung dynamische Instrumentierung, um die Teilprozesse anzuweisen, ihre Deltas zu berechnen und zu speichern. Zusätzlich verwendet die erfindungsgemäße Profilanalyseeinrichtung Erweiterungen zu der PSL 618, um den E1- ternteilprozeß 110 mit der PSL zu registrieren. Auf diese Weise können Kindteilprozesse 112-115 ihren Elternteilprozeß 110 identifizieren und ihre Deltawerte in den geeigneten Speicherzellen speichern.
- Es ist wichtig, darauf hinzuweisen, daß die oben erörterte Profilänalyseeinrichtungsoperation in einem Prozeß wiederholt auf alle Eltern-Kind-Beziehungen angewendet werden kann, um den Prozeß als Ganzes genau zu analysieren. Beispielsweise könnte der oben erörterte Elternteilprozeß 110 in Wirklichkeit einer oder mehrere parallele Kindteilprozesse sein, die von einem anderen Elternteilprozeß hervorgebracht wurden. Außerdem arbeitet die oben beschriebene Profilanalyseeinrichtung gleich gut mit symmetrischen und asymmetrischen Teilprozessen. Da jeder Teilprozeß sein Delta in Zellen speichert, die den Regionen, die er ausgeführt hat, und seiner aufrufenden Region oder Elternregion entsprechen, berücksichtigt die Profilanalyseeinrichtung die gesamte CPU-Zeit, die von dem Prozeß benötigt wurde.
- Es ist außerdem wichtig, anzumerken, daß das Modell, das von der Profilanalyseeinrichtung verwendet wurde, sehr gut mißt bei Systemen mit wenigen oder vielen Prozessoren. Obwohl die vorliegende Erfindung und ihre Vorteile im Detail beschrieben wurden, wird darauf hingewiesen, daß verschiedene Änderungen, Ersetzungen und Abänderungen durchgeführt werden können, ohne von dem Schutzumfang der Erfindung, wie er durch die anhängenden Ansprüche definiert ist, abzuweichen.
Claims (1)
1. Ein Verfahren zum Durchführen einer Profilanalyse
eines Prozesses mit einer Mehrzahl von Teilprozessen
(110, 112-115), die auf einem Computersystem
ausgeführt werden, das folgende Schritte umfaßt:
Zuweisen eines Speicherbereichs (125-128) innerhalb
des Computersystems für jeden Teilprozeß (110, 112 -
115), wobei jeder Speicherbereich eine Mehrzahl von
Speicherzellen (140-147) aufweist, und wobei jede
Speicherzelle einem speziellen Teilprozeß der Mehrzahl
von Teilprozessen zugeordnet ist;
Registrieren eines Elternteilprozesses (110) mit einer
Mehrzahl von Kindteilprozessen (112-115), wobei der
Elternteilprozeß und die Mehrzahl der Kindteilprozesse
aus der Mehrzahl der Teilprozesse ausgewählt sind;
Berechnen eines Deltas (120-123) für eine spezielle
Coderegion des Prozesses durch jeden Kindteilprozeß;
und
Speichern des Deltas in einer ersten Speicherzelle,
die dem Kindteilprozeß zugeordnet ist, und in einer
zweiten Speicherzelle, die dem registrierten
Elternteilprozeß zugeordnet ist, durch jeden Kindteilprozeß.
2. Das Verfahren gemäß Anspruch 1, bei dem der
Speicherschritt ferner den folgenden Schritt umfaßt:
Speichern des Deltas (120-123) in einer dritten
Speicherzelle, entsprechend dem, ob der Kindteilprozeß
die Coderegion in direkter Parallelität ausgeführt
hat, durch jeden Kindteilprozeß (112-115).
3. Das Verfahren gemäß Anspruch 1, bei dem der
Speicherschritt ferner den folgenden Schritt umfaßt:
Speichern des Deltas (120-123) in einer vierten
Speicherzelle, entsprechend ob das Delta Deltas von
Teilprozessen umfaßt, die von dem Kindteilprozeß
hervorgebracht wurden, durch jeden Kindteilprozeß (112 -
115).
4. Das Verfahren gemäß Anspruch 1, bei dem der
Registrierschritt ferner folgende Schritte umfaßt:
Registrieren des Elternteilprozesses (110) mit einer
Parallelunterstützungsschicht des Computersystems; und
Hervorbringen der Mehrzahl von Kindteilprozessen (112
- 115) aus der Parallelunterstützungsschicht.
5. Das Verfahren gemäß Anspruch 1, bei dem der
Berechnungsschritt ferner folgende Schritte umfaßt:
Abtasten einer Leistungsmetrik an einem Anfang der
Coderegion, um einen ersten Wert zu bestimmen, durch
jeden Kindteilprozeß (112-115);
Abtasten der Leistungsmetrik an einem Ende der
Coderegion, um einen zweiten Wert zu bestimmen, durch jeden
Kindteilprozeß (112-115); und
Berechnen eines Deltas (120-123) aus dem ersten und
zweiten Wert, durch jeden Kindteilprozeß (112-115).
6. Eine Profilanalyseeinrichtung zum Durchführen einer
Profilanalyse der Ausführung eines Prozesses mit
einer Mehrzahl von Teilprozessen (110, 112-115) auf
einem Computersystem mit einem Speicher (125-128)
und einer Mehrzahl von zentralen
Verarbeitungseinheiten mit folgenden Merkmalen:
einer Einrichtung zum Zuweisen von Speicherbereichen
(125-128) innerhalb des Speichers für jeden der
Mehrzahl von Teilprozessen (110, 112-115), wobei
jeder Speicherbereich eine Mehrzahl von Speicherzellen
(140-147) umfaßt, und wobei jede Speicherzelle einem
speziellen Teilprozeß der Mehrzahl von Teilprozessen
zugeordnet ist;
einer Parallelunterstützungsschicht zum Hervorbringen
einer Mehrzahl von Kindteilprozessen (112-115) für
einen Elternteilprozeß (110) und zum Registrieren des
Elternteilprozesses mit den Kindteilprozessen, wobei
der Elternteilprozeß und die Kindteilprozesse ein
Teilsatz der Mehrzahl der Teilprozesse sind und jeder
Kindteilprozeß einer unterschiedlichen CPU zugeordnet
ist;
einer Abtasteinrichtung zum Abtasten der CPU, die
jedem Kindteilprozeß (112-115) zugeordnet ist, um eine
Leistungsmetrik für jeden Kindteilprozeß zu bestimmen;
und
einer Speichereinrichtung zum Speichern der
Leistungsmetrik für jeden Kindteilprozeß (112-115) in dem
Speicherbereich (125-128), der demjenigen
Kindteilprozeß entspricht, in einer ersten Speicherzelle, die
dem Kindteilprozeß zugeordnet ist, und einer zweiten
Speicherzelle, die dem registrierten Elternteilprozeß
zugeordnet sind.
7. Die Profilanalyseeinrichtung gemäß Anspruch 6, bei
der die Leistungsmetrik aus der Liste ausgewählt ist,
die aus einer CPU-Zeit, Cachefehlschlägen,
Cachetreffern oder einem Befehlszählwert besteht.
6. Die Profilanalyseeinrichtung gemäß Anspruch 6, bei
der die Speichereinrichtung ferner folgendes Merkmal
umfaßt:
eine Einrichtung zum Speichern der Leistungsfähigkeit
in einer dritten Speicherzelle, entsprechend dem, ob
der Kindteilprozeß die Coderegion in direkter
Parallelität ausgeführt hat, für jeden Kindteilprozeß (112 -
115).
9. Die Profilanalyseeinrichtung gemäß Anspruch 6, bei
der die Speichereinrichtung ferner folgendes Merkmal
umfaßt:
eine Einrichtung zum Speichern des Deltas (120-123)
in einer vierten Speicherzelle, entsprechend dem, ob
das Delta Deltas von Teilprozessen umfaßt, die durch
den Kindteilprozeß hervorgebracht wurden, für jeden
Kindteilprozeß (112-115).
10. Eine Profilanalyseeinrichtung zum Durchführen einer
Profilanalyse eines Prozesses mit einer Mehrzahl von
Teilprozessen (110, 112-115) zur Ausführung auf
einem Computersystem mit einem Speicher, die folgende
Merkmale aufweist:
eine Zuweisungseinrichtung zum Zuweisen eines
Speicherbereichs (125-128) in dem Speicher für jeden
Teilprozeß, wobei jeder Speicherbereich eine Mehrzahl
von Speicherzellen (140-147) umfaßt, und wobei jede
Speicherzelle einem speziellen Teilprozeß der Mehrzahl
von Teilprozessen zugeordnet ist;
eine Registriereinrichtung zum Registrieren eines
Elternteilprozesses (110) mit einer Mehrzahl von
Kindteilprozessen (112-115), wobei der Elternteilprozeß
und die Mehrzahl von Kindteilprozessen aus der
Mehrzahl von Teilprozessen ausgewählt sind;
eine Berechnungseinrichtung zum Berechnen eines Deltas
(120-123) für eine spezielle Coderegion des
Prozesses, für jeden Kindteilprozeß;
einer Speichereinrichtung zum Speichern des Deltas in
einer ersten Speicherzelle, die dem Kindteilprozeß
zugeordnet ist, und einer zweiten Speicherzelle, die dem
registrierten Elternteilprozeß zugeordnet ist, für
jeden Kindteilprozeß; und
wobei die Registriereinrichtung folgende Merkmale
umfaßt:
eine Parallelunterstützungsschicht zum Zuweisen von
Kindteilprozessen;
Erweiterungen der Parallelunterstützungsschicht zum
Registrieren eines Elternteilprozesses mit den
zugewiesenen Kindteilprozessen; und
wobei die Berechnungseinrichtung ferner folgende
Merkmale umfaßt:
eine erste Abtasteinrichtung zum Abtasten einer
Leistungsmetrik für jeden Kindteilprozeß (112-115) an
einem Anfang der Coderegion, um einen ersten Wert zu
bestimmen;
eine zweite Abtasteinrichtung zum Abtasten der
Leistungsmetrik für jeden Kindteilprozeß an einem Ende
der Coderegion, um einen zweiten Wert zu bestimmen;
und
eine Einrichtung zum Berechnen eines Deltas (120 -
123) aus dem ersten und zweiten Wert für jeden der
Kindteilprozesse.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/563,334 US5838976A (en) | 1995-11-28 | 1995-11-28 | System and method for profiling code on symmetric multiprocessor architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69614645D1 DE69614645D1 (de) | 2001-09-27 |
DE69614645T2 true DE69614645T2 (de) | 2001-12-06 |
Family
ID=24250090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69614645T Expired - Fee Related DE69614645T2 (de) | 1995-11-28 | 1996-11-27 | System und Verfahren zum Profilieren von Code für eine symmetrische Multiprozessorarchitektur |
Country Status (4)
Country | Link |
---|---|
US (2) | US5838976A (de) |
EP (1) | EP0777181B1 (de) |
JP (1) | JP3337926B2 (de) |
DE (1) | DE69614645T2 (de) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US6631518B1 (en) * | 1997-03-19 | 2003-10-07 | International Business Machines Corporation | Generating and utilizing organized profile information |
AU6586898A (en) * | 1997-03-21 | 1998-10-20 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
US5933643A (en) * | 1997-04-17 | 1999-08-03 | Hewlett Packard Company | Profiler driven data prefetching optimization where code generation not performed for loops |
DE19727036A1 (de) * | 1997-06-25 | 1999-01-07 | Ibm | System und Verfahren zur Leistungsmessung von Anwendungen mittels Nachrichten |
US6539339B1 (en) * | 1997-12-12 | 2003-03-25 | International Business Machines Corporation | Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches |
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 |
US6954922B2 (en) * | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6088044A (en) * | 1998-05-29 | 2000-07-11 | International Business Machines Corporation | Method for parallelizing software graphics geometry pipeline rendering |
EP1135727A1 (de) | 1998-11-25 | 2001-09-26 | Sun Microsystems, Inc. | Verfahren zur umfassenden profilierung von garbage-gesammelten speichersystemen |
US6952825B1 (en) * | 1999-01-14 | 2005-10-04 | Interuniversitaire Micro-Elektronica Centrum (Imec) | Concurrent timed digital system design method and environment |
US6519766B1 (en) * | 1999-06-15 | 2003-02-11 | Isogon Corporation | Computer program profiler |
US7346677B1 (en) | 1999-07-02 | 2008-03-18 | Cisco Technology, Inc. | Method and apparatus for creating policies for policy-based management of quality of service treatments of network data traffic flows |
US6788647B1 (en) | 1999-11-19 | 2004-09-07 | Cisco Technology, Inc. | Automatically applying bi-directional quality of service treatment to network data flows |
KR100361340B1 (ko) * | 2000-05-15 | 2002-12-05 | 엘지전자 주식회사 | 씨피유 클럭 제어 방법 |
US6658654B1 (en) | 2000-07-06 | 2003-12-02 | International Business Machines Corporation | Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment |
US6735758B1 (en) * | 2000-07-06 | 2004-05-11 | International Business Machines Corporation | Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems |
US6904594B1 (en) * | 2000-07-06 | 2005-06-07 | International Business Machines Corporation | Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment |
US6959332B1 (en) | 2000-07-12 | 2005-10-25 | Cisco Technology, Inc. | Basic command representation of quality of service policies |
US7099932B1 (en) | 2000-08-16 | 2006-08-29 | Cisco Technology, Inc. | Method and apparatus for retrieving network quality of service policy information from a directory in a quality of service policy management system |
KR100613201B1 (ko) * | 2000-08-28 | 2006-08-18 | 마이크로코넥트 엘엘씨 | 씨피유 사용량 측정 방법 |
US7096260B1 (en) | 2000-09-29 | 2006-08-22 | Cisco Technology, Inc. | Marking network data packets with differentiated services codepoints based on network load |
US6822940B1 (en) | 2000-09-29 | 2004-11-23 | Cisco Technology, Inc. | Method and apparatus for adapting enforcement of network quality of service policies based on feedback about network conditions |
US6988133B1 (en) * | 2000-10-31 | 2006-01-17 | Cisco Technology, Inc. | Method and apparatus for communicating network quality of service policy information to a plurality of policy enforcement points |
US7050396B1 (en) | 2000-11-30 | 2006-05-23 | Cisco Technology, Inc. | Method and apparatus for automatically establishing bi-directional differentiated services treatment of flows in a network |
US6918110B2 (en) * | 2001-04-11 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code |
US6996745B1 (en) | 2001-09-27 | 2006-02-07 | Sun Microsystems, Inc. | Process for shutting down a CPU in a SMP configuration |
US7477600B1 (en) | 2002-02-12 | 2009-01-13 | Cisco Technology, Inc. | Method and apparatus for configuring network elements to support real time applications based on meta-templates |
US7333432B1 (en) | 2002-02-12 | 2008-02-19 | Cisco Technology, Inc. | Method and apparatus for configuring network elements to support real time applications |
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 |
US7516209B2 (en) * | 2003-06-27 | 2009-04-07 | Microsoft Corporation | Method and framework for tracking/logging completion of requests in a computer system |
US7996839B2 (en) * | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
US7500226B2 (en) * | 2004-03-02 | 2009-03-03 | Microsoft Corporation | Efficient checking of state-dependent constraints |
US20050251791A1 (en) * | 2004-04-14 | 2005-11-10 | Robert Hundt | Systems and methods for branch profiling loops of an executable program |
US20050251790A1 (en) * | 2004-04-14 | 2005-11-10 | Robert Hundt | Systems and methods for instrumenting loops of an executable program |
US7660882B2 (en) * | 2004-06-10 | 2010-02-09 | Cisco Technology, Inc. | Deploying network element management system provisioning services |
US7640317B2 (en) * | 2004-06-10 | 2009-12-29 | Cisco Technology, Inc. | Configuration commit database approach and session locking approach in a two-stage network device configuration process |
US7853676B1 (en) | 2004-06-10 | 2010-12-14 | Cisco Technology, Inc. | Protocol for efficient exchange of XML documents with a network device |
US8640114B2 (en) | 2006-09-07 | 2014-01-28 | Oracle America, Inc. | Method and apparatus for specification and application of a user-specified filter in a data space profiler |
US7913206B1 (en) * | 2004-09-16 | 2011-03-22 | Cadence Design Systems, Inc. | Method and mechanism for performing partitioning of DRC operations |
US7681196B2 (en) * | 2004-11-18 | 2010-03-16 | Oracle International Corporation | Providing optimal number of threads to applications performing multi-tasking using threads |
JP4276201B2 (ja) * | 2005-03-31 | 2009-06-10 | 富士通株式会社 | Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム |
US7657875B2 (en) * | 2005-04-12 | 2010-02-02 | International Business Machines Corporation | System and method for collecting a plurality of metrics in a single profiling run of computer code |
US7640539B2 (en) * | 2005-04-12 | 2009-12-29 | International Business Machines Corporation | Instruction profiling using multiple metrics |
US7904852B1 (en) | 2005-09-12 | 2011-03-08 | Cadence Design Systems, Inc. | Method and system for implementing parallel processing of electronic design automation tools |
US8079031B2 (en) | 2005-10-21 | 2011-12-13 | Intel Corporation | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
JP2007199811A (ja) * | 2006-01-24 | 2007-08-09 | Hitachi Ltd | プログラム制御方法、計算機およびプログラム制御プログラム |
US8448096B1 (en) | 2006-06-30 | 2013-05-21 | Cadence Design Systems, Inc. | Method and system for parallel processing of IC design layouts |
US20080052360A1 (en) * | 2006-08-22 | 2008-02-28 | Microsoft Corporation | Rules Profiler |
US8813055B2 (en) * | 2006-11-08 | 2014-08-19 | Oracle America, Inc. | Method and apparatus for associating user-specified data with events in a data space profiler |
US8032875B2 (en) * | 2006-11-28 | 2011-10-04 | Oracle America, Inc. | Method and apparatus for computing user-specified cost metrics in a data space profiler |
US7865872B2 (en) | 2006-12-01 | 2011-01-04 | Murex S.A.S. | Producer graph oriented programming framework with undo, redo, and abort execution support |
US8191052B2 (en) | 2006-12-01 | 2012-05-29 | Murex S.A.S. | Producer graph oriented programming and execution |
US8332827B2 (en) * | 2006-12-01 | 2012-12-11 | Murex S.A.S. | Produce graph oriented programming framework with scenario support |
US8307337B2 (en) * | 2006-12-01 | 2012-11-06 | Murex S.A.S. | Parallelization and instrumentation in a producer graph oriented programming framework |
US8762951B1 (en) | 2007-03-21 | 2014-06-24 | Oracle America, Inc. | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor |
US8209701B1 (en) * | 2007-09-27 | 2012-06-26 | Emc Corporation | Task management using multiple processing threads |
US8356287B2 (en) * | 2007-10-24 | 2013-01-15 | International Business Machines Corporation | Device, system and method of debugging computer programs |
US8719801B2 (en) * | 2008-06-25 | 2014-05-06 | Microsoft Corporation | Timing analysis of concurrent programs |
US8340942B2 (en) * | 2010-04-26 | 2012-12-25 | International Business Machines Corporation | Identifying opportunities to improve multiprocess system performance |
JP5799797B2 (ja) * | 2011-12-21 | 2015-10-28 | 富士通株式会社 | 算出方法、算出プログラム及びコンピュータ |
KR20160071782A (ko) | 2014-12-12 | 2016-06-22 | 삼성전자주식회사 | 멀티 스레드를 처리하는 방법 및 장치 |
JP6435980B2 (ja) * | 2015-04-27 | 2018-12-12 | 富士通株式会社 | 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム |
US9977696B2 (en) * | 2015-07-27 | 2018-05-22 | Mediatek Inc. | Methods and apparatus of adaptive memory preparation |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168554A (en) * | 1989-10-13 | 1992-12-01 | International Business Machines Corporation | Converting trace data from processors executing in parallel into graphical form |
US5465258A (en) * | 1989-11-13 | 1995-11-07 | Integrity Systems, Inc. | Binary image performance evaluation tool |
JP3169597B2 (ja) * | 1990-05-16 | 2001-05-28 | エヌイーシーソフト株式会社 | マルチタスク実行時間アカウント方法とその機構 |
JP2777496B2 (ja) * | 1991-02-28 | 1998-07-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法 |
US5404529A (en) * | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
-
1995
- 1995-11-28 US US08/563,334 patent/US5838976A/en not_active Expired - Lifetime
-
1996
- 1996-11-27 DE DE69614645T patent/DE69614645T2/de not_active Expired - Fee Related
- 1996-11-27 EP EP96308586A patent/EP0777181B1/de not_active Expired - Lifetime
- 1996-11-28 JP JP33275296A patent/JP3337926B2/ja not_active Expired - Fee Related
-
1998
- 1998-08-07 US US09/130,761 patent/US6401240B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5838976A (en) | 1998-11-17 |
US6401240B1 (en) | 2002-06-04 |
EP0777181A1 (de) | 1997-06-04 |
DE69614645D1 (de) | 2001-09-27 |
EP0777181B1 (de) | 2001-08-22 |
JP3337926B2 (ja) | 2002-10-28 |
JPH09237203A (ja) | 1997-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69614645T2 (de) | System und Verfahren zum Profilieren von Code für eine symmetrische Multiprozessorarchitektur | |
DE69229365T2 (de) | Verfahren und Anordnung zur kostenbezogenen heuristischen Befehlsreihenfolgeplanung | |
DE69129526T2 (de) | Multiprozessorsystem und Verfahren zur Überwachung der Ausführung von Tasks in einem Multiprozesorsystem | |
DE4227345C2 (de) | Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem | |
DE69021659T2 (de) | Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche. | |
DE69027299T2 (de) | Paralleles Verarbeitungssystem | |
DE69422476T2 (de) | Betriebssystembasierte Programmleistungsüberwachung | |
DE2934971C2 (de) | Nach dem Fließbandprinzip arbeitender Zentralprozessor | |
DE69806564T2 (de) | Verfahren zur Schätzung von Statistiken der Eigenschaften von Speichersysteminteraktionen zwischen Kontexten in einem Rechnersystem | |
DE69824688T2 (de) | System und Verfahren zur Leistungsoptimierung eines Rechnersystems | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE69329144T2 (de) | Verfahren und gerät zur verarbeitung von datenfolgen | |
DE60029158T2 (de) | Verfahren zur Verbesserung der Leistung eines Multiprozessorsystems mit einer Aufgabenwarteschlange und Systemarchitektur zu deren Betrieb | |
EP1831786B1 (de) | Verfahren zur verteilung von rechenzeit in einem rechnersystem | |
DE10039538A1 (de) | Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms | |
DE10318622A1 (de) | Hardwarebasierte Nutzungsmessung | |
DE2244402A1 (de) | Datenverarbeitungsanlage | |
DE10050684A1 (de) | Verfahren und System zur periodischen Ablaufverfolgung für die Echtzeitgenerierung von Segmenten von Aufrufstack-Bäumen | |
DE102017213160B4 (de) | Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung | |
DE102012210895A1 (de) | Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor | |
DE112012005559T5 (de) | Software-Installation | |
DE102012204167A1 (de) | Vorauslaufende genäherte Berechnungen | |
EP2386949A1 (de) | Verfahren und Vorrichtung zum zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur | |
DE69518453T2 (de) | Verfahren und System zum Dynamischen Auswählen eines Kommunikationsmodus | |
DE69202688T2 (de) | Verfahren zum Testen und gegebenenfalls zur Bewertung von Primitiven eines Echtzeitsteuerprogrammes. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |