Studia przypadków

Datadog dostarcza miliony szczegółowych statystyk wydajności dzięki ProfilingManager

Czas czytania: 4 minuty

Regresje wydajności są notorycznie trudne do odtworzenia, co stanowi ogromne wąskie gardło dla deweloperów mobilnych. Chociaż sygnały takie jak współczynniki ANR wskazują, jakie problemy występują w środowisku produkcyjnym, określenie konkretnej linii kodu, która spowodowała problem z wydajnością, wymagało dotychczas wyczerpującego ręcznego odtwarzania lub spekulatywnych eksperymentów metodą prób i błędów.

Firma Datadog współpracowała z Google, aby złagodzić ten problem, integrując interfejs ProfilingManager API (dostępny na urządzeniach z Androidem 15 lub nowszym) z platformami monitorowania rzeczywistych użytkowników (RUM) i ciągłego profilowania. Ta integracja zmienia przepływ pracy związany z debugowaniem, umożliwiając programistom wyjście poza objawy powierzchowne i wykrywanie przyczyn wąskiego gardła wydajności.

Dzięki wykorzystaniu tego interfejsu API na poziomie systemu Datadog przetwarza obecnie miliony profili produkcyjnych tygodniowo na całym świecie (według wewnętrznych danych Datadog z czerwca 2026 r.). Zapewnia to zespołom inżynieryjnym nowy poziom widoczności w rzeczywistą wydajność przy zachowaniu niskiego narzutu środowiska wykonawczego na potrzeby monitorowania wydajności na skalę produkcyjną.

Wpływ ProfilingManager

ProfilingManager to usługa systemowa wprowadzona w Androidzie 15, która umożliwia aplikacjom programowe zbieranie danych o wydajności, takich jak próbki stosu wywołań, ślady pól i zrzuty sterty pamięci, bezpośrednio ze środowisk produkcyjnych. Ta funkcja zmienia paradygmat inżynieryjny z reaktywnego ręcznego odtwarzania na proaktywną analizę w terenie.

AANDDM_DataDog_Quote_01.png

Na przykład zespół pracujący nad aplikacją komunikacyjną Google wykorzystał ślady z terenu, aby sprawdzić, dlaczego czas zimnego startu jest dłuższy na nowszych, wydajniejszych urządzeniach. Analizując ślady zebrane w terenie i porównując je na różnych typach urządzeń, inżynier odkrył ukryty problem z planowaniem: usługa zamiany tekstu na mowę działająca w tle była niepotrzebnie wstępnie uruchamiana podczas uruchamiania aplikacji. Ślady wykazały, że ten proces w tle zajmował najwydajniejszy duży rdzeń procesora urządzenia, zmuszając główny wątek aplikacji do uśpienia podczas wstępnego uruchamiania.

Rozwiązywanie problemu z widocznością na poziomie kodu na Androidzie

Przed wdrożeniem ProfilingManager usługa Datadog Real User Monitoring (RUM) koncentrowała się na ogólnym stanie aplikacji i telemetrii na poziomie sesji, aby ocenić ścieżkę użytkownika. Zespoły inżynieryjne mogły monitorować sygnały wydajności Androida, takie jak czas do pierwszego wyświetlenia, wskaźniki ANR, obciążenie procesora i zamrożone klatki. Te statystyki obejmowały szczegółowe interakcje, takie jak opóźnienie sieci, zdarzenia dotykowe i zawieszenia głównego wątku. Jednak chociaż te dane skutecznie wskazywały, które wąskie gardła wydajności pojawiają się w terenie, nie zapewniały jasnej ścieżki do zidentyfikowania głównej przyczyny tych awarii.

AANDDM_DataDog_Quote_02.png

Aby rozwiązać ten problem, firma Datadog potrzebowała silnika profilowania, który byłby w stanie rejestrować ślady Androida bezpośrednio z urządzeń produkcyjnych przy minimalnym wpływie na wydajność. Po ocenie alternatywnych podejść, takich jak napisanie własnego procesora śledzenia za pomocą interfejsów API do debugowania Androida, zespół wybrał ProfilingManager, ponieważ jest to najbardziej wydajne rozwiązanie spośród ocenianych opcji profilowania, które przenosi obciążenie związane z decyzjami o próbkowaniu na system operacyjny.

ProfilowanieManager obsługuje szeroki zakres metod zbierania danych, w tym ślady procesora, próbkowanie stosu wywołań i analizę pamięci za pomocą zrzutów sterty Javy i profili sterty natywnej. Umożliwia programistom profilowanie kompilacji produkcyjnych, przesyłanie plików śledzenia do pamięci zewnętrznej i sprawdzanie ich w interfejsie analizatora śladów Perfetto. Jako dostawca SaaS firma Datadog przesyła, wizualizuje i analizuje te profile zebrane za pomocą pakietu SDK, zapewniając ujednolicony widok stanu aplikacji. 

Dzięki scentralizowaniu telemetrii o wysokiej wierności w ujednoliconym interfejsie API do obserwacji ProfilingManager umożliwia Datadog i jej klientom proaktywne monitorowanie, badanie i usuwanie złożonych regresji wydajności Androida dzięki kluczowym zaletom technicznym:

  • Szczegółowa diagnostyka sesji:  ProfilingManager zwiększa możliwości debugowania, dostarczając bezpośrednie dane śledzenia na poziomie systemu operacyjnego. Pozwala to pokonać problemy z widocznością i dopasowaniem typowe dla niestandardowego rejestrowania z usługami systemowymi. Aby uzyskać więcej informacji, programiści mogą pobrać te ślady z Datadog i dokładniej je przeanalizować w narzędziach do wizualizacji, takich jak interfejs Perfetto.
  • Automatyczne wyzwalacze telemetrii:  wykorzystując natywne zdarzenia systemowe do inicjowania nagrywania śladów w kluczowych punktach optymalizacji, Datadog zmniejsza potrzebę tworzenia niestandardowej logiki zbierania danych. Początkowe wdrożenie koncentruje się na sygnale APP_FULLY_DRAWN, ale planujemy już rozszerzyć tę dostrzegalność o wyzwalacze ANR, OOMCOLD_START.
  • Proaktywne migawki śledzenia:  ProfilingManager, komunikując się bezpośrednio z usługą Perfetto na poziomie systemu (śledzoną), wykorzystuje proaktywny model nagrywania w tle, który został zaprojektowany do wykrywania nieprzewidywalnych problemów. Dzięki temu deweloperzy otrzymują dokładną wizualizację zdarzeń prowadzących do anomalii wydajności, co zapewnia poziom wglądu przekraczający możliwości ręcznego instrumentowania.
  • Wykrywanie wąskich gardeł na dużą skalę:  Datadog potrafi syntetyzować dane telemetryczne z całej globalnej bazy klientów Datadog, aby wykrywać regresje, które pojawiają się tylko w przypadku unikalnych konfiguracji sprzętowych i zmiennych środowisk sieciowych.
  • Stabilność zasobów wymuszana przez system:  interfejs API wykorzystuje zbieranie próbek śladów, aby zapewnić, że wpływ na wydajność i wygodę użytkowników pozostanie niezauważalny.
  • Kontrola danych na urządzeniu:  usługa ProfilingManager odfiltrowuje nieistotne informacje z innych procesów na urządzeniu, zanim profil zostanie dostarczony do aplikacji. Minimalizuje to rozmiary plików i zapewnia, że dostarczane są tylko dane istotne dla procesów aplikacji.

Przetwarzanie milionów profili tygodniowo w celu optymalizacji aplikacji w rzeczywistym świecie

Zintegrowanie interfejsu API profilowania na poziomie systemu z globalnym pakietem SDK do monitorowania wymagało rozwiązania problemów z infrastrukturą. ProfilingManager generuje bardzo szczegółowe ślady wydajności, więc zespół inżynierów Datadog musiał stworzyć potok, który byłby w stanie analizować te profile po stronie serwera na dużą skalę. Oprócz zbierania profili Datadog podkreśla również znaczenie równoważenia częstotliwości próbkowania z gromadzeniem wystarczającej ilości danych do generowania przydatnych statystyk dotyczących aplikacji. Datadog korzysta z wbudowanego w ProfilingManager ograniczenia liczby żądań jako kluczowego zabezpieczenia stabilności, które zapobiega nadmiernym żądaniom telemetrii obciążającym urządzenia użytkowników. 

Zespół od miesięcy profiluje własną aplikację natywną Datadog na Androida oraz aplikacje wielu pierwszych użytkowników, zbierając miliony profili, aby zapewnić szybkie i bezbłędne uruchamianie oraz udoskonalić algorytmy wykrywania wydajności. Obecnie integracja produkcyjna jest bezproblemowo skalowana na różnych urządzeniach z Androidem. 

Podsumowanie

Dzięki integracji interfejsu ProfilingManager API w Androidzie firma Datadog zlikwidowała lukę w widoczności między systemami backendu a aplikacjami klienckimi na urządzenia mobilne. Przetwarzając miliony profili tygodniowo przy znikomym obciążeniu urządzenia, Datadog zapewnia deweloperom na Androida wgląd w kod niezbędny do natychmiastowego diagnozowania złożonych błędów wydajności, co pomaga im tworzyć płynniej działające aplikacje i poprawiać sygnały wydajności aplikacji w Google Play. Aby wdrożyć interfejs ProfilingManager API bezpośrednio w ramach monitorowania wydajności, zapoznaj się z naszą dokumentacją.

W przyszłości Datadog zamierza sprawić, aby dane profilowania Androida były podstawowym źródłem informacji dla agentów kodowania, którzy będą mogli samodzielnie rozwiązywać problemy z wydajnością, zamykając pętlę informacji zwrotnych między wykrywaniem a usuwaniem problemów. Datadog pracuje nad tym, aby profilowanie Androida było powszechnie dostępne dla deweloperów.

Aby zacząć korzystać z funkcji monitorowania użytkowników w czasie rzeczywistym Datadog opartej na ProfilingManager, odwiedź stronę  Datadog Mobile Real User Monitoring.

Autor:

Czytaj dalej