Sdílet prostřednictvím


CPU- und Windows-Indikatoren

Aktualisiert: November 2007

Mit dem Visual Studio 2008-Profiler können Sie vom Betriebssystem (Windows-Indikatoren) und von der Prozessoreinheit (CPU-Indikatoren) generierte Leistungsdaten erfassen. Außerdem können Sie einen CPU-Indikator als Ereignis auswählen, das bei der Profilerstellung mit der Samplingmethode zum Generieren von Samplingintervallen verwendet wird.

Windows-Indikatoren

Windows-Indikatoren sind Teil der Windows-Diagnoseinfrastruktur, die Informationen über die Leistung des Betriebssystem oder einer Anwendung, eines Dienstes oder eines Treibers bereitstellt. Windows-Indikatoren hängen von der Konfiguration des aktuellen Computers ab und sind auf anderen Computern unter Umständen nicht verfügbar.

CPU-Indikatoren

CPU-Indikatoren sind ein Feature der Computer-CPU und speichern die Anzahl hardware-bezogener Ereignisse. Mit dem Visual Studio 2008-Profiler können Sie diese Ereignisse als Samplingintervall verwenden oder die Ereignisse erfassen, wenn Sie Profile mit der Instrumentationsmethode erstellen.

Leistungsindikatoren sind CPU-spezifisch. Unterschiedliche CPU-Modelle und -Versionen können deutlich abweichende Konfigurationseinstellungen für denselben Leistungsindikator aufweisen. Portable Visual Studio 2008-Profiler-Ereignisse koppeln einige der gängigen Leistungsindikatoren von bestimmten Prozessoren ab und ermöglichen es Ihnen, allgemeine Leistungsereignisse zu erfassen oder ein Sampling für diese auszuführen.

Wenn Sie bei der Profilerstellung ein bestimmtes Ereignis berücksichtigen möchten, z. B. erfolglose E2-Cachezugriffe, kann der Benutzer eine Leistungssitzung für diese Ereignisquelle erstellen. Dieser Vorgang kann für jede CPU mit E2-Cache ausgeführt werden. Die Leistungssitzung kann ohne weitere Änderung zwischen Plattformen verschoben werden.

Der Visual Studio 2008 Profiler unterstützt weiterhin bestimmte Ereignisse für eine spezifische Plattform. Beispielsweise kann ein Entwickler auf einer Pentium 4-Plattform die Ereignisse erfassen, die spezifisch für die NetBurst-Architektur sind. Dieses Ereignis ist zwar nicht portabel, steht dem Entwickler aber für eine bestimmte Leistungssitzung auf einer spezifischen Plattform weiterhin zur Verfügung.

Portable Ereignisse und Plattformereignisse

Bei portablen Ereignissen handelt es sich um eine Gruppe von Indikatoren, die nicht spezifisch für eine bestimmte CPU sind. Alle anderen Indikatoren werden als Plattformereignisse bezeichnet, die auf verschiedenen Plattformen unterstützt werden oder nicht.

Beschreibungen sowohl für portable Ereignisse als auch für Plattformereignisse sind in XML-Dateien enthalten, in denen auch spezifische Werte in Bezug auf die Indikatoren angegeben sind. Da die Daten für Intel- und AMD-CPUs beispielsweise unterschiedlich sind, werden mehrere Dateien für die verschiedenen CPUs bereitgestellt. Der Visual Studio 2008 Profiler nutzt diese Informationen, um dem Benutzer für Leistungsmessungen die geeigneten Indikatoren – sowohl portable Indikatoren als auch Plattformindikatoren – zur Verfügung zu stellen.

Portable Ereignisse

Portable Ereignisse enthalten die folgenden Ereignisse:

Allgemeine Ereignisse

Ereignisname

Ereignisbeschreibung

Instructions Retired

Gibt die Anzahl der Anweisungen an, deren Ausführung abgeschlossen wurde.

Non Halted Cycles

Gibt nur diejenigen Zyklen an, in denen der Prozessor nicht angehalten wird, z. B. weil auf E/A gewartet wird.

Front-End-Ereignisse

Ereignisname

Ereignisbeschreibung

ITLB Misses

Gibt die Anzahl der ITLB-Suchen (Instruction Translation Look-aside Buffer) an, die zu einem Fehler führten.

Verzweigungsereignisse

Ereignisname

Ereignisbeschreibung

Branches Retired

Gibt die Anzahl der Verzweigungsanweisungen an, deren Ausführung abgeschlossen wurde.

Mis-predicted Branches

Gibt falsch vorhergesagte Verzweigungen an, zu denen es kommt, weil der Prozessor einen falschen Pfad vorhergesagt hat. Falsch vorhergesagte Verzweigungen führen zu Leistungseinbußen, weil der Prozessor alle bereits ausgeführten Arbeiten verwerfen und mit einem korrekten Pfad erneut starten muss.

Speicherereignisse:

Ereignisname

Ereignisbeschreibung

L2 Cache Read Misses

Gibt die Anzahl der Lesefehler im Cache der 2. Ebene an.

L2 Cache Read References

Gibt die Anzahl der Leseverweise im Cache der 2. Ebene an. Dies schließt Ladefehler sowie RFO-Fehler und -Treffer (Read For Ownership) ein.

Pentium IV-Ereignisse

Zu den Pentium IV-Ereignissen zählen die folgenden Ereignisse:

Speicherereignisse:

Ereignisname

Ereignisbeschreibung

64K Alias Conflicts

Gibt die Anzahl der 64.000-Aliaskonflikte an. Wenn eine Adresse des virtuellen Arbeitsspeichers auf eine Cachezeile verweist, die modulo 64.000 Bytes von einer anderen, bereits im E1-Cache befindlichen Cachezeile entfernt ist, treten Konflikte auf.

Page Walk DTLB Misses

Gibt die Anzahl der Pagewalkanforderungen aufgrund eines DTLB-Fehlers (Data Translation Look-aside Buffer) an. Ein Pagewalk-DTLB-Fehler führt zu einem Seitenfehler, sodass das Betriebssystem die erforderliche Seite in die Tabellen laden kann.

L3 Cache Read Misses

Gibt die Anzahl der Lesefehler im Cache der 3. Ebene an. Dies schließt Fehler ein, die aufgrund des Ladevorgangs und von RFO (Read For Ownership) auftreten.

L3 Cache Read References

Gibt die Anzahl der Leseverweise im Cache der 3. Ebene an. Dies schließt Ladefehler sowie RFO-Fehler und -Treffer (Read For Ownership) ein.

All MOB Load Replays

Gibt die Anzahl der Ladeanweisungen an, bei denen MOB-Replays (Memory Order Buffer) auftraten, weil Beschränkungen beim Store-to-Load-Forwarding nicht beachtet wurden.

Load/Store Splits Completed

Gibt die Anzahl der Teilungen beim Laden und Speichern an. Datenteilungen mindern die Leistung, weil sie erzwingen, dass der Prozessor zwei Cachezeilen separat liest/schreibt und dann die beiden Datenteile wieder zusammen einfügt.

Front-End-Ereignisse:

Ereignisname

Ereignisbeschreibung

Page Walk ITLB Misses

Gibt die Anzahl der Pagewalkanforderungen aufgrund von ITLB-Fehlern an.

ITLB References

Gibt den ITLB-Cachezugriff (Instruction Translation Look-aside Buffer) an.

Verzweigungsereignisse:

Ereignisname

Ereignisbeschreibung

Trace Cache Lookup Misses

Gibt Verzögerungen an, die auftraten, um wegen eines Fehlers bei der Suche im Ablaufverfolgungscache Anweisungen zu decodieren und eine Ablaufverfolgung zu erstellen.

Gleitkommaeinheit:

Ereignisname

Ereignisbeschreibung

64-bit MMX Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen 64-Bit-MMX-Mikrooperationen an. Eine Assemblyanweisung kann in eine oder mehrere Mikrooperationen unterteilt werden.

x87-SIMD Mikro-Ops Retired

Gibt die Anzahl der zurückgezogenen x87-SIMD-Mikrooperationen (Single Instruction Multiple Data) an. Eine Assemblyanweisung kann in eine oder mehrere Mikrooperationen unterteilt werden.

x87 Floating Point Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen x87-Gleitkommamikrooperationen an. Eine Assemblyanweisung kann in eine oder mehrere Mikrooperationen unterteilt werden.

Packed Single Precision Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen gepackten Mikrooperationen mit einfacher Genauigkeit an. Zum Entpacken der Daten sind zusätzliche Anweisungen erforderlich.

Scalar Single Precision Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen skalaren Mikrooperationen mit einfacher Genauigkeit an.

Packed Double Precision Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen gepackten Mikrooperationen mit doppelter Genauigkeit an. Zum Entpacken der Daten sind zusätzliche Anweisungen erforderlich.

Scalar Double Precision Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen skalaren Mikrooperationen mit doppelter Genauigkeit an.

128-bit MMX Micro-Ops Retired

Gibt die Anzahl der zurückgezogenen 128-Bit-MMX-Mikrooperationen an. Eine Assemblyanweisung kann in eine oder mehrere Mikrooperationen unterteilt werden.

SSE Input Assists

Gibt die Anzahl der Unterstützungen an, die zur Behandlung einer Ausnahmebedingung für SSE-/SSE2-Gleitkommaoperationen erforderlich sind.

Anzeigen verfügbarer Indikatoren

Visual Studio-Benutzeroberfläche

Um eine Liste aller CPU-Leistungsindikatoren anzuzeigen, die auf der aktuellen Plattform unterstützt werden, öffnen Sie die Eigenschaftenseiten zur Leistungssitzung, und führen Sie einen der folgenden Schritte aus.

  • Wählen Sie Sampling aus. Wählen Sie dann aus der Liste Samplingereignis die Option Leistungsindikator aus.

    - oder -

  • Wählen Sie CPU-Indikatoren und dann CPU-Indikatoren auflisten aus.

Um eine Liste der Windows-Leistungsindikatoren anzuzeigen, die auf der aktuellen Plattform unterstützt werden, öffnen Sie die Eigenschaftenseite zur Leistungssitzung, und wählen Sie dann Windows-Indikatoren aus.

Befehlszeile

Verwenden Sie die /querycounters-Option von VSPerfCmd.exe, um eine Liste aller auf der aktuellen Plattform unterstützten CPU-Leistungsindikatoren zu drucken.

Siehe auch

Aufgaben

Gewusst wie: Auswählen von Samplingereignissen

Gewusst wie: Erfassen von CPU-Indikatordaten

Gewusst wie: Erfassen von Windows-Indikatordaten

Weitere Ressourcen

Übersichten (Profilerstellungstools)