Liczniki wydajności na platformie .NET Framework
Uwaga
Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.
Ten artykuł zawiera listę liczników wydajności, które można znaleźć w monitor wydajności systemu Windows.
Liczniki wydajności wyjątków
Kategoria Wyjątki środowiska .NET CLR zawiera liczniki, które zawierają informacje o wyjątkach zgłaszanych przez aplikację. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Liczba zgłoszonych exceps | Przedstawia łączną liczbę wyjątków zgłaszanych od momentu uruchomienia aplikacji. Obejmuje to zarówno wyjątki platformy .NET, jak i wyjątki niezarządzane, które są konwertowane na wyjątki platformy .NET. Na przykład funkcja HRESULT zwrócona z niezarządzanego kodu jest konwertowana na wyjątek w kodzie zarządzanym. Ten licznik obejmuje zarówno obsługiwane, jak i nieobsługiwane wyjątki. Wyjątki, które są ponownie ponownie zliczane. |
Liczba wyrzuconych exceps na sekundę | Wyświetla liczbę wyjątków zgłaszanych na sekundę. Obejmuje to zarówno wyjątki platformy .NET, jak i wyjątki niezarządzane, które są konwertowane na wyjątki platformy .NET. Na przykład funkcja HRESULT zwrócona z niezarządzanego kodu jest konwertowana na wyjątek w kodzie zarządzanym. Ten licznik obejmuje zarówno obsługiwane, jak i nieobsługiwane wyjątki. Nie jest to średnia w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. Ten licznik jest wskaźnikiem potencjalnych problemów z wydajnością, jeśli jest zgłaszana duża (>100-s) liczba wyjątków. |
Liczba filtrów na sekundę | Wyświetla liczbę filtrów wyjątków platformy .NET wykonanych na sekundę. Filtr wyjątku ocenia niezależnie od tego, czy jest obsługiwany wyjątek. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Liczba końcu /s | Wyświetla liczbę wykonanych bloków na sekundę. Niezależnie od tego, w jaki sposób blok try został wyjęty, gwarantowane jest wykonanie bloku. Zliczane są tylko bloki w końcu wykonane dla wyjątku; bloki na normalnych ścieżkach kodu nie są liczone przez ten licznik. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Rzut do połowu głębokości /s | Wyświetla liczbę klatek stosu przechodzących z ramki, która rzuciła wyjątek do ramki, która obsłużyła wyjątek, na sekundę. Ten licznik resetuje się do zera po wprowadzeniu procedury obsługi wyjątków, dlatego zagnieżdżone wyjątki pokazują głębokość stosu obsługi do obsługi. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Liczniki wydajności międzyoperacyjnej
Kategoria międzyoperacyjności środowiska .NET CLR zawiera liczniki, które zapewniają informacje o interakcji aplikacji ze składnikami COM, usługami COM+ i bibliotekami typów zewnętrznych. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Liczba ccWs | Wyświetla bieżącą liczbę otoek wywoływanych com (CCWs). CCW to serwer proxy dla obiektu zarządzanego, do których odwołuje się niezarządzany klient COM. Ten licznik wskazuje liczbę zarządzanych obiektów, do których odwołuje się niezarządzany kod COM. |
Liczba marshalingów | Wyświetla łączną liczbę argumentów i wartości zwracanych z zarządzanego do niezarządzanego kodu i odwrotnie od uruchomienia aplikacji. Ten licznik nie jest zwiększany, jeśli wycinki są podkreślone. (Wycinki są odpowiedzialne za marshalling argumentów i zwracanych wartości). Wycinki są zwykle podkreślone, jeśli obciążenie marshalling jest małe. |
Liczba wycinków | Wyświetla bieżącą liczbę wycinków utworzonych przez środowisko uruchomieniowe języka wspólnego. Wycinki są odpowiedzialne za marshaling argumentów i zwracanie wartości z zarządzanego do niezarządzanego kodu i odwrotnie podczas wywołania międzyoperacyjnego modelu COM lub wywołania wywołania platformy. |
Liczba eksportów TLB na sekundę | Zarezerwowane do użytku w przyszłości. |
Liczba importów TLB na sekundę | Zarezerwowane do użytku w przyszłości. |
liczniki wydajności JIT
Kategoria JIT środowiska .NET CLR zawiera liczniki zawierające informacje o kodzie, który został skompilowany w trybie JIT. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Liczba bajtów IL JITted | Przedstawia całkowitą liczbę bajtów języka pośredniego (CIL) skompilowanych przez kompilator just in time (JIT) od uruchomienia aplikacji. Ten licznik jest odpowiednikiem licznika Total # of IL Bytes Jitted . |
Liczba metod JITted | Przedstawia łączną liczbę metod skompilowanych przez tryb JIT od momentu uruchomienia aplikacji. Ten licznik nie zawiera wstępnie skompilowanych metod JIT. |
% czasu w Jit | Przedstawia procent czasu, który upłynął w kompilacji JIT od ostatniej fazy kompilacji JIT. Ten licznik jest aktualizowany na końcu każdej fazy kompilacji JIT. Faza kompilacji JIT występuje, gdy metoda i jej zależności są kompilowane. |
Bajty IL Jitted /s | Wyświetla liczbę bajtów CIL skompilowanych na sekundę. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Błędy Jit w warstwie Standardowa | Przedstawia maksymalną liczbę metod, których kompilator JIT nie może skompilować od momentu uruchomienia aplikacji. Ten błąd może wystąpić, jeśli nie można zweryfikować elementu CIL lub jeśli w kompilatorze JIT występuje błąd wewnętrzny. |
Łączna liczba jitted bajtów IL | Wyświetla łączną liczbę bajtów JIT skompilowanych od uruchomienia aplikacji. Ten licznik jest odpowiednikiem liczby liczników jitted il bajtów. |
Ładowanie liczników wydajności
Kategoria Ładowanie środowiska .NET CLR zawiera liczniki, które zawierają informacje o zestawach, klasach i domenach aplikacji, które są ładowane. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
% ładowania czasu | Zarezerwowane do użytku w przyszłości. |
Długość wyszukiwania zestawów | Zarezerwowane do użytku w przyszłości. |
Bajty w stercie modułu ładującego | Wyświetla bieżący rozmiar w bajtach pamięci zatwierdzonej przez moduł ładujący klas we wszystkich domenach aplikacji. Zatwierdzona pamięć to miejsce fizyczne zarezerwowane w pliku stronicowania dysku. |
Bieżące domeny aplikacji | Wyświetla bieżącą liczbę domen aplikacji załadowanych w tej aplikacji. |
Bieżące zestawy | Przedstawia bieżącą liczbę zestawów załadowanych we wszystkich domenach aplikacji w aktualnie uruchomionej aplikacji. Jeśli zestaw jest ładowany jako neutralny dla domeny z wielu domen aplikacji, ten licznik jest zwiększany tylko raz. |
Załadowane bieżące klasy | Przedstawia bieżącą liczbę klas załadowanych we wszystkich zestawach. |
Częstotliwość domen aplikacji | Wyświetla liczbę domen aplikacji załadowanych na sekundę. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Szybkość rozładowanych domen aplikacji | Wyświetla liczbę domen aplikacji zwolnionych na sekundę. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Częstotliwość zestawów | Przedstawia liczbę zestawów załadowanych na sekundę we wszystkich domenach aplikacji. Jeśli zestaw jest ładowany jako neutralny dla domeny z wielu domen aplikacji, ten licznik jest zwiększany tylko raz. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Częstotliwość ładowania klas | Przedstawia liczbę klas załadowanych na sekundę we wszystkich zestawach. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Częstotliwość błędów ładowania | Przedstawia liczbę klas, których nie można załadować na sekundę. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. Błędy ładowania mogą wystąpić z wielu powodów, takich jak nieodpowiednie zabezpieczenia lub nieprawidłowy format. Aby uzyskać szczegółowe informacje, zobacz Pomoc dotyczącą usług profilowania. |
Łączna liczba niepowodzeń ładowania | Przedstawia maksymalną liczbę klas, których ładowanie nie powiodło się od momentu uruchomienia aplikacji. Błędy ładowania mogą wystąpić z wielu powodów, takich jak nieodpowiednie zabezpieczenia lub nieprawidłowy format. Aby uzyskać szczegółowe informacje, zobacz Pomoc dotyczącą usług profilowania. |
Łączna liczba domen aplikacji | Przedstawia maksymalną liczbę domen aplikacji załadowanych od momentu uruchomienia aplikacji. |
Łączna liczba rozładowanych domen aplikacji | Przedstawia łączną liczbę domen aplikacji rozładowanych od momentu uruchomienia aplikacji. Jeśli domena aplikacji jest ładowana i zwalniana wiele razy, ten licznik zwiększa się za każdym razem, gdy domena aplikacji zostanie zwolniona. |
Łączna liczba zestawów | Wyświetla łączną liczbę zestawów załadowanych od momentu uruchomienia aplikacji. Jeśli zestaw jest ładowany jako neutralny dla domeny z wielu domen aplikacji, ten licznik jest zwiększany tylko raz. |
Łączna liczba załadowanych klas | Przedstawia skumulowaną liczbę klas załadowanych we wszystkich zestawach od momentu uruchomienia aplikacji. |
Liczniki wydajności blokady i wątków
Kategoria .NET CLR LocksAndThreads zawiera liczniki zawierające informacje o zarządzanych blokadach i wątkach używanych przez aplikację. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Liczba bieżących wątków logicznych | Wyświetla liczbę bieżących zarządzanych obiektów wątków w aplikacji. Ten licznik utrzymuje liczbę uruchomionych i zatrzymanych wątków. Ten licznik nie jest średni w czasie; wyświetla tylko ostatnią zaobserwowaną wartość. |
Liczba bieżących wątków fizycznych | Przedstawia liczbę natywnych wątków systemu operacyjnego utworzonych i należących do środowiska uruchomieniowego języka wspólnego do działania jako podstawowe wątki dla zarządzanych obiektów wątków. Wartość tego licznika nie obejmuje wątków używanych przez środowisko uruchomieniowe w operacjach wewnętrznych; jest to podzbiór wątków w procesie systemu operacyjnego. |
Liczba bieżących rozpoznanych wątków | Wyświetla liczbę wątków, które są obecnie rozpoznawane przez środowisko uruchomieniowe. Te wątki są skojarzone z odpowiednim zarządzanym obiektem wątku. Środowisko uruchomieniowe nie tworzy tych wątków, ale uruchamia je w środowisku uruchomieniowym co najmniej raz. Śledzone są tylko unikatowe wątki; wątki o tym samym identyfikatorze wątku, które ponownie wejdą do środowiska uruchomieniowego lub są tworzone ponownie po zakończeniu wątku nie są liczone dwukrotnie. |
Liczba wszystkich rozpoznanych wątków | Przedstawia łączną liczbę wątków, które zostały rozpoznane przez środowisko uruchomieniowe od momentu uruchomienia aplikacji. Te wątki są skojarzone z odpowiednim zarządzanym obiektem wątku. Środowisko uruchomieniowe nie tworzy tych wątków, ale uruchamia je w środowisku uruchomieniowym co najmniej raz. Śledzone są tylko unikatowe wątki; wątki o tym samym identyfikatorze wątku, które ponownie wejdą do środowiska uruchomieniowego lub są tworzone ponownie po zakończeniu wątku nie są liczone dwukrotnie. |
Szybkość rywalizacji na sekundę | Przedstawia szybkość, z jaką wątki w środowisku uruchomieniowym próbują uzyskać zarządzaną blokadę bezskutecznie. |
Bieżąca długość kolejki | Przedstawia łączną liczbę wątków oczekujących na uzyskanie zarządzanej blokady w aplikacji. Ten licznik nie jest średni w czasie; wyświetla ostatnią zaobserwowaną wartość. |
Długość kolejki na sekundę | Wyświetla liczbę wątków na sekundę oczekujących na uzyskanie blokady w aplikacji. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Szczyt długości kolejki | Przedstawia łączną liczbę wątków, które czekały na uzyskanie zarządzanej blokady od momentu uruchomienia aplikacji. |
szybkość rozpoznanych wątków na sekundę | Wyświetla liczbę wątków na sekundę, które zostały rozpoznane przez środowisko uruchomieniowe. Te wątki są skojarzone z odpowiednim zarządzanym obiektem wątku. Środowisko uruchomieniowe nie tworzy tych wątków, ale uruchamia je w środowisku uruchomieniowym co najmniej raz. Śledzone są tylko unikatowe wątki; wątki o tym samym identyfikatorze wątku, które ponownie wejdą do środowiska uruchomieniowego lub są tworzone ponownie po zakończeniu wątku nie są liczone dwukrotnie. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Łączna liczba rywalizacji | Przedstawia łączną liczbę prób uzyskania zarządzanej blokady przez wątki w środowisku uruchomieniowym. |
Liczniki wydajności pamięci
Kategoria Pamięć środowiska CLR platformy .NET zawiera liczniki, które zawierają informacje na temat modułu odśmiecającego śmieci. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Liczba bajtów we wszystkich stertach | Przedstawia sumę rozmiaru sterty 1. generacji, rozmiaru sterty 2. generacji i liczników rozmiaru sterty dużych obiektów. Ten licznik wskazuje bieżącą pamięć przydzieloną w bajtach na stertach odzyskiwania pamięci. |
# Uchwyty GC | Wyświetla bieżącą liczbę dojść do odzyskiwania pamięci w użyciu. Uchwyty odzyskiwania pamięci są obsługiwane przez zasoby poza środowiskiem uruchomieniowym języka wspólnego i środowiskiem zarządzanym. |
# Kolekcje 0. generacji | Przedstawia liczbę obiektów generacji 0 (czyli najmłodszych, ostatnio przydzielonych obiektów) są wyrzucane od momentu uruchomienia aplikacji. Odzyskiwanie pamięci generacji 0 występuje, gdy dostępna pamięć w generacji 0 nie jest wystarczająca do spełnienia żądania alokacji. Ten licznik jest zwiększany na końcu odzyskiwania pamięci generacji 0. Odzyskiwanie pamięci wyższej generacji obejmuje wszystkie kolekcje niższej generacji. Ten licznik jest jawnie zwiększany, gdy następuje odzyskiwanie pamięci wyższej generacji (1 lub 2). Ten licznik wyświetla ostatnią zaobserwowaną wartość. Wartość licznika _Global_ nie jest dokładna i powinna być ignorowana. |
# Kolekcje 1. generacji | Przedstawia liczbę obiektów generacji 1, które są odśmiecane od momentu uruchomienia aplikacji. Licznik jest zwiększany na końcu odzyskiwania pamięci generacji 1. Odzyskiwanie pamięci wyższej generacji obejmuje wszystkie kolekcje niższej generacji. Ten licznik jest jawnie zwiększany, gdy następuje odzyskiwanie pamięci wyższej generacji (generacja 2). Ten licznik wyświetla ostatnią zaobserwowaną wartość. Wartość licznika _Global_ nie jest dokładna i powinna być ignorowana. |
# Kolekcje 2. generacji | Przedstawia liczbę obiektów generacji 2, które są odśmiecane od momentu uruchomienia aplikacji. Licznik jest zwiększany na końcu odzyskiwania pamięci generacji 2 (nazywanej również pełnym odzyskiwaniem pamięci). Ten licznik wyświetla ostatnią zaobserwowaną wartość. Wartość licznika _Global_ nie jest dokładna i powinna być ignorowana. |
# Indukowany GC | Przedstawia szczytową liczbę wykonanych operacji odzyskiwania pamięci z powodu jawnego wywołania metody GC.Collect. Dobrym rozwiązaniem jest dostrojenie częstotliwości zbierania pamięci przez moduł odśmiecania pamięci. |
Liczba przypiętych obiektów | Wyświetla liczbę przypiętych obiektów napotkanych w ostatnim odśmieceniu pamięci. Przypięty obiekt jest obiektem, którego moduł odśmiecania pamięci nie może przenieść w pamięci. Ten licznik śledzi przypięte obiekty tylko w stertach, które są wyrzucane śmieci. Na przykład odzyskiwanie pamięci generacji 0 powoduje wyliczenie przypiętych obiektów tylko w stercie generacji 0. |
Liczba używanych bloków ujścia | Wyświetla bieżącą liczbę używanych bloków synchronizacji. Bloki synchronizacji to struktury danych poszczególnych obiektów przydzielone do przechowywania informacji o synchronizacji. Przechowują słabe odwołania do zarządzanych obiektów i muszą być skanowane przez moduł odśmiecanie pamięci. Bloki synchronizacji nie są ograniczone do przechowywania informacji o synchronizacji; mogą również przechowywać metadane międzyoperacowe modelu COM. Ten licznik wskazuje problemy z wydajnością z dużym użyciem elementów pierwotnych synchronizacji. |
# Całkowita liczba zatwierdzonych bajtów | Wyświetla ilość pamięci wirtualnej w bajtach, która jest obecnie zatwierdzana przez moduł odśmiecający pamięć. Zatwierdzona pamięć to pamięć fizyczna, dla której miejsce zostało zarezerwowane w pliku stronicowania dysku. |
# Łączna liczba zarezerwowanych bajtów | Wyświetla ilość pamięci wirtualnej w bajtach, obecnie zarezerwowaną przez moduł odśmiecający pamięci. Zarezerwowana pamięć to przestrzeń pamięci wirtualnej zarezerwowana dla aplikacji, gdy nie są używane żadne strony dysku ani pamięci głównej. |
% czasu w GC | Przedstawia procent czasu, który upłynął, wykonujący odzyskiwanie pamięci od ostatniego cyklu odzyskiwania pamięci. Ten licznik zwykle wskazuje pracę wykonywaną przez moduł odśmiecania pamięci w celu zbierania i kompaktowania pamięci w imieniu aplikacji. Ten licznik jest aktualizowany tylko na końcu każdego odzyskiwania pamięci. Ten licznik nie jest średnią; jego wartość odzwierciedla ostatnią obserwowaną wartość. |
Przydzielone bajty/sekundy | Wyświetla liczbę bajtów na sekundę przydzielonych na stertę odzyskiwania pamięci. Ten licznik jest aktualizowany na końcu każdego odzyskiwania pamięci, a nie na każdej alokacji. Ten licznik nie jest średni w czasie; Wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Finalizacja ocalałych | Przedstawia liczbę obiektów zbieranych przez śmieci, które przetrwają zbieranie, ponieważ oczekują na sfinalizowanie. Jeśli te obiekty przechowują odwołania do innych obiektów, te obiekty również przetrwają, ale nie są liczone przez ten licznik. Licznik Promowana pamięć finalizowana z generacji 0 reprezentuje całą pamięć, która przetrwała z powodu finalizacji. Ten licznik nie jest skumulowany; jest aktualizowany na końcu każdego odzyskiwania pamięci z liczbą ocalałych tylko podczas tego konkretnego zbierania. Ten licznik wskazuje dodatkowe obciążenie, które może spowodować naliczenie aplikacji z powodu finalizacji. |
Rozmiar sterty 0. generacji | Wyświetla maksymalną liczbę bajtów, które można przydzielić w generacji 0; nie wskazuje bieżącej liczby bajtów przydzielonych w generacji 0. Odzyskiwanie pamięci generacji 0 występuje, gdy alokacje od czasu ostatniego zbierania przekraczają ten rozmiar. Rozmiar generacji 0 jest dostrojony przez moduł odśmiecania pamięci i może ulec zmianie podczas wykonywania aplikacji. Na końcu kolekcji generacji 0 rozmiar sterty generacji 0 wynosi 0 bajtów. Ten licznik wyświetla rozmiar alokacji w bajtach, które wywołują odzyskiwanie pamięci następnej generacji 0. Ten licznik jest aktualizowany na końcu odzyskiwania pamięci, a nie na każdej alokacji. |
Liczba bajtów promowanych w generacji 0 na sekundę | Wyświetla bajty na sekundę, które są promowane z generacji 0 do generacji 1. Pamięć jest promowana, gdy przetrwa odzyskiwanie pamięci. Ten licznik jest wskaźnikiem stosunkowo długotrwałych obiektów tworzonych na sekundę. Ten licznik wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Rozmiar sterty 1. generacji | Wyświetla bieżącą liczbę bajtów w generacji 1; ten licznik nie wyświetla maksymalnego rozmiaru generacji 1. Obiekty nie są przydzielane bezpośrednio w tej generacji; są one promowane z poprzednich generacji 0 odzyskiwania pamięci. Ten licznik jest aktualizowany na końcu odzyskiwania pamięci, a nie na każdej alokacji. |
Liczba bajtów promowanych przez 1. generacji/s | Wyświetla bajty na sekundę, które są promowane z generacji 1 do generacji 2. Obiekty, które są promowane tylko dlatego, że oczekują na finalizację, nie są uwzględniane w tym liczniku. Pamięć jest promowana, gdy przetrwa odzyskiwanie pamięci. Nic nie jest promowane z pokolenia 2, ponieważ jest to najstarsze pokolenie. Ten licznik jest wskaźnikiem bardzo długotrwałych obiektów tworzonych na sekundę. Ten licznik wyświetla różnicę między wartościami obserwowanych w dwóch ostatnich próbkach podzielonych przez czas trwania interwału próbki. |
Rozmiar sterty 2. generacji | Wyświetla bieżącą liczbę bajtów w generacji 2. Obiekty nie są przydzielane bezpośrednio w tej generacji; są one promowane od generacji 1 podczas odzyskiwania pamięci poprzedniej generacji 1. Ten licznik jest aktualizowany na końcu odzyskiwania pamięci, a nie na każdej alokacji. |
Duży rozmiar sterty obiektu | Wyświetla bieżący rozmiar w bajtach dużego sterty obiektu. Obiekty, które są większe niż około 85 000 bajtów, są traktowane jako duże obiekty przez moduł odśmiecający śmieci i są bezpośrednio przydzielane w specjalnej stercie. Nie są promowane przez pokolenia. Ten licznik jest aktualizowany na końcu odzyskiwania pamięci, a nie na każdej alokacji. |
Identyfikator procesu | Wyświetla identyfikator procesu monitorowanego wystąpienia procesu CLR. |
Podwyższenie poziomu pamięci finalizacji z 0. generacji | Wyświetla bajty pamięci, które są promowane z generacji 0 do generacji 1 tylko dlatego, że oczekują na sfinalizowanie. Ten licznik nie jest skumulowany; wyświetla wartość obserwowaną na końcu ostatniego odzyskiwania pamięci. |
Podwyższony poziom pamięci z generacji 0 | Wyświetla bajty pamięci, które przetrwają odzyskiwanie pamięci i są promowane z generacji 0 do generacji 1. Obiekty, które są promowane tylko dlatego, że oczekują na finalizację, nie są uwzględniane w tym liczniku. Ten licznik nie jest skumulowany; wyświetla wartość obserwowaną na końcu ostatniego odzyskiwania pamięci. |
Podwyższony poziom pamięci z 1. generacji | Wyświetla bajty pamięci, które przetrwają odzyskiwanie pamięci i są promowane z generacji 1 do 2. generacji. Obiekty, które są promowane tylko dlatego, że oczekują na finalizację, nie są uwzględniane w tym liczniku. Ten licznik nie jest skumulowany; wyświetla wartość obserwowaną na końcu ostatniego odzyskiwania pamięci. Ten licznik jest resetowany do 0, jeśli ostatnie odzyskiwanie pamięci było tylko kolekcją generacji 0. |
Liczniki wydajności sieci
Kategoria Sieć środowiska .NET CLR zawiera liczniki, które zawierają informacje o danych wysyłanych i odbieranych przez aplikację za pośrednictwem sieci. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
Odebrane bajty | Skumulowana łączna liczba bajtów odebranych przez wszystkie Socket obiekty w obiekcie AppDomain od momentu rozpoczęcia procesu. Ta liczba zawiera dane i wszelkie informacje o protokole, które nie są zdefiniowane przez protokół TCP/IP. |
Wysłane bajty | Skumulowana liczba bajtów wysłanych przez wszystkie Socket obiekty w obiekcie AppDomain od momentu rozpoczęcia procesu. Ta liczba zawiera dane i wszelkie informacje o protokole, które nie są zdefiniowane przez protokół TCP/IP. |
Nawiązane połączenia | Skumulowana łączna liczba Socket obiektów dla gniazd strumienia, które kiedykolwiek były połączone w obrębie AppDomain od początku procesu. |
Odebrane datagramy | Skumulowana łączna liczba pakietów datagramu odebranych przez wszystkie Socket obiekty w ramach AppDomain tego procesu od początku procesu. |
Datagramy wysłane | Skumulowana łączna liczba pakietów datagramu wysyłanych przez wszystkie Socket obiekty w ramach AppDomain od początku procesu. |
Średni okres istnienia httpWebRequests | Średni czas ukończenia dla wszystkich HttpWebRequest obiektów zakończonych w ostatnim interwale od AppDomain momentu rozpoczęcia procesu. |
HttpWebRequests — średni czas kolejki | Średni czas w kolejce dla wszystkich HttpWebRequest obiektów, które opuściły kolejkę w ostatnim interwale od AppDomain rozpoczęcia procesu. |
Utworzone/s httpWebRequests | Liczba HttpWebRequest obiektów utworzonych na sekundę w obiekcie AppDomain. |
HttpWebRequests Kolejkowane/s | Liczba HttpWebRequest obiektów dodanych do kolejki na sekundę w obiekcie AppDomain. |
HttpWebRequests przerwane/s | Liczba HttpWebRequest obiektów, w których aplikacja nazwała metodę Abort na sekundę w obiekcie AppDomain. |
Błąd httpWebRequests na sekundę | Liczba HttpWebRequest obiektów, które otrzymały kod stanu niepowodzenia z serwera na sekundę w ciągu AppDomain. |
Obsługiwanych jest kilka klas liczników wydajności sieci:
- Liczniki zdarzeń, które mierzą liczbę przypadków wystąpienia określonego zdarzenia.
- Liczniki danych, które mierzą ilość wysłanych lub odebranych danych.
- Liczniki czasu trwania, które mierzą czas trwania różnych procesów. Czasy są mierzone dla obiektów w każdym interwale (zwykle w sekundach) po ich wylogowaniu się z różnych stanów.
- Liczniki interwału, które mierzą liczbę obiektów, które dokonują określonego przejścia na interwał (zwykle na sekundę).
Liczniki wydajności sieci dla zdarzeń obejmują następujące elementy:
- Nawiązane połączenia
- Odebrane datagramy
- Datagramy wysłane
Te liczniki wydajności zapewniają liczniki od rozpoczęcia procesu. Liczba ustanowionych Socket połączeń obejmuje jawne Socket wywołania metod przez aplikację dla połączenia gniazda strumienia, które zostało ustanowione, a także wywołania wewnętrzne wykonywane przez inne klasy (HttpWebRequest, FtpWebRequest, WebClienti TcpClient, na przykład) do Socket klasy
Liczby odebranych datagramów i wysłanych datagramów obejmują pakiety datagramu wysyłane lub odbierane przy użyciu jawnych Socket wywołań metod przez aplikację, a także wywołań wewnętrznych wykonanych przez inne klasy (UdpClientna przykład) do Socket. Klasa. Liczniki Odebrane i Datagramy Wysłane mogą być również używane do zapewnienia bardzo surowej miary liczby bajtów wysłanych lub odebranych przy użyciu datagramów przy założeniu średniego rozmiaru datagramu.
Liczniki wydajności sieci dla danych obejmują następujące elementy:
- Odebrane bajty
- Wysłane bajty
Powyższe liczniki zapewniają liczbę bajtów od rozpoczęcia procesu.
Istnieją dwa liczniki czasu trwania, które mierzą czas, przez jaki HttpWebRequest obiekty przechodzą przez cały cykl życia lub tylko część:
- Średni okres istnienia httpWebRequests
- HttpWebRequests — średni czas kolejki
W przypadku licznika HttpWebRequests Average Lifetime okres istnienia większości HttpWebRequest obiektów zawsze rozpoczyna się od czasu utworzenia obiektu aż do momentu zamknięcia strumienia odpowiedzi przez aplikację. Istnieją dwa nietypowe przypadki:
Jeśli aplikacja nigdy nie wywołuje GetResponse metod lub BeginGetResponse , okres istnienia HttpWebRequest obiektu jest ignorowany.
HttpWebRequest Jeśli obiekt zgłasza WebException błąd podczas wywoływania GetResponse metod lubEndGetResponse, okres istnienia kończy się po wystąpieniu wyjątku. Technicznie podstawowy strumień odpowiedzi jest również zamykany w tym momencie (strumień odpowiedzi zwrócony użytkownikowi jest naprawdę strumieniem pamięci zawierającym kopię strumienia odpowiedzi).
Istnieją cztery liczniki, które śledzą niektóre HttpWebRequest problemy z obiektami na interwał. Te liczniki wydajności mogą pomóc deweloperom aplikacji, administratorom i pracownikom pomocy technicznej lepiej zrozumieć, co HttpWebRequest robią obiekty. Liczniki obejmują następujące elementy:
- Utworzone/s httpWebRequests
- HttpWebRequests Kolejkowane/s
- HttpWebRequests przerwane/s
- Błąd httpWebRequests na sekundę
W przypadku licznika HttpWebRequests przerwane/s zliczane są również wywołania Abort wewnętrzne. Te wywołania wewnętrzne są zwykle spowodowane przez przekroczenia limitu czasu, które aplikacja może chcieć zmierzyć.
Licznik HttpWebRequests Failed/sec zawiera liczbę HttpWebRequest obiektów, które otrzymały kod stanu niepowodzenia z serwera na sekundę. Oznacza to, że kod stanu odebrany z serwera Http na końcu żądania nie mieścił się w zakresie od 200 do 299. Kody stanu, które są obsługiwane i powodują nowe żądanie (na przykład wiele kodów stanu 401 Brak autoryzacji) zakończy się niepowodzeniem lub nie zakończy się niepowodzeniem na podstawie wyniku ponawiania próby. Jeśli aplikacja zobaczy błąd na podstawie ponawiania próby, ten licznik jest zwiększany.
Liczniki wydajności sieci można uzyskiwać i zarządzać nimi przy użyciu PerformanceCounter klas i powiązanych w System.Diagnostics przestrzeni nazw. Liczniki wydajności sieci można również wyświetlić za pomocą konsoli monitor wydajności systemu Windows.
Aby można było używać liczników wydajności sieci, należy włączyć w pliku konfiguracji. Wszystkie liczniki wydajności sieci są włączone lub wyłączone z jednym ustawieniem w pliku konfiguracji. Nie można włączyć ani wyłączyć poszczególnych liczników wydajności sieci. Aby uzyskać więcej informacji, zobacz <performanceCounter> , element (ustawienia sieci).
Jeśli liczniki sieci są włączone, spowoduje to utworzenie i zaktualizowanie zarówno liczników wydajności dla domeny aplikacji, jak i globalnych. W przypadku wyłączenia aplikacja nie będzie dostarczać żadnych danych licznika wydajności sieci.
Liczniki wydajności są pogrupowane w kategorie. Poniższy kod zawiera listę wszystkich kategorii:
PerformanceCounterCategory[] Array = PerformanceCounterCategory.GetCategories();
for (int i = 0; i < Array.Length; i++)
{
Console.Out.WriteLine("{0}. Name={1} Help={2}", i, Array[i].CategoryName, Array[i].CategoryHelp);
}
Liczniki wydajności sieci są wymienione w dwóch kategoriach:
.NET CLR Networking" — oryginalne liczniki wydajności wprowadzone w programie .NET Framework w wersji 2 i obsługiwane w programie .NET Framework w wersji 2 lub nowszej.
.NET CLR Networking 4.0.0.0" — wszystkie powyższe liczniki gniazd oraz nowe liczniki wydajności obsługiwane w programie .NET Framework w wersji 4 lub nowszej. Te nowe liczniki zawierają informacje o wydajności obiektów HttpWebRequest .
Aby uzyskać więcej informacji na temat uzyskiwania dostępu do liczników wydajności w aplikacji i zarządzania nimi, zobacz Liczniki wydajności.
Liczniki wydajności zabezpieczeń
Kategoria Zabezpieczenia środowiska CLR platformy .NET zawiera liczniki, które zawierają informacje o sprawdzaniu zabezpieczeń, które środowisko uruchomieniowe języka wspólnego wykonuje dla aplikacji. W poniższej tabeli opisano te liczniki wydajności.
Licznik wydajności | opis |
---|---|
# Sprawdzanie czasu łącza | Przedstawia łączną liczbę kontroli zabezpieczeń dostępu kodu w czasie połączenia od momentu uruchomienia aplikacji. Sprawdzanie zabezpieczeń dostępu kodu w czasie połączenia jest wykonywane, gdy obiekt wywołujący wymaga określonego uprawnienia w czasie kompilacji just in time (JIT). Sprawdzanie czasu połączenia jest wykonywane raz na obiekt wywołujący. Ta liczba nie wskazuje na poważne problemy z wydajnością; wskazuje jedynie na aktywność systemu zabezpieczeń. |
% czasu w czekach RT | Przedstawia procent czasu, który upłynął, wykonując testy zabezpieczeń dostępu do kodu środowiska uruchomieniowego od ostatniego przykładu. Ten licznik jest aktualizowany na końcu sprawdzania zabezpieczeń programu .NET Framework. Nie jest to średnia; reprezentuje ostatnią obserwowaną wartość. |
% czasu sig authenticating | Zarezerwowane do użytku w przyszłości. |
Głębokość stosu | Przedstawia głębokość stosu podczas ostatniego sprawdzania zabezpieczeń dostępu do kodu środowiska uruchomieniowego. Testy zabezpieczeń dostępu kodu środowiska uruchomieniowego są wykonywane przez przejście stosu. Ten licznik nie jest średnią; wyświetla tylko ostatnią zaobserwowaną wartość. |
Łączna liczba testów środowiska uruchomieniowego | Przedstawia łączną liczbę testów zabezpieczeń dostępu do kodu środowiska uruchomieniowego wykonanych od momentu uruchomienia aplikacji. Testy zabezpieczeń dostępu kodu środowiska uruchomieniowego są wykonywane, gdy obiekt wywołujący wymaga określonego uprawnienia. Sprawdzanie środowiska uruchomieniowego jest wykonywane przy każdym wywołaniu przez obiekt wywołujący i sprawdza bieżący stos wątku obiektu wywołującego. W przypadku użycia z licznikiem głębokości stosu ten licznik wskazuje karę wydajności, która występuje w przypadku kontroli zabezpieczeń. |