Case study

Datadog fornisce milioni di approfondimenti sulle prestazioni con ProfilingManager

Lettura di 4 minuti

Le regressioni delle prestazioni sono notoriamente difficili da riprodurre, il che le rende un enorme collo di bottiglia per gli sviluppatori di app mobile. Sebbene indicatori come i tassi 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 ed errori.

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 per rilevare il perché di un collo di bottiglia delle prestazioni.

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à sulle prestazioni reali, mantenendo al contempo un basso overhead di runtime per il monitoraggio delle prestazioni su scala di produzione.

Impatto di ProfilingManager

ProfilingManager è un servizio di sistema introdotto in Android 15 che consente alle app di raccogliere in modo programmatico 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 progettazione dalla riproduzione manuale reattiva all'analisi proattiva sul campo.

AANDDM_DataDog_Quote_01.png

Ad esempio, un'app di comunicazione Google ha utilizzato le tracce sul campo 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 preriscaldato inutilmente durante l'avvio dell'app. Le tracce hanno rivelato che questo processo in background monopolizzava il core della CPU più performante del dispositivo, costringendo il thread principale dell'app a sospendersi durante il preriscaldamento.

Risolvere la sfida della visibilità a livello di codice di Android

Prima dell'implementazione di ProfilingManager, il monitoraggio utenti reali (RUM) di Datadog si concentrava sulla salute delle applicazioni di alto livello e sulla telemetria a livello di sessione per valutare il percorso dell'utente. I team di ingegneria potrebbero monitorare gli indicatori di rendimento di Android, come il tempo al primo display, i tassi ANR, il carico della CPU e i frame bloccati. Questi approfondimenti si estendevano a interazioni granulari, come la latenza di rete, gli eventi tocco e i blocchi del thread principale. Tuttavia, sebbene questi dati evidenziassero efficacemente i colli di bottiglia delle prestazioni 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 tracce Android direttamente dai dispositivi in produzione con un impatto minimo sulle prestazioni. Dopo aver valutato approcci alternativi, come la scrittura di un proprio strumento di elaborazione delle 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 al sistema operativo il sovraccarico delle decisioni di campionamento.

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 su spazio di archiviazione esterno e rivederli nell'interfaccia utente di Perfetto Trace Analyzer. 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 regressioni complesse delle prestazioni di Android grazie a vantaggi tecnici chiave:

  • Diagnostica granulare delle sessioni: ProfilingManager migliora la capacità di debug fornendo dati di tracciamento 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 ulteriori indagini in strumenti di visualizzazione come l'interfaccia utente 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. Anche se l'implementazione iniziale si concentra sul segnale APP_FULLY_DRAWN, sono già previsti piani per espandere questa osservabilità in modo da includere i trigger ANR, OOM e COLD_START.
  • Snapshot di traccia proattivi: 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 delle prestazioni, offrendo un livello di approfondimento superiore a quello possibile tramite l'instrumentazione manuale.
  • Rilevamento dei colli di bottiglia su larga scala: Datadog è in grado di sintetizzare la telemetria dell'intera base di clienti globale di Datadog per scoprire regressioni che emergono solo in configurazioni hardware uniche e ambienti di rete variabili.
  • Stabilità delle risorse imposta dal sistema: l'API utilizza la raccolta di tracce di campionamento per garantire che l'impatto sulle prestazioni e sull'esperienza utente rimanga impercettibile.
  • Controlli dei dati sul dispositivo: ProfilingManager filtra le informazioni non pertinenti provenienti da altri processi sul dispositivo prima che il profilo venga inviato all'app. In questo modo, le dimensioni dei file vengono ridotte al minimo e vengono forniti solo i dati pertinenti ai processi dell'app.

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

datadog-profiling-blogpost-final.png
Un esempio di misurazione del tempo al primo display di Datadog con campionamento dello stack basato su ProfilingManager

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 delle prestazioni molto dettagliate, il team di ingegneri di Datadog ha dovuto creare una pipeline in grado di analizzare questi profili 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 approfondimenti significativi sulla tua applicazione. Datadog si basa sulla limitazione della frequenza integrata di ProfilingManager come salvaguardia fondamentale della stabilità, impedendo che un numero eccessivo di richieste di telemetria sovraccarichi i dispositivi degli utenti. 

Il team ha profilato l'app per Android nativa di Datadog e le applicazioni di diversi early adopter per mesi, raccogliendo milioni di profili per garantire un'esperienza di lancio rapida e senza errori e per perfezionare gli algoritmi di rilevamento delle prestazioni. Oggi, l'integrazione della produzione si adatta perfettamente a una vasta gamma 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 suoi clienti. Elaborando milioni di profili ogni settimana con un sovraccarico del dispositivo trascurabile, Datadog fornisce agli sviluppatori Android le informazioni a livello di codice necessarie per diagnosticare istantaneamente bug complessi relativi alle prestazioni, aiutandoli a creare applicazioni più fluide e a migliorare gli indicatori di prestazioni della loro app nel Play Store. Per adottare l'API ProfilingManager direttamente nel tuo framework di osservabilità delle prestazioni, 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 da risolvere autonomamente i colli di bottiglia delle prestazioni, 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 la pagina Monitoraggio degli utenti reali mobile di Datadog.

Continua a leggere