atrace Системная трассировка Тип файла: команда usage: atrace [options] [categories...] options include: Комментарии Запись активности устройства в течение короткого периода времени называется системной трассировкой. Трассировка системы создает файл трассировки, который можно использовать для создания системного отчета. Этот отчет поможет вам определить, как лучше всего улучшить производительность вашего приложения или игры. Полное введение в трассировку и профилирование см. на странице Tracing документации Perfetto. Платформа Android предоставляет несколько различных вариантов захвата трассировок: Профилировщик процессора и памяти Android Studio Утилита трассировки системы Инструмент командной строки Perfetto (Android 10 и выше) Инструмент командной строки Systrace Профилировщик ЦП Android Studio проверяет использование ЦП вашего приложения и активность потоков в режиме реального времени, пока вы взаимодействуете с приложением. Вы также можете просмотреть подробности в записанных трассировках методов, трассировках функций и трассировках системы. Профилировщик памяти предоставляет обзор использования памяти в отношении событий касания, изменений действий и событий сборки мусора. Утилита трассировки системы — это инструмент Android, который сохраняет активность устройства в файле трассировки. На устройстве под управлением Android 10 (уровень API 29) или более поздней версии файлы трассировки сохраняются в формате Perfetto, как показано далее в этом документе. На устройстве с более ранней версией Android файлы трассировки сохраняются в формате Systrace. Perfetto — это общеплатформенный инструмент трассировки, представленный в Android 10. Это сложный проект трассировки с открытым исходным кодом для Android, Linux и Chrome. Он предлагает расширенный набор источников данных по сравнению с Systrace и позволяет записывать произвольно длинные трассировки в двоичный поток буфера протокола. Вы можете открыть эти трассировки в пользовательском интерфейсе Perfetto . Systrace — это устаревший инструмент командной строки, предоставляемый платформой, который записывает активность устройства в течение короткого периода времени в сжатый текстовый файл. Инструмент создает отчет, который объединяет данные из ядра Android, такие как планировщик ЦП, активность диска и потоки приложений. Systrace работает на всех версиях платформы, начиная с Android 4.3 (уровень API 18) и выше, но Perfetto рекомендуется для устройств под управлением Android 10 и выше. Снимок экрана с изображением трассировки Perfetto Рисунок 1. Пример представления трассировки Perfetto, который показывает около 20 секунд взаимодействия с приложением. Скриншот отчета Systrace Рис. 2. Пример HTML-отчета Systrace, показывающий 5 секунд взаимодействия с приложением. Оба отчета дают общую картину системных процессов Android-устройства за заданный период времени. В отчете также проверяется захваченная информация трассировки, чтобы выделить обнаруженные проблемы, такие как зависание пользовательского интерфейса или высокое энергопотребление. Perfetto и Systrace совместимы: Откройте файлы Perfetto и файлы Systrace в пользовательском интерфейсе Perfetto. Открывайте файлы Systrace с помощью устаревшего средства просмотра Systrace в пользовательском интерфейсе Perfetto (используйте ссылку «Открыть с помощью устаревшего пользовательского интерфейса »). Преобразуйте трассировку Perfetto в устаревший текстовый формат Systrace с помощью инструмента traceconv . Примечание. Systrace и Perfetto не собирают подробную информацию о выполнении кода в процессе вашего приложения. Для получения более подробной информации о том, какие методы выполняет ваше приложение и сколько ресурсов ЦП оно использует, используйте профилировщик ЦП в Android Studio. Руководства по трассировке системы https://developer.android.com/studio/profile/cpu-profiler Проверка активности ЦП с помощью CPU Profiler Показывает, как профилировать загрузку ЦП приложением и активность потоков в Android Студия. https://developer.android.com/topic/performance/tracing/on-device Системное приложение System Tracing Объясняет, как получить системную трассировку непосредственно на любом работающем устройстве Android 9 (уровень API 28) или выше. https://developer.android.com/topic/performance/tracing/command-line Справочник по командной строке Systrace Определяет различные параметры и флаги, которые вы можете передать в интерфейс командной строки для Systrace. https://developer.android.com/studio/command-line/perfettoЗапуск Perfetto с помощью ADB Описывает, как запустить инструмент командной строки perfetto для захвата трассировки. https://perfetto.dev/#/running.md" Запуск Perfetto Внешняя документация, описывающая, как собрать и запустить perfetto инструмент командной строки для захвата трассировки. https://perfetto.dev/#/running.md" Пользовательский интерфейс Perfetto Веб-средство просмотра трасс Perfetto открывает трассировки Perfetto и отображает полный отчет. Вы также можете открывать трассировки Systrace в этом средстве просмотра, используя устаревший вариант пользовательского интерфейса. https://developer.android.com/topic/performance/tracing/navigate-report Навигация по отчету Systrace Перечисляет элементы типичного отчета, представляет сочетания клавиш для навигации по отчету и описывает, как идентифицировать типы проблемы с производительностью. https://developer.android.com/topic/performance/tracing/custom-events Определение пользовательских событий Описывает, как можно применять настраиваемые метки к определенным разделам кода, что упрощает анализ первопричин в Systrace или Perfetto. ------------------------ https://perfetto.dev/docs/data-sources/atrace ATrace: Android system and app trace events На Android собственные и управляемые приложения могут вставлять в трассировку пользовательские срезы и счетчики точек трассировки. Это возможно благодаря следующему: Приложения Java/Kotlin (SDK): android.os.Trace. См. https://developer.android.com/reference/android/os/Trace. Собственные процессы (NDK): ATrace_beginSection() / ATrace_setCounter(), определенные в <trace.h>. См. https://developer.android.com/ndk/reference/group/tracing. Внутренние процессы Android: ATRACE_BEGIN()/ATRACE_INT() определены в libcutils/trace.h. Этот API доступен начиная с Android 4.3 (уровень API 18) и предшествует Perfetto. Все эти аннотации, которые внутренне маршрутизируются через внутренний API libcutils, поддерживаются и будут поддерживаться Perfetto. Существует два типа событий atrace: системные события и события приложений. Системные события: генерируются только внутренними компонентами Android с использованием libcutils. Эти события сгруппированы по категориям (также известным как теги), например. «am» (Диспетчер Активности), «pm» (Менеджер Пакетов). Полный список категорий см. на странице «Запись новой трассировки» пользовательского интерфейса Perfetto. Категории можно использовать для включения группы событий в несколько процессов, не беспокоясь о том, какой конкретный системный процесс их генерирует. События приложения: имеют ту же семантику, что и системные события. Однако, в отличие от системных событий, они не имеют возможности фильтрации тегов (все события приложений имеют один и тот же тег ATRACE_TAG_APP), но могут быть включены для каждого приложения отдельно. См. раздел TraceConfig ниже для получения инструкций о том, как включить как системные события, так и события приложений. Инструментальные накладные расходы Инструментарий ATrace стоит немало: 1–10 долларов США за событие. Это связано с тем, что каждое событие включает в себя строковое преобразование, вызов JNI, если он исходит из управляемой среды выполнения, и обращение в пространство пользователя <-> в пространство ядра для записи маркера в /sys/kernel/debug/tracing/trace_marker (что является самой дорогой частью). Наша команда ищет путь миграции для Android в свете недавно представленного Tracing SDK. На данный момент рекомендуется продолжать использовать существующий API ATrace на Android. интерфейс На уровне пользовательского интерфейса эти функции создают срезы и счетчики в рамках группы отслеживания процесса следующим образом: SQL На уровне SQL события ATrace доступны в стандартных таблицах срезов и счетчиков вместе с другими счетчиками и срезами, поступающими из других источников данных. |