Case study

Datadog fornisce milioni di insight approfonditi sul rendimento con ProfilingManager

Lettura di 4 minuti

Le regressioni del rendimento sono notoriamente difficili da riprodurre, il che le rende un enorme collo di bottiglia per gli sviluppatori di app per dispositivi mobili. Sebbene gli indicatori come le percentuali di ANR indichino quali problemi si verificano in produzione, l'individuazione della riga di codice specifica che ha causato il problema di prestazioni ha storicamente richiesto una riproduzione manuale esaustiva o una sperimentazione speculativa per tentativi.

Datadog ha collaborato con Google per ridurre questo problema integrando l'API ProfilingManager (disponibile sui dispositivi Android 15 e versioni successive) nelle piattaforme Real User Monitoring (RUM) e Continuous Profiling. Questa integrazione trasforma il flusso di lavoro di debug, consentendo agli sviluppatori di andare oltre i sintomi superficiali e di rilevare il perché di un collo di bottiglia del rendimento.

Sfruttando questa API a livello di sistema, Datadog ora elabora milioni di profili di produzione a settimana in tutto il mondo, secondo i dati interni di Datadog di giugno 2026. Fornisce ai team di ingegneria un nuovo livello di visibilità sul rendimento nel mondo reale, mantenendo al contempo un basso overhead di runtime per il monitoraggio del rendimento su scala di produzione.

L'impatto di ProfilingManager

ProfilingManager è un servizio di sistema introdotto in Android 15 che consente alle app di raccogliere a livello di programmazione dati sul rendimento, come campioni di stack di chiamate, tracce di campi e dump dell'heap di memoria direttamente dagli ambienti di produzione. Questa funzionalità sposta il paradigma di ingegneria dalla riproduzione manuale reattiva all'analisi proattiva dei campi.

AANDDM_DataDog_Quote_01.png

Ad esempio, un'app di comunicazione di Google ha utilizzato le tracce di campi per capire perché i tempi di avvio a freddo erano più lenti su hardware più recente e potente. Analizzando le tracce raccolte sul campo e confrontandole tra diversi tipi di dispositivi, l'ingegnere ha scoperto un problema di pianificazione nascosto: un servizio di sintesi vocale in background veniva precaricato inutilmente durante l'avvio dell'app. Le tracce hanno rivelato che questo processo in background monopolizzava il core della CPU di grandi dimensioni con le prestazioni più elevate del dispositivo, costringendo il thread principale dell'app a rimanere inattivo durante il precaricamento.

Risolvere la sfida della visibilità a livello di codice Android

Prima dell'implementazione di ProfilingManager, Real User Monitoring (RUM) di Datadog si concentrava sull'integrità dell'applicazione di alto livello e sulla telemetria a livello di sessione per valutare il percorso dell'utente. I team di ingegneria potevano monitorare i segnali di rendimento di Android, come il tempo di visualizzazione iniziale, le percentuali di ANR, il carico della CPU e i frame bloccati. Questi insight si estendevano a interazioni granulari, come la latenza di rete, gli eventi touch e i blocchi del thread principale. Tuttavia, sebbene questi dati evidenziassero efficacemente i colli di bottiglia del rendimento che si verificavano sul campo, non fornivano un percorso chiaro per identificare la causa principale di questi errori.

AANDDM_DataDog_Quote_02.png

Per risolvere questo problema, Datadog aveva bisogno di un motore di profilazione in grado di acquisire le tracce di Android direttamente dai dispositivi in produzione con un impatto minimo sul rendimento. Dopo aver valutato approcci alternativi, come la scrittura di un proprio elaboratore di tracce utilizzando le API di debug di Android, il team ha selezionato ProfilingManager perché è la soluzione più performante tra le opzioni di profilazione valutate e delega l'overhead delle decisioni di campionamento al sistema operativo.

ProfilingManager supporta un'ampia gamma di metodi di raccolta, tra cui tracce della CPU, campionamento dello stack di chiamate, analisi della memoria tramite dump dell'heap Java e profili dell'heap nativo. Consente agli sviluppatori di profilare le build di produzione, caricare i file di traccia nello spazio di archiviazione esterno e rivederli nell'interfaccia utente dell'analizzatore di tracce Perfetto. In qualità di fornitore SaaS, Datadog carica, visualizza e analizza questi profili raccolti tramite il suo SDK, fornendo una visualizzazione unificata dell'integrità dell'applicazione. 

Centralizzando la telemetria ad alta fedeltà all'interno di un'API di osservabilità unificata, ProfilingManager consente a Datadog e ai suoi clienti di monitorare, analizzare e correggere in modo proattivo le complesse regressioni del rendimento di Android grazie a vantaggi tecnici chiave:

  • Diagnostica granulare delle sessioni: ProfilingManager migliora la capacità di debug fornendo dati di traccia diretti a livello di sistema operativo, superando le sfide di visibilità e allineamento tipiche della registrazione personalizzata con i servizi di sistema. Per approfondire, gli sviluppatori possono scaricare queste tracce da Datadog per analizzarle ulteriormente in strumenti di visualizzazione come l'interfaccia utente di Perfetto.
  • Trigger di telemetria automatizzati: sfruttando gli eventi di sistema nativi per avviare le registrazioni delle tracce nei punti di ottimizzazione chiave, Datadog riduce la necessità di creare una logica di raccolta personalizzata. Sebbene il lancio iniziale si concentri sul segnale APP_FULLY_DRAWN, sono già in programma di espandere questa osservabilità per includere i trigger ANROOMCOLD_START.
  • Snapshot di tracce proattive: interfacciandosi direttamente con il servizio Perfetto a livello di sistema (traced), ProfilingManager utilizza un modello di registrazione in background proattivo progettato per acquisire problemi imprevedibili. In questo modo, gli sviluppatori ricevono una visualizzazione precisa degli eventi che hanno portato a un'anomalia del rendimento, offrendo un livello di insight superiore a quello possibile tramite l'instrumentazione manuale.
  • Rilevamento dei colli di bottiglia su larga scala: Datadog è in grado di sintetizzare la telemetria dalla base clienti globale di Datadog per scoprire le regressioni che emergono solo in configurazioni hardware uniche e in ambienti di rete variabili.
  • Stabilità delle risorse applicata dal sistema: l'API sfrutta la raccolta di tracce di campionamento per garantire che gli impatti sul rendimento e sull'esperienza utente rimangano impercettibili.
  • Controlli dei dati sul dispositivo: ProfilingManager filtra le informazioni irrilevanti provenienti da altri processi sul dispositivo prima che il profilo venga fornito all'app. In questo modo si riducono al minimo le dimensioni dei file e si garantisce che vengano forniti solo i dati pertinenti ai processi dell'app.

Elaborazione di milioni di profili settimanali per ottimizzare le app del mondo reale

L'integrazione di un'API di profilazione a livello di sistema in un SDK di monitoraggio globale ha richiesto la risoluzione di problemi di infrastruttura. Poiché ProfilingManager genera tracce di rendimento molto dettagliate, il team di ingegneria di Datadog ha dovuto creare una pipeline in grado di analizzare ed elaborare questi profili sul lato server su larga scala. Oltre alla raccolta dei profili, Datadog sottolinea anche l'importanza di bilanciare la frequenza di campionamento con la raccolta di dati sufficienti per generare insight significativi sulla tua applicazione. Datadog si affida alla limitazione della frequenza integrata di ProfilingManager come salvaguardia critica della stabilità, impedendo che le richieste di telemetria eccessive sovraccarichino i dispositivi degli utenti. 

Da mesi il team profila la propria app per Android nativa di Datadog e le applicazioni di alcuni early adopter, raccogliendo milioni di profili per garantire un'esperienza di lancio rapida e senza errori e per perfezionare i propri algoritmi di rilevamento del rendimento. Oggi, l'integrazione di produzione si adatta perfettamente a una varietà di dispositivi Android. 

Conclusione

Integrando l'API ProfilingManager di Android, Datadog ha colmato con successo il divario di visibilità tra i sistemi di backend e le applicazioni client mobile per i propri clienti. Elaborando milioni di profili a settimana con un overhead del dispositivo trascurabile, Datadog fornisce agli sviluppatori Android gli insight a livello di codice necessari per diagnosticare istantaneamente i bug di rendimento complessi, aiutandoli a creare applicazioni più fluide e a migliorare i segnali di rendimento della loro app nel Play Store. Per adottare l'API ProfilingManager direttamente nel tuo framework di osservabilità del rendimento, consulta la nostra documentazione.

In futuro, Datadog mira a rendere i dati di profilazione di Android un input di prima classe per gli agenti di codifica, in modo che possano risolvere autonomamente i colli di bottiglia del rendimento, chiudendo il ciclo di feedback tra rilevamento e correzione. Datadog sta lavorando per rendere la profilazione di Android ampiamente accessibile agli sviluppatori.

Per iniziare a utilizzare la funzionalità di monitoraggio degli utenti reali di Datadog basata su ProfilingManager, visita Datadog Mobile Real User Monitoring.

Scritto da:

Continua a leggere