Udostępnij przez


Używanie liczników wydajności do diagnozowania problemów z wydajnością aplikacji na hostach sesji usług pulpitu zdalnego

Niska wydajność aplikacji jest jednym z najtrudniejszych problemów do zdiagnozowania, szczególnie w przypadku powolnych lub nieodpowiadących aplikacji. Tradycyjnie należy rozpocząć diagnozę, zbierając procesor CPU, pamięć, dane wejściowe/wyjściowe dysku i inne metryki. Następnie użyj narzędzi, takich jak Windows Performance Analyzer, aby spróbować dowiedzieć się, co powoduje problem. Niestety, w większości przypadków te dane nie pomagają zidentyfikować głównej przyczyny, ponieważ liczniki zużycia zasobów mają częste i duże różnice. Taka sytuacja utrudnia odczytanie danych i skorelowanie ich z zgłoszonym problemem.

Note

Licznik opóźnienia danych wejściowych użytkownika jest zgodny tylko z:

  • Windows Server 2019 lub nowszy
  • Windows 10, wersja 1809 lub nowsza

Licznik opóźnienia danych wejściowych użytkownika może pomóc w szybkim zidentyfikowaniu głównej przyczyny problemów z wydajnością pulpitu zdalnego użytkownika końcowego. Ten licznik mierzy, jak długo każde dane wejściowe użytkownika, takie jak użycie myszy lub klawiatury, pozostają w kolejce, zanim proces je przetworzy. Licznik działa zarówno w sesjach lokalnych, jak i zdalnych.

Na poniższej ilustracji przedstawiono przybliżoną reprezentację przepływu danych wejściowych użytkownika z klienta do aplikacji.

Diagram przepływów wejściowych użytkownika z klienta pulpitu zdalnego użytkowników do aplikacji.

Licznik Opóźnienia danych wejściowych użytkownika mierzy maksymalne opóźnienie w przedziale czasu między zakolejkowaniem wejścia a momentem, gdy aplikacja w tradycyjnej pętli komunikatów je odbiera. Tradycyjna pętla komunikatów jest wyświetlana na poniższym wykresie blokowym:

Diagram przepływu opóźnienia licznika wydajności danych wejściowych użytkownika.

Jednym z ważnych szczegółów tego licznika jest to, że raportuje maksymalne opóźnienie danych wejściowych użytkownika w konfigurowalnym interwale. To opóźnienie jest najdłuższym czasem potrzebnym na dotarcie do aplikacji danych wejściowych, co może mieć wpływ na szybkość ważnych i widocznych akcji, takich jak wpisywanie.

Na przykład w poniższej tabeli opóźnienie danych wejściowych użytkownika zostanie zgłoszone jako 1000 ms w tym interwale. Licznik zgłasza największe opóźnienie wprowadzenia danych użytkownika w danym przedziale czasowym. Licznik zgłasza to opóźnienie, ponieważ postrzeganie przez użytkownika "powolnego" jest określane przez najdłuższy czas reakcji (maksymalny), który występuje, a nie przez średnią szybkość wszystkich danych wejściowych.

Number 0 1 2
Delay 16 ms 20 ms 1000 ms

Włączanie i używanie nowych liczników wydajności

Aby użyć tych nowych liczników wydajności, należy najpierw włączyć klucz rejestru, uruchamiając następujące polecenie:

reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v "EnableLagCounter" /t REG_DWORD /d 0x1 /f

Note

Jeśli używasz systemu Windows 10 w wersji 1809 lub nowszej lub Windows Server 2019 lub nowszej, nie musisz włączać klucza rejestru.

Następnie uruchom ponownie serwer. Następnie otwórz monitor wydajności i wybierz ikonę znaku plus (+), jak pokazano na poniższym zrzucie ekranu:

Zrzut ekranu przedstawiający, jak dodać licznik wydajności

Następnie powinno zostać wyświetlone okno dialogowe Dodawanie liczników , w którym można wybrać opcję Opóźnienie danych wejściowych użytkownika na proces lub Opóźnienie danych wejściowych użytkownika na sesję.

Zrzut ekranu przedstawiający sposób dodawania opóźnienia danych wejściowych użytkownika na sesję.

Zrzut ekranu przedstawiający sposób dodawania opóźnienia danych wejściowych użytkownika dla każdego procesu.

Po wybraniu Opóźnienie danych wejściowych użytkownika na proces zobaczysz wystąpienia wybranego obiektu, czyli procesy w formacie SessionID:ProcessID <Process Image>.

Jeśli na przykład aplikacja Kalkulator jest uruchomiona w identyfikatorze sesji 1, zostanie wyświetlony komunikat 1:4232 <Calculator.exe>.

Note

Nie wszystkie procesy są uwzględniane. Nie zobaczysz żadnych procesów, które są uruchomione jako SYSTEM.

Licznik rozpoczyna raportowanie opóźnienia danych wejściowych użytkownika zaraz po dodaniu. Maksymalna skala jest domyślnie ustawiona na 100 (ms).

Zrzut ekranu przedstawiający przykład działania dla opóźnienia danych wejściowych użytkownika na proces w monitorze wydajności.

Następnie zobacz Opóźnienie wpisanych danych użytkownika na sesję. Istnieją wystąpienia dla każdego identyfikatora sesji, a ich liczniki pokazują opóźnienie wprowadzania danych przez użytkownika w ramach określonej sesji. Ponadto istnieją dwa wystąpienia o nazwie "Max" (maksymalne opóźnienie danych wejściowych użytkownika we wszystkich sesjach) i "Średnia" (średnia we wszystkich sesjach).

W tej tabeli przedstawiono wizualny przykład tych wystąpień. Te same informacje można uzyskać w narzędziu Perfmon, przełączając się na typ grafu Raport.

Typ licznika Nazwa wystąpienia Zgłoszone opóźnienie (ms)
Opóźnienie danych wejściowych użytkownika na proces 1:4232 <Calculator.exe> 200
Opóźnienie danych wejściowych użytkownika na proces 2:1000 <Calculator.exe> 16
Opóźnienie danych wejściowych użytkownika na proces 1:2000 <Calculator.exe> 32
Opóźnienie danych wejściowych użytkownika na sesję 1 200
Opóźnienie danych wejściowych użytkownika na sesję 2 16
Opóźnienie danych wejściowych użytkownika na sesję Average 108
Opóźnienie danych wejściowych użytkownika na sesję Max 200

Liczniki używane w przeciążonym systemie

Teraz przyjrzyjmy się temu, co widzisz w raporcie, jeśli wydajność aplikacji jest obniżona. Poniższy wykres przedstawia odczyty dla użytkowników pracujących zdalnie w programie Microsoft Word. W takim przypadku wydajność spada wraz z upływem czasu, ponieważ coraz więcej użytkowników loguje się zdalnie.

Zrzut ekranu przedstawiający przykładowy wykres wydajności dla serwera RDSH z uruchomionym programem Microsoft Word.

Poniżej przedstawiono sposób odczytywania wierszy grafu:

  • Różowa linia pokazuje liczbę sesji zalogowanych na serwerze.
  • Czerwona linia to użycie procesora CPU.
  • Zielona linia to maksymalne opóźnienie danych wejściowych użytkownika we wszystkich sesjach.
  • Niebieska linia, przedstawiona jako czarna na tym wykresie, reprezentuje średnie opóźnienie wprowadzania danych przez użytkownika we wszystkich sesjach.

Istnieje korelacja między skokami użycia procesora CPU a opóźnieniem wprowadzania danych przez użytkownika. W miarę zwiększania użycia procesora opóźnienie reakcji na dane wejściowe użytkownika wzrasta. Ponadto w miarę dodawania większej liczby użytkowników do systemu użycie procesora CPU zbliża się do 100%, co prowadzi do częstszych wzrostów opóźnień danych wejściowych użytkownika. Chociaż ten licznik jest przydatny w przypadkach, gdy serwer zabraknie zasobów, może również śledzić opóźnienie wprowadzania danych przez użytkownika związane z określoną aplikacją.

Opcje konfiguracji

Ważne jest, aby pamiętać, gdy używasz tego licznika wydajności, jest to, że raportuje opóźnienie wprowadzania danych przez użytkownika w przedziale 1000 ms domyślnie. Jeśli ustawisz właściwość próbki interwału licznika wydajności na wartość inną niż pokazano na poniższym zrzucie ekranu, zgłaszana wartość będzie niepoprawna.

Zrzut ekranu przedstawiający okno dialogowe Właściwości monitora wydajności.

Aby rozwiązać ten problem, możesz ustawić następujący klucz rejestru tak, aby był zgodny z interwałem (w milisekundach), którego chcesz użyć. Na przykład, jeśli zmienisz Próbka co 1 sekundę na Próbka co 5 sekund, musisz ustawić ten klucz na wartość 5000 ms.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]

"LagCounterInterval"=dword:00005000

Note

Jeśli używasz systemu Windows 10 w wersji 1809 lub nowszej lub windows Server 2019 lub nowszej, nie musisz ustawiać wartości LagCounterInterval, aby naprawić licznik wydajności.

Dodaliśmy również kilka kluczy, które mogą być przydatne w ramach tego samego klucza rejestru:

LagCounterImageNameFirst— ustaw ten klucz na DWORD 1 wartość (wartość domyślna 0 lub klucz nie istnieje). Ten klucz zmienia nazwy liczników na "Image Name <SessionID:ProcessId>", na przykład "explorer <1:7964>". Ta zmiana jest przydatna, jeśli chcesz sortować według nazwy obrazu.

LagCounterShowUnknown— ustaw ten klucz na DWORD 1 wartość (wartość domyślna 0 lub klucz nie istnieje). Ten klucz pokazuje wszystkie procesy, które są uruchomione jako usługi lub SYSTEM. Niektóre procesy są wyświetlane z ich sesją ustawioną jako "?".

Na poniższej ilustracji przedstawiono wygląd obu kluczy:

Zrzut ekranu przedstawiający monitor wydajności z obydwoma kluczami włączonymi.

Używanie nowych liczników z narzędziami firm innych niż Microsoft

Narzędzia do monitorowania mogą pobierać dane z tego licznika przy użyciu liczników wydajności.

Podziel się opinią

Opinie dotyczące tej funkcji można przesłać za pośrednictwem Centrum opinii. Wybierz pozycję Aplikacje > Wszystkie inne aplikacje i dołącz "Liczniki wydajności usług pulpitu zdalnego — monitor wydajności" w tytule wpisu.