Debugging Android Performance at Scale: Lessons from Building Datadog's Mobile Profiler
summary
Datadog builds a production profiling pipeline that uses ProfilingManager API (API 35+ with triggers in 36 and extra triggers in 37) to collect Perfetto traces, CPU samples, system traces and heap profiles tied to real user sessions. Profiles arrive as protobufs, are parsed with Perfetto trace_processor into SQLite using Perfetto SQL, then deobfuscated with mapping files. Rate limits and per-device budgets reduce sampling yield; processing requires terabytes of storage, remote configuration to change sample rates, and aggregation to surface percentiles and root-cause methods.
AI-written summary · about
chapters (13)
- 0:00Android performance debugging
- 1:02Why we built Android profiler
- 3:32Android performance basics
- 9:34Profiling Manager API
- 16:19Processing profiling data
- 20:17Profiling in production
- 24:07Debugging performance example
- 26:15Profiling caveats and limits
- 27:40Integration and setup
- 31:20Aggregating profiling data
- 33:25Remote profiling config
- 34:48Resources and closing
- 35:10Q&A
related talks
35mIn Search of Performance: the Subtle Art of Android Profiling
34mClient Tracing At Scale
39mDeep-Diving Android Performance with Perfetto
44mPAPA: Performance of Android Production Applications
24mPerformance Tooling
41mDeep dive into Android Studio Profilers
38mA Busy Android App Developers' Guide to Perfetto
46mProfiling with Examples: Hunting the Bottleneck
