Case Studies

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

4 minuty czytania

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

Aby złagodzić ten problem, firma Datadog nawiązała współpracę z Google i zintegrowała interfejs ProfilingManager API (dostępny na urządzeniach z Androidem 15 lub nowszym) z platformami Real User Monitoring (RUM) i Continuous Profiling. Ta integracja zmienia proces debugowania, umożliwiając deweloperom wyjście poza objawy powierzchowne i wykrywanie przyczyn wąskiego gardła wydajności.

Dzięki wykorzystaniu tego interfejsu API na poziomie systemu firma 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żynierów nowy poziom wglądu w wydajność w rzeczywistych warunkach, przy jednoczesnym utrzymaniu niskiego obciążenia środowiska wykonawczego w przypadku 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 skutecznoś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żynierii z reaktywnego ręcznego odtwarzania na proaktywną analizę w terenie.

AANDDM_DataDog_Quote_01.png

Na przykład aplikacja do komunikacji Google używała śladów pól, aby sprawdzić, dlaczego czasy uruchamiania na zimno były wolniejsze na nowszym, wydajniejszym sprzęcie. Dzięki analizie śladów zebranych w terenie i porównaniu śladów na różnych typach urządzeń inżynier odkrył ukryty problem z planowaniem: usługa zamiany tekstu na mowę w tle była niepotrzebnie wstępnie uruchamiana podczas uruchamiania aplikacji. Ślady ujawniły, że ten proces w tle monopolizował 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 Androida

Przed wdrożeniem ProfilingManager funkcja Real User Monitoring (RUM) firmy Datadog koncentrowała się na ogólnym stanie aplikacji i telemetrii na poziomie sesji, aby ocenić ścieżkę użytkownika. Zespoły inżynierów mogły monitorować sygnały wydajności Androida, takie jak czas do pierwszego wyświetlenia, współczynniki ANR, obciążenie procesora i zablokowane klatki. Te statystyki obejmowały szczegółowe interakcje, takie jak opóźnienie sieci, zdarzenia dotyku i zawieszenia głównego wątku. Chociaż te dane skutecznie wskazywały, które wąskie gardła wydajności pojawiają się w terenie, nie wskazywały one wyraźnie 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ń w środowisku produkcyjnym przy minimalnym wpływie na wydajność. Po ocenie alternatywnych rozwiązań, takich jak napisanie własnego procesora śladów przy użyciu interfejsów Android Debug API, zespół wybrał ProfilingManager, ponieważ jest to najbardziej wydajne rozwiązanie spośród ocenianych opcji profilowania, a decyzje dotyczące próbkowania są podejmowane przez system operacyjny.

ProfilingManager 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 Java i profili sterty natywnej. Umożliwia deweloperom profilowanie kompilacji produkcyjnych, przesyłanie plików śladów do pamięci zewnętrznej i przeglądanie 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 firmie Datadog i jej klientom proaktywne monitorowanie, badanie i usuwanie złożonych regresji wydajności Androida dzięki tym kluczowym zaletom technicznym:

  • Szczegółowa diagnostyka sesji: ProfilingManager zwiększa możliwości debugowania, dostarczając bezpośrednie dane śledzenia na poziomie systemu operacyjnego, co pozwala pokonać problemy z widocznością i dopasowaniem typowe dla niestandardowego logowania za pomocą usług systemowych. Aby uzyskać więcej informacji, deweloperzy mogą pobrać te ślady z Datadog i przeprowadzić dalszą analizę w narzędziach do wizualizacji, takich jak interfejs Perfetto.
  • Automatyczne wyzwalacze telemetrii: dzięki wykorzystaniu natywnych zdarzeń systemowych do inicjowania nagrywania śladów w kluczowych punktach optymalizacji firma Datadog zmniejsza potrzebę tworzenia niestandardowej logiki zbierania danych. Wstępne wdrażanie koncentruje się na sygnale APP_FULLY_DRAWN, ale planujemy już rozszerzenie tej dostrzegalności o wyzwalacze ANROOMCOLD_START.
  • Proaktywne migawki śladów: dzięki bezpośredniej współpracy z usługą Perfetto na poziomie systemu (traced) ProfilingManager wykorzystuje proaktywny model nagrywania w tle, który ma na celu rejestrowanie 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ęcznej instrumentacji.
  • Wykrywanie wąskich gardeł na dużą skalę: Datadog może syntetyzować dane telemetryczne z całej globalnej bazy klientów, aby wykrywać regresje, które pojawiają się tylko w unikalnych konfiguracjach sprzętowych i zmiennych środowiskach sieciowych.
  • Stabilność zasobów wymuszana przez system: interfejs API wykorzystuje próbkowanie do zbierania śladów, aby zapewnić, że wpływ na wydajność i wygodę użytkownika pozostanie niezauważalny.
  • Kontrola danych na urządzeniu:  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 rzeczywistych warunkach

datadog-profiling-blogpost-final.png
Przykład pomiaru czasu do pierwszego wyświetlenia w Datadog z próbkowaniem stosu obsługiwanym przez ProfilingManager

Integracja interfejsu API profilowania na poziomie systemu z globalnym pakietem SDK do monitorowania wymagała rozwiązania problemów z infrastrukturą. Ponieważ ProfilingManager generuje bardzo szczegółowe ślady wydajności, zespół inżynierów Datadog musiał zbudować potok, który byłby w stanie analizować te profile po stronie serwera na dużą skalę. Oprócz zbierania profili firma Datadog podkreśla również znaczenie równoważenia częstotliwości próbkowania z zbieraniem wystarczającej ilości danych, aby generować przydatne statystyki dotyczące aplikacji. Datadog korzysta z wbudowanego w ProfilingManager ograniczenia liczby żądań jako krytycznego zabezpieczenia stabilności, które zapobiega nadmiernemu obciążaniu urządzeń użytkowników przez żądania telemetrii. 

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

Podsumowanie

Dzięki integracji interfejsu ProfilingManager API Androida firma Datadog skutecznie zlikwidowała lukę w widoczności między systemami backendowymi a aplikacjami klienckimi na urządzeniach mobilnych. Przetwarzając miliony profili tygodniowo przy znikomym obciążeniu urządzenia, Datadog zapewnia deweloperom Androida statystyki na poziomie kodu niezbędne do natychmiastowego diagnozowania złożonych błędów wydajności, co pomaga deweloperom tworzyć płynniejsze aplikacje i poprawiać sygnały wydajności aplikacji w Sklepie Play. Aby wdrożyć interfejs ProfilingManager API bezpośrednio w ramach obserwacji wydajności, zapoznaj się z naszą dokumentacją.

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

Aby rozpocząć korzystanie z funkcji monitorowania rzeczywistych użytkowników Datadog obsługiwanej przez ProfilingManager, odwiedź Datadog Mobile Real User Monitoring.

Continue reading