Analizuj profile
Profil, według wikipedii, "jest formą dynamicznej analizy programu, która mierzy, na przykład, przestrzeń (pamięć) lub złożoność czasu programu, wykorzystanie konkretnych instrukcji lub częstotliwość i czas trwania wywołań funkcji". Dzięki temu profiler jest programem do generowania takiego profilu w celu przeprowadzenia natychmiastowej lub późniejszej analizy.
W większości przypadków reguła profilująca jest używana przez programistów do identyfikowania problemów z wydajnością lub wąskich gardeł w kodzie. Reguły profilujące zostały zaprojektowane w taki sposób, aby umożliwić programistom odkopywanie kodu aż do pojedynczej linii kodu, która działa powoli lub intensywnie korzysta z zasobów. Ponieważ profilowanie może być tak zaawansowane, jak identyfikowanie możliwości optymalizacji kodu, jest ono często używane tylko przez programistów w środowiskach programistycznych, gdy już istnieje poważny problem. Nawet jeśli programista chce uruchomić profilowanie w środowisku produkcyjnym, uzyskanie dostępu do środowiska produkcyjnego w celu dołączenia profilera może być trudne.
Instana AutoProfile™ automatycznie przyłącza się do działającego procesu bez konieczności restartowania lub rekonfiguracji. Za pomocą funkcji AutoProfileużytkownicy mogą stale analizować wydajność na poziomie kodu, wykrywać wąskie gardła w kodzie produkcyjnym, wizualizować wydajność za pomocą wykresu płomieniowego i kopać głęboko w "gorące ścieżki" aplikacji.
Aby sprawdzić profile, przejdź do widoku Analiza nieograniczona , a następnie przejdź do widoku Profile.
- Ciągłe analizowanie wydajności na poziomie kodu w środowisku produkcyjnym
- Wizualizuj jako wykres płomienia
- Znajdź 'gorącą ścieżkę' w widoku drzewa
- zanurz się w kodzie (tylko Java)
- Typy profili
Ciągła analiza wydajności na poziomie kodu w środowisku produkcyjnym

AutoProfile automatycznie i w sposób ciągły profiluje sposób działania kodu w środowisku produkcyjnym bez konieczności konfigurowania. Funkcja AutoProfile jest przeznaczona do ujawniania wąskich gardeł w kodzie i raportowania profili procesora i rywalizacji. Profile procesora umożliwiają programistom odkrycie, która metoda intensywnie obciąża procesor, dzięki czemu mogą wydajnie i precyzyjnie zoptymalizować kod. Profile rywalizacji pokazują, które zsynchronizowane dyrektywy powodują długi czas oczekiwania, nieefektywne wykorzystanie możliwości wielowątkowości procesora i prowadzą do złej ogólnej wydajności.
Wizualizuj jako wykres płomienia

AutoProfile wizualizuje wszystkie profile jako wykres płomieniowy, dzięki czemu łatwiej jest dokładnie sprawdzić, gdzie wykorzystywane są zasoby. Słupki na wykresie płomieniowo-płomieniowym są dostosowywane do ilości zużytych zasobów. Ponadto wykres jest uporządkowany chronologicznie od góry do dołu. Instana rozszerza profile o cenne wielkości mierzone, takie jak wykorzystanie procesora i aktywność czyszczenia pamięci. W celu udostępnienia kontekstu niezbędnego do zrozumienia wpływu profilu.
Znajdź 'gorącą ścieżkę' w widoku drzewa

Instana udostępnia widok drzewa wszystkich profili, wystarczy kliknąć znak plus, aby rozwinąć obszar zainteresowania. To sprawia, że szybko i łatwo znaleźć "gorącą ścieżkę" w kodzie. Na przykład można szybko kliknąć profile, aby rozwinąć ścieżkę, która pokazuje, jaki kod wykorzystuje trzydzieści procent łącznego wykorzystania procesora, dzięki czemu można poprawić i zoptymalizować kod.
Zanurz się do kodu (tylko Java)

Otwórz dokładny kod powodujący problem z poziomu wykresu płomienia lub widoku drzewa. Można filtrować według nazwy pakietu lub klasy, aby szybko znaleźć początek kodu w ścieżce kodu. Wystarczy kliknąć odsyłacz, aby przejść bezpośrednio do wiersza kodu, na którym należy się skupić.

AutoProfile Instany doskonale wpisują się w najlepsze w swojej klasie możliwości optymalizacji wydajności. Narzędzia AutoProfile i Unbounded Analytics™ udostępniają programistom wszystkie informacje potrzebne im w zasięgu ręki, aby natychmiast znaleźć podstawową przyczynę problemu lub rywalizacji o zasoby. To sprawia, że optymalizacja wydajności aplikacji i usług, w celu zapewnienia jak najlepszego doświadczenia klienta.
Typy profili
Możliwości profilowania zależą w dużym stopniu od języków, środowisk wykonawczych i wersji. Ze względu na różnice w implementacji mechanizmów próbkowania i narzędzi, typy profili i ich dostępność różnią się w różnych językach i środowiskach wykonawczych. Obecnie obsługiwane typy profili są podsumowane w tabelach w następujący sposób.
Pod względem struktury profile są podobne. Składają się one ze ścieżek wykonywania kodu często reprezentowanych na wykresie wywołań lub w drzewie wywołań z pewnymi statystykami dla każdego węzła, takimi jak liczba trafień, kilobajty lub milisekundy. Ścieżka kodu jest śledzeniem wywołań metod podobnych do śledzenia stosu wyjątków.
Profile Java
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |
| Kontencja | Profile rywalizacji pokazują, gdzie zsynchronizowany kod oczekuje na inne wątki. Czas oczekiwania jest agregowany dla każdej ścieżki kodu. |
Profile
Node.js
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |
| Wywołania asynchroniczne | Profile wywołań asynchronicznych wyświetlają zagregowany widok oczekiwań na wywołania asynchroniczne dla ścieżek kodu, w których wykonywane są te wywołania asynchroniczne. |
| Współczynnik przydziału pamięci | Profile współczynnika przydziału pamięci przedstawiają ilość pamięci przydzielonej na jednostkę czasu zagregowaną przez ścieżki kodu, w której dokonano przydziału. |
Profile Golang
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |
| Połączenia blokujące | Profile połączeń blokujących przedstawiają zagregowany widok połączeń blokujących, tzn. połączeń oczekujących na IO, kanał itp. dla każdej ścieżki kodu. |
| Przydzielanie pamięci | Profile przydzielania pamięci przedstawiają bieżące wykorzystanie pamięci według ścieżki kodu, w której dokonano przydziału. |
Profile
Python
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |
| Połączenia blokujące | Profile blokowania wywołań wyświetlają zagregowany widok oczekiwania na wywołanie dla każdej ścieżki kodu. |
| Współczynnik przydziału pamięci | Profile współczynnika przydziału pamięci przedstawiają ilość pamięci przydzielonej na jednostkę czasu zagregowaną przez ścieżki kodu, w której dokonano przydziału. |
Profile Ruby
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |
Profile podstawowe środowiska .NET produktu 
Uwaga: Profile podstawowe .NET są obsługiwane tylko w systemach operacyjnych Linux.
| Typ profilu | Opis |
|---|---|
| Wykorzystanie procesora | Profile procesora pokazują użycie procesora dla każdej ścieżki kodu. Reguła profilująca procesora działa w oparciu o statystycznie próbkowanie wykonania procesu. |