Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.
Za pomocą monitora wydajności (Perfmon.exe) można rozróżniać liczniki wydajności dla poszczególnych środowisk uruchomieniowych. W tym temacie opisano zmianę rejestru wymaganą do włączenia tej funkcji.
Domyślne zachowanie
Domyślnie monitor wydajności wyświetla liczniki wydajności dla poszczególnych aplikacji. Istnieją jednak dwa scenariusze, w których jest to problematyczne:
Podczas monitorowania dwóch aplikacji o tej samej nazwie. Jeśli na przykład obie aplikacje mają nazwę myapp.exe, jedna zostanie wyświetlona jako myapp , a druga jako myapp#1 w kolumnie Wystąpienie . W takim przypadku trudno jest dopasować licznik wydajności do określonej aplikacji. Nie jest jasne, czy dane zebrane dla aplikacji myapp#1 odnoszą się do pierwszego myapp.exe, czy drugiego myapp.exe.
Kiedy aplikacja korzysta z wielu instancji wspólnego środowiska uruchomieniowego. Platforma .NET Framework 4 obsługuje scenariusze hostingu równoległego w procesie; oznacza to, że jeden proces lub aplikacja może załadować wiele instancji środowiska uruchomieniowego języka wspólnego. Jeśli pojedyncza aplikacja o nazwie myapp.exe ładuje domyślnie dwa wystąpienia środowiska uruchomieniowego, zostaną one wyznaczone w kolumnie Wystąpienie jako myapp i myapp#1. W tym przypadku nie jest jasne, czy aplikacja myapp i myapp#1 odwołują się do dwóch aplikacji o tej samej nazwie, czy do tej samej aplikacji z dwoma środowiskami uruchomieniowymi. Jeśli wiele aplikacji o tej samej nazwie ładuje wiele środowisk uruchomieniowych, niejednoznaczność jest jeszcze większa.
Możesz ustawić klucz rejestru, aby wyeliminować tę niejednoznaczność. W przypadku aplikacji opracowanych przy użyciu programu .NET Framework 4 ta zmiana rejestru dodaje identyfikator procesu, a następnie identyfikator wystąpienia środowiska uruchomieniowego do nazwy aplikacji w kolumnie Wystąpienie . Zamiast aplikacji lub aplikacji nr 1 aplikacja jest teraz identyfikowana jako application_p
processID_r
runtimeID w kolumnie Wystąpienie . Jeśli aplikacja została opracowana przy użyciu poprzedniej wersji środowiska uruchomieniowego języka wspólnego, to wystąpienie jest reprezentowane jako application_p
processID pod warunkiem, że jest zainstalowany program .NET Framework 4.
Liczniki wydajności dla aplikacji In-Process zainstalowanych równolegle
Aby obsługiwać liczniki wydajności dla wielu wersji środowiska uruchomieniowego języka wspólnego hostowanych w jednej aplikacji, należy zmienić jedno ustawienie klucza rejestru, jak pokazano w poniższej tabeli.
Wartość | |
---|---|
Klucz | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\.NETFramework\Performance |
Wpis | FormatNazwyProcesu |
Typ | REG_DWORD |
Wartość | 2 (0x00000002) |
Wartość 0 dla ProcessNameFormat
wskazuje, że domyślne zachowanie jest włączone. Oznacza to, że Perfmon.exe wyświetla liczniki wydajności dla poszczególnych aplikacji. Gdy ustawisz tę wartość na 2, Perfmon.exe rozróżnia wiele wersji aplikacji i zapewnia liczniki wydajności dla poszczególnych środowisk uruchomieniowych. Każda inna wartość ProcessNameFormat
ustawienia klucza rejestru jest nieobsługiwana i zarezerwowana do użycia w przyszłości.
Po zaktualizowaniu ProcessNameFormat
ustawienia klucza rejestru należy ponownie uruchomić Perfmon.exe lub innych użytkowników liczników wydajności, aby nowa funkcja nazewnictwa wystąpień działała poprawnie.
W poniższym przykładzie pokazano, jak zmienić wartość ProcessNameFormat
programowo.
// 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()
Jeśli wprowadzisz tę zmianę rejestru, a program .NET Framework 4 lub nowszy jest zainstalowany, Perfmon.exe wyświetla nazwy aplikacji jako application_p
processID, gdzie aplikacja jest nazwą aplikacji, a processID jest identyfikatorem procesu aplikacji. Jeśli na przykład aplikacja o nazwie myapp.exe ładuje dwa wystąpienia środowiska uruchomieniowego języka wspólnego, Perfmon.exe może zidentyfikować jedno wystąpienie jako myapp_1416, a drugie jako myapp_3160.
Uwaga / Notatka
Identyfikator procesu eliminuje niejednoznaczność rozpoznawania dwóch aplikacji o tej samej nazwie, które używają wcześniejszych wersji środowiska uruchomieniowego. Identyfikator środowiska uruchomieniowego nie jest wymagany dla poprzednich wersji, ponieważ poprzednie wersje środowiska uruchomieniowego języka wspólnego nie obsługują scenariuszy równoległych.
Jeśli program .NET Framework 4 lub nowsza wersja nie jest obecny lub został odinstalowany, ustawienie klucza rejestru nie ma żadnego wpływu. Oznacza to, że dwie aplikacje o tej samej nazwie będą nadal wyświetlane w Perfmon.exe co aplikacja i aplikacja#1 (na przykład myapp i myapp#1).