Wyświetlanie wyników optymalizacji kodu

Po skonfigurowaniu i ustawieniu optymalizacji kodu w aplikacji, możesz uzyskiwać dostęp do wszelkich otrzymywanych spostrzeżeń i wyświetlać je.

optymalizacje kodu Access

Optymalizacje kodu dostępu za pośrednictwem dwóch punktów wejścia:

Skonsolidowany przegląd strony optymalizacji kodu (wersja zapoznawcza)

Wyświetl wyniki optymalizacji kodu, korzystając ze strony Przegląd optymalizacji kodu. W tym skonsolidowanym przeglądzie można uzyskać dostęp do wyników w wielu subskrypcjach dla wielu zasobów usługi Application Insights.

Zrzut ekranu przedstawiający stronę skonsolidowanego przeglądu optymalizacji kodu.

Skonsolidowane wyniki można filtrować, wyszukując pole filtru lub ustawiając następujące filtry:

Filtr Opis Wartość domyślna
Przedział czasu Wybierz zakres czasu, z którego chcesz wyświetlić wyniki optymalizacji kodu. Ostatnie 24 godziny
Rola Nazwa roli przypisana do maszyny lub obciążenia usług raportowania. Zaktualizuj ją za pomocą konfiguracji usługi Application Insights. Wszystkie role
Subskrypcja Subskrypcja, do której należy wgląd. Możesz wybrać więcej niż jedną. N/A
Application Insights Zasób usługi Application Insights skojarzony z aplikacją. Wybierz więcej niż jeden. N/A
Typ szczegółowych informacji Typ problemu, taki jak procesor CPU, pamięć, blokowanie i wyjątki. Wszystkie typy

Następnie można sortować kolumny w wynikach analiz na podstawie preferowanego widoku, w tym według:

  • Problem z wydajnością
  • Pełna nazwa metody nadrzędnej

Poszczególne zasoby usługi Application Insights

Optymalizacje kodu dostępu specyficzne dla poszczególnych zasobów usługi Application Insights z menu po lewej stronie tego zasobu. Wybierz pozycję Zbadaj>wydajność i wybierz przycisk Optymalizacje kodu z górnego menu.

Zrzut ekranu przedstawiający optymalizacje kodu znajdujące się na stronie Wydajność.

Przefiltruj wyniki dla pojedynczego zasobu, wyszukując pole filtru lub ustawiając następujące filtry:

Filtr Opis Wartość domyślna
Przedział czasu Wybierz zakres czasu, z którego chcesz wyświetlić wyniki optymalizacji kodu. Ostatnie 24 godziny
Rola Nazwa roli przypisana do maszyny lub obciążenia usług raportowania. Można je zaktualizować za pomocą konfiguracji usługi Application Insights. Wszystkie role
Typ szczegółowych informacji Typ problemu, taki jak procesor CPU, pamięć, blokowanie i wyjątki. Wszystkie typy

Następnie posortuj kolumny w wynikach analizy zgodnie z preferowanym widokiem, w tym według:

  • Problem z wydajnością
  • Liczba profilów, które zawierały ten problem
  • Pełna nazwa metody nadrzędnej

Interpretowanie szacowanych wartości procentowego użycia pamięci i szczytowego użycia procesora CPU

Optymalizacje kodu określają szacowany procesor i pamięć na podstawie ilości aktywności w aplikacji. Oprócz wartości procentowych pamięci i procesora CPU optymalizacje kodu obejmują:

  • Rzeczywiste rozmiary alokacji (w bajtach)
  • Zestawienie przydzielonych typów w wywołaniu

Pamięć

W przypadku pamięci liczba jest procentem wszystkich alokacji w śladzie. Jeśli na przykład problem zajmuje 24% pamięci, to 24% przydzielonej pamięci przypada na to wywołanie.

CPU

W przypadku użycia procesora wartość procentowa zależy od liczby rdzeni procesora w komputerze (na przykład czterordzeniowego lub ośmiordzeniowego) oraz od czasu trwania śledzenia. Załóżmy na przykład, że śledzenie trwa 10 sekund i masz cztery procesory: łącznie masz 40 sekund czasu CPU. Jeśli analiza wskazuje, że wiersz kodu używa 5% procesora, to korzysta z 5% z 40 sekund, czyli 2 sekund.

blokowanie

Informacje o blokowaniu pokazują, gdzie wątki spędzają czas, czekając na zasoby, takie jak operacje we/wy, blokady lub uśpienia. Code Optimizations raportuje czas blokowania w sekundach i agreguje go dla wszystkich wątków i rdzeni, więc sumy mogą przekraczać czas trwania rejestrowania, podobnie jak w przypadku metryk CPU.

Ta metryka pozwala na identyfikację problemów związanych z opóźnieniami, takich jak:

  • Blokowanie rywalizacji między wątkami
  • Synchroniczne operacje wejścia/wyjścia
  • Blokowanie wywołań funkcji w operacjach asynchronicznych

Wyjątki

Optymalizacje kodu wyodrębniają informacje o wyjątkach z migawek zbieranych przez Snapshot Debugger. Jeśli włączysz w aplikacji funkcję Snapshot Debugger i będzie ona zbierać migawki, funkcja Code Optimizations automatycznie przetworzy je w celu wyodrębnienia informacji.

Wyświetl szczegółowe informacje

Po sortowaniu i filtrowaniu wyników optymalizacji kodu wybierz poszczególne szczegółowe informacje, aby wyświetlić następujące szczegóły w okienku:

  • Szczegółowy opis analizy błędów wydajności.
  • Pełny stos wywołań.
  • Zalecenia dotyczące rozwiązywania problemu z wydajnością.
  • Oś czasu wpływu i progu trendu problemu.

Spostrzeżenia

Karta Analizy zawiera:

  • Krótki opis wybranego problemu.
  • Bieżący stan pamięci zasobu lub użycia procesora.
  • Zalecenie wygenerowane przez sztuczną inteligencję dotyczące rozwiązywania problemu.

Zrzut ekranu przedstawiający okienko szczegółów dla określonego wyniku optymalizacji kodu CPU.

Uwaga / Notatka

Jeśli nie widzisz żadnych szczegółowych informacji, prawdopodobnie usługa Optymalizacje kodu nie zauważyła żadnych wąskich gardeł wydajnościowych w twoim kodzie. Sprawdź ponownie, czy pojawiły się jakieś nowe informacje.

Stos wywołań

W okienku szczegółów szczegółowych informacji pod nagłówkiem Stos wywołań można wykonywać następujące czynności:

  • Wybierz Rozwiń, aby wyświetlić pełny stos wywołań związany z problemem z wydajnością.
  • Wybierz pozycję Kopiuj , aby skopiować stos wywołań.

Zrzut ekranu przedstawiający nagłówek stosu wywołań w okienku szczegółów dla określonego wyniku procesora CPU z wcześniejszej wersji.

Zrzut ekranu przedstawiający rozwinięty stos wywołań dla określonego wyniku procesora z wcześniejszego kontekstu.

Linia czasu

W okienku szczegółów w obszarze Oś czasu możesz wyświetlić wykres przedstawiający oś czasu wpływu i progu określonego problemu z wydajnością. Wyniki różnią się w zależności od ustawionych filtrów. Na przykład szczegółowe informacje dotyczące problemu z wydajnością pamięci „Nieefektywne String.SubString()” z ostatnich 24 godzin mogą wyglądać następująco:

Zrzut ekranu przedstawiający wpływ trendu CPU w ciągu siedmiu dni.

Następne kroki