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