Datadog получает миллионы подробных статистических данных о производительности с помощью ProfilingManager
Время на чтение: 4 минуты
Регрессии производительности очень сложно воспроизвести, поэтому они становятся серьезным препятствием для разработчиков мобильных приложений. Такие сигналы, как доля ошибок ANR, указывают на то, какие проблемы возникают в рабочей среде. Однако, чтобы найти конкретную строку кода, которая привела к проблеме производительности, раньше требовалось вручную воспроизвести ошибку или провести эксперименты методом проб и ошибок.
Datadog совместно с Google решила эту проблему, интегрировав ProfilingManager API (доступен на устройствах с Android 15 и более поздними версиями) в свои платформы Real User Monitoring (RUM) и Continuous Profiling. Эта интеграция меняет процесс отладки, позволяя разработчикам не только выявлять поверхностные симптомы, но и определять причину снижения производительности.
Используя этот API системного уровня, Datadog теперь обрабатывает миллионы профилей каждую неделю по всему миру (согласно внутренним данным Datadog за июнь 2026 года). Он обеспечивает командам разработчиков новый уровень видимости реальной производительности, сохраняя при этом низкие накладные расходы на выполнение для мониторинга производительности в производственном масштабе.
Влияние ProfilingManager
ProfilingManager – это системный сервис, представленный в Android 15. Он позволяет приложениям программно собирать данные об эффективности, например образцы стека вызовов, трассировки полей и дампы кучи памяти, непосредственно из рабочих сред. Эта возможность меняет парадигму разработки с реактивного ручного воспроизведения на упреждающий полевой анализ.
Например, разработчики одного из приложений Google для общения использовали трассировку на местах, чтобы выяснить, почему холодный запуск приложения на новом, более мощном оборудовании происходит медленнее. Изучив трассировки, собранные в полевых условиях, и сравнив их на разных типах устройств, инженер обнаружил скрытую проблему с планированием: фоновая служба преобразования текста в речь без необходимости предварительно прогревалась во время запуска приложения. Трассировка показала, что фоновый процесс монополизировал самое производительное ядро ЦП, из-за чего основной поток приложения переходил в спящий режим во время предварительного прогрева.
Решение проблемы с видимостью на уровне кода Android
До внедрения ProfilingManager мониторинг реальных пользователей (RUM) в Datadog был сосредоточен на общем состоянии приложения и телеметрии на уровне сеанса для оценки пути пользователя. Инженеры могли отслеживать сигналы производительности Android, такие как время до первоначального отображения, доля ошибок ANR, загрузка ЦП и зависшие кадры. Эти данные распространяются на детализированные взаимодействия, такие как задержка сети, события касания и зависания основного потока. Однако, хотя эти данные эффективно выявляли узкие места в производительности, возникающие на местах, они не давали четкого пути к определению основной причины этих сбоев.
Чтобы решить эту проблему, Datadog требовался механизм профилирования, способный собирать трассировки Android непосредственно с устройств в рабочей среде с минимальным влиянием на производительность. Рассмотрев альтернативные подходы, например написание собственного процессора трассировки с помощью Android Debug API, команда выбрала ProfilingManager, поскольку это наиболее эффективное решение из всех оцененных вариантов профилирования, которое перекладывает на ОС нагрузку, связанную с принятием решений о выборке.
ProfilngManager поддерживает широкий спектр методов сбора данных, включая трассировку ЦП, выборку стека вызовов, анализ памяти с помощью дампов кучи Java и профилей нативной кучи. Разработчики могут профилировать рабочие сборки, загружать файлы трассировки во внешнее хранилище и просматривать их в интерфейсе Perfetto. Как поставщик SaaS, Datadog загружает, визуализирует и анализирует эти профили, собранные с помощью SDK, предоставляя единое представление о состоянии приложения.
Централизованный сбор высокоточных телеметрических данных в едином API для наблюдаемости позволяет Datadog и клиентам компании упреждающе отслеживать, исследовать и устранять сложные регрессии производительности Android благодаря следующим ключевым техническим преимуществам:
- Подробная диагностика сеансов. ProfilingManager упрощает отладку, предоставляя данные трассировки непосредственно на уровне ОС. Это позволяет решить проблемы с видимостью и согласованностью, которые часто возникают при использовании пользовательских журналов с системными сервисами. Чтобы получить более подробную информацию, разработчики могут скачать эти трассировки из Datadog и изучить их в инструментах визуализации, таких как Perfetto UI.
- Автоматические триггеры телеметрии. Datadog использует встроенные системные события, чтобы запускать запись трассировки в ключевых точках оптимизации. Это позволяет реже создавать собственную логику сбора данных. На начальном этапе мы сосредоточимся на сигнале APP_FULLY_DRAWN, но в дальнейшем планируем расширить эту наблюдаемость, включив триггеры ANR, OOM и COLD_START.
- Упреждающие снимки трассировки. ProfilingManager напрямую взаимодействует с сервисом Perfetto на уровне системы (трассировка) и использует упреждающую модель фоновой записи, предназначенную для выявления непредсказуемых проблем. Это позволяет разработчикам получить точную визуализацию событий, которые привели к отклонению в производительности, и дает более глубокое понимание, чем при ручной настройке.
- Масштабное обнаружение узких мест. Datadog может синтезировать телеметрию по всей глобальной клиентской базе Datadog, чтобы выявлять регрессии, которые возникают только при уникальных конфигурациях оборудования и переменных сетевых средах.
- Стабильность ресурсов, обеспечиваемая системой. API использует сбор трассировок выборки, чтобы влияние на производительность и удобство для пользователей оставалось незаметным.
- Управление данными на устройстве. ProfilingManager отфильтровывает нерелевантную информацию из других процессов на устройстве, прежде чем профиль будет передан приложению. Это позволяет минимизировать размер файлов и гарантирует, что будут предоставлены только данные, относящиеся к процессам приложения.
Обработка миллионов профилей в неделю для оптимизации реальных приложений
Интеграция API профилирования на уровне системы в глобальный SDK для мониторинга потребовала решения инфраструктурных проблем. Поскольку ProfilingManager генерирует очень подробные трассировки производительности, команде инженеров Datadog пришлось создать конвейер, способный анализировать эти профили на стороне сервера в большом масштабе. Помимо сбора профилей, Datadog также подчеркивает важность баланса между частотой выборки и сбором достаточного количества данных для получения значимой информации о вашем приложении. Datadog использует встроенное ограничение частоты запросов ProfilingManager в качестве критически важной меры безопасности, которая предотвращает перегрузку устройств пользователей из-за чрезмерного количества запросов телеметрии.
Команда несколько месяцев профилировала собственное нативное приложение Datadog для Android и ряд приложений участников программы раннего доступа, собрав миллионы профилей, чтобы обеспечить быстрый и безошибочный запуск и усовершенствовать алгоритмы обнаружения проблем с производительностью. Сегодня интеграция производства легко масштабируется на различных устройствах Android.
Заключение
Интегрировав ProfilingManager API для Android, компания Datadog успешно устранила разрыв в видимости между внутренними системами и мобильными клиентскими приложениями для своих клиентов. Datadog еженедельно обрабатывает миллионы профилей, практически не нагружая устройства. Это позволяет разработчикам Android получать информацию на уровне кода, которая необходима для мгновенного выявления сложных ошибок производительности. В результате разработчики могут создавать более стабильные приложения и улучшать их показатели производительности в Google Play. Чтобы внедрить ProfilingManager API непосредственно в вашу систему наблюдения за производительностью, ознакомьтесь с документацией.
В будущем Datadog планирует сделать данные профилирования Android первоклассными входными данными для агентов кодирования, чтобы автономно устранять узкие места в производительности, замыкая цикл обратной связи между обнаружением и исправлением. Datadog работает над тем, чтобы сделать профилирование Android широко доступным для разработчиков.
Чтобы начать использовать функцию мониторинга реальных пользователей Datadog на основе ProfilingManager, перейдите на страницу Datadog Mobile Real User Monitoring.
-
Истории успехаKarrot – это гиперлокальное приложение для торговли между пользователями, в котором можно покупать, продавать и обменивать товары с другими подтвержденными пользователями. С момента запуска в Южной Корее в 2015 году платформа вышла на глобальные рынки и собрала более 43 миллионов зарегистрированных пользователей.
Thomas Ezan, Tracy Agyemang • Время на чтение: 2 минуты -
Истории успехаGrab – ведущее суперприложение в Юго-Восточной Азии, которое предлагает услуги доставки, мобильности и финансовые услуги миллионам пользователей в восьми странах.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Время на чтение: 5 минут -
Истории успехаКоманда создала базу кода для ИИ-интерфейса, которая на 50% меньше исходной реализации. При этом время выполнения ИИ-агента сократилось на 35 %, количество обменов между инженером и агентом – на 32 %, а стоимость токенов – на 33 %.
Pavlo Stavytskyi, Rebecca Franks • Время на чтение: 11 минут
Получайте еженедельную рассылку с последними новостями о разработке для Android.