Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.
Mithilfe des Leistungsmonitors (Perfmon.exe) ist es möglich, die Leistungsindikatoren pro Laufzeit zu unterscheiden. In diesem Thema werden die Registrierungsänderungen beschrieben, die zum Aktivieren dieser Funktionalität erforderlich sind.
Standardverhalten
Standardmäßig zeigt der Leistungsmonitor Leistungsindikatoren pro Anwendung an. Es gibt jedoch zwei Szenarien, in denen dies problematisch ist:
Wenn Sie zwei Anwendungen überwachen, die denselben Namen haben. Wenn beispielsweise beide Anwendungen myapp.exebenannt sind, wird eine als myapp und die andere als myapp#1 in der Spalte "Instanz " angezeigt. In diesem Fall ist es schwierig, einen Leistungsindikator mit einer bestimmten Anwendung abzugleichen. Es ist nicht klar, ob sich die für myapp#1 gesammelten Daten auf die erste myapp.exe oder die zweite myapp.exebeziehen.
Wenn eine Anwendung mehrere Instanzen der Common Language Runtime verwendet. .NET Framework 4 unterstützt prozessinterne Hostingszenarien; d. h., ein einzelner Prozess oder eine Anwendung kann mehrere Instanzen der Laufzeit der gemeinsamen Sprache laden. Wenn eine einzelne Anwendung mit dem Namen myapp.exe standardmäßig zwei Laufzeitinstanzen lädt, werden sie in der Spalte "Instanz " als "myapp " und "myapp#1" festgelegt. In diesem Fall ist nicht klar, ob myapp und myapp#1 auf zwei Anwendungen mit demselben Namen oder auf dieselbe Anwendung mit zwei Laufzeiten verweisen. Wenn mehrere Anwendungen mit demselben Namen gleichzeitig mehrere Laufzeiten laden, wird die Mehrdeutigkeit noch größer.
Sie können einen Registrierungsschlüssel festlegen, um diese Mehrdeutigkeit zu beseitigen. Für Anwendungen, die mit .NET Framework 4 entwickelt wurden, fügt diese Registrierungsänderung dem Anwendungsnamen in der Spalte "Instanz " einen Prozessbezeichner gefolgt von einem Laufzeitinstanzbezeichner hinzu. Anstelle von Anwendung oder Anwendung#1 wird die Anwendung jetzt in der Spalte "Instanz" als p_r_runtimeID identifiziert. Wenn eine Anwendung mit einer früheren Version der Common Language Runtime entwickelt wurde, wird diese Instanz als application_pprocessID dargestellt, sofern .NET Framework 4 installiert ist.
Leistungsindikatoren für In-Process Parallelanwendungen
Zum Behandeln von Leistungsindikatoren für mehrere Versionen von Common Language Runtime, die in einer einzelnen Anwendung gehostet werden, müssen Sie eine einzelne Registrierungsschlüsseleinstellung ändern, wie in der folgenden Tabelle dargestellt.
| Wert | |
|---|---|
| Schlüssel | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\.NETFramework\Performance |
| Eingabe | ProzessNameFormat |
| Typ | REG_DWORD |
| Wert | 2 (0x00000002) |
Ein Wert von 0 ProcessNameFormat gibt an, dass das Standardverhalten aktiviert ist, d. h. Perfmon.exe Leistungsindikatoren pro Anwendung anzeigt. Wenn Sie diesen Wert auf 2 festlegen, Perfmon.exe mehrere Versionen einer Anwendung disambiguiert und Leistungsindikatoren pro Laufzeit bereitstellt. Jeder andere Wert für die ProcessNameFormat Registrierungsschlüsseleinstellung wird nicht unterstützt und für die zukünftige Verwendung reserviert.
Nachdem Sie die ProcessNameFormat Registrierungsschlüsseleinstellung aktualisiert haben, müssen Sie Perfmon.exe oder andere Verbraucher von Leistungsindikatoren neu starten, damit die neue Instanzbenennungsfunktion ordnungsgemäß funktioniert.
Das folgende Beispiel zeigt, wie der ProcessNameFormat Wert programmgesteuert geändert wird.
// Create or open registry key.
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(
@"System\CurrentControlSet\Services\.NETFramework\Performance");
// Create or overwrite value.
key.SetValue("ProcessNameFormat", 1,
Microsoft.Win32.RegistryValueKind.DWord);
key.Close();
' Create or open registry key.
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey( _
"System\CurrentControlSet\Services\.NETFramework\Performance")
' Create or overwrite value.
key.SetValue("ProcessNameFormat", 1, _
Microsoft.Win32.RegistryValueKind.DWord)
key.Close()
Wenn Sie diese Registrierungsänderung vornehmen und .NET Framework 4 oder höher installiert ist, zeigt Perfmon.exe die Namen von Anwendungen als application_pprocessID an, wobei die Anwendung der Name der Anwendung ist, und processID der Prozessbezeichner der Anwendung ist. Wenn beispielsweise eine Anwendung mit dem Namen myapp.exe zwei Instanzen der Common Language Runtime lädt, kann Perfmon.exe eine Instanz als myapp_1416 und die zweite als myapp_3160 identifizieren.
Hinweis
Der Prozessbezeichner beseitigt die Mehrdeutigkeit bei der Zuordnung von zwei Anwendungen mit demselben Namen, die frühere Versionen der Laufzeit verwenden. Für frühere Versionen ist kein Laufzeitbezeichner erforderlich, da frühere Versionen der Common Language Runtime keine parallelen Szenarien unterstützen.
Wenn .NET Framework 4 oder eine höhere Version nicht vorhanden oder deinstalliert wurde, hat das Festlegen des Registrierungsschlüssels keine Auswirkung. Dies bedeutet, dass zwei Anwendungen mit demselben Namen weiterhin in Perfmon.exe als Anwendung und Anwendung#1 angezeigt werden (z. B. als myapp und myapp#1).