идеальное

perfetto — это инструмент, позволяющий собирать информацию о производительности устройств Android через Android Debug Bridge (ADB) . Запустите инструмент perfetto с помощью команды adb shell perfetto ... perfetto использует различные источники для сбора трассировок производительности с вашего устройства, такие как:

  • ftrace для получения информации из ядра
  • atrace для аннотирования пользовательского пространства в сервисах и приложениях
  • heapprofd предоставляет информацию об использовании собственной памяти сервисами и приложениями.

На этой странице описано, как вызвать perfetto и настроить его для генерации желаемого результата. Для получения дополнительной информации обратитесь к документации perfetto .

Синтаксис

В этом разделе описывается, как использовать ADB для вызова perfetto в различных режимах и генерации трассировки.

выбор источника данных

perfetto включает в себя два режима, определяющих источники данных, используемые для записи трассировки:

  • Облегченный режим : позволяет выбрать только подмножество источников данных, а именно atrace и ftrace . Однако этот режим предлагает интерфейс, аналогичный systrace .
  • Обычный режим : получает конфигурацию в протокольном буфере и позволяет использовать больше возможностей perfetto , используя источники данных, отличные от atrace и ftrace .

Общие варианты

В таблице ниже перечислены доступные параметры при использовании perfetto в любом из режимов:

Таблица 1. Список доступных общих опций инструмента perfetto.

Вариант Описание
--background |
-d
perfetto немедленно выходит из интерфейса командной строки и продолжает запись трассировки в фоновом режиме.
--background-wait | -D Аналогично параметру --background , но ожидает (до 30 секунд) запуска всех источников данных перед завершением работы. Код завершения равен нулю, если получено успешное подтверждение, и ненулевому в противном случае (ошибка или тайм-аут).
--alert-id Идентификатор оповещения, вызвавшего эту трассировку.
--config-id Идентификатор конфигурации, запускающей процесс.
--config-uid UID приложения, зарегистрировавшего конфигурацию.
--subscription-id Идентификатор подписки, которая инициировала эту трассировку.
--out OUT_FILE |
-o OUT_FILE

Указывает желаемый путь к выходному файлу трассировки или - для stdout . perfetto записывает вывод в файл, описанный в предыдущих флагах. Формат вывода компилируется в соответствии с форматом, определенным в AOSP trace.proto .

Примечание: Необходимо указать полный путь к выходному файлу. Как правило, файлы следует записывать в папку /data/misc/perfetto-traces .

--upload По завершении трассировка передается в пакет, указанный в сообщении IncidentReportConfig в конфигурации трассировки протокола.
--no-guardrails Отключает защиту от чрезмерного использования ресурсов при включении флага --upload во время тестирования.
--reset-guardrails Сбрасывает постоянное состояние ограждений и выходов для тестирования.
--rsave-for-bugreport Если выполняется трассировка с bugreport_score > 0, трассировка сохраняется в файл. После завершения выводится путь к файлу.
--query Запрашивает состояние сервиса и выводит его в удобочитаемом виде.
--query-raw Аналогично параметру --query , но выводит необработанные байты файла tracing_service_state.proto.
--help | -h Выводит справочный текст для инструмента perfetto .

Светлый режим

Общий синтаксис использования perfetto в светлом режиме выглядит следующим образом:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

В таблице ниже перечислены доступные параметры при использовании perfetto в светлом режиме:

Таблица 2. Список доступных опций инструмента perfetto при использовании светлого режима.

Вариант Описание
--time TIME [s|m|h] |
-t TIME [s|m|h]
Указывает продолжительность трассировки в секундах, минутах или часах. Например, --time 1m задает продолжительность трассировки в 1 минуту. Продолжительность по умолчанию составляет 10 секунд.
--buffer SIZE [mb|gb] |
-b SIZE [mb|gb]
Указывает размер кольцевого буфера в мегабайтах (мб) или гигабайтах (гб). Параметр по умолчанию — --buffer 32mb .
--size SIZE [mb|gb] |
-s SIZE [mb|gb]
Указывает максимальный размер файла в мегабайтах (мб) или гигабайтах (гб). По умолчанию perfetto использует только кольцевой буфер в оперативной памяти.
--app | -a Название приложения Android (atrace)

За этими параметрами следует список спецификаторов событий:

Таблица 3. Список спецификаторов событий для светлого режима.

Событие Описание
ATRACE_CAT Указывает категории atrace , для которых вы хотите записать трассировку. Например, следующая команда отслеживает работу диспетчера окон с помощью atrace :
    adb shell perfetto --out FILE wm
    

Для записи других категорий см. этот список категорий atrace .

FTRACE_GROUP/FTRACE_NAME Указывает события ftrace , для которых вы хотите записать трассировку. Например, следующая команда отслеживает события sched/sched_switch :
      adb shell perfetto --out FILE sched/sched_switch
      

Обычный режим

Общий синтаксис использования perfetto в обычном режиме выглядит следующим образом:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

В таблице ниже перечислены доступные параметры при использовании perfetto в обычном режиме:

Таблица 4. Список доступных опций инструмента perfetto при использовании обычного режима.

Вариант Описание
--config CONFIG_FILE | -c CONFIG_FILE Указывает путь к файлу конфигурации. В обычном режиме некоторые конфигурации могут быть закодированы в буфере протокола конфигурации. Этот файл должен соответствовать схеме буфера протокола, определенной в файле AOSP trace_config.proto .

Выберите и настройте источники данных, используя член DataSourceConfig объекта TraceConfig , как определено в файле AOSP data_source_config.proto .

--txt Этот флаг указывает perfetto интерпретировать файл конфигурации как pbtxt . Он предназначен только для локального тестирования, и его не рекомендуется включать в производственной среде.

Поддерживаемые источники данных

В этом разделе описываются различные источники, которые perfetto использует для генерации трассировки.

ftrace

Источник данных ftrace позволяет perfetto получать события из ядра.

Включите этот источник, установив параметр ftrace_config в DataSourceConfig.

К числу событий, которые можно включить, относятся:

В зависимости от вашего устройства, версии ОС или ядра, может быть доступно больше событий. Для получения дополнительной информации обратитесь к протоколам конфигурации .

Статистика процесса

Источник данных статистики процессов позволяет получать данные о количестве опросов системы и отдельных процессов.

Включите этот источник, задав параметры process_stats_config и sys_stats_config в файле DataSourceConfig.

Данные, генерируемые perfetto , включают в себя:

В зависимости от вашего устройства, версии ОС и ядра, может быть доступно больше событий. Для получения дополнительной информации обратитесь к протоколам конфигурации для sys_stats и process_stats .

heapprofd

heapprofd позволяет анализировать причины использования собственной памяти.

Включите этот источник, установив параметр heapprofd_config в DataSourceConfig. Этот параметр генерирует ProfilePackets , включая Java-кадры стека вызовов.

Дополнительную информацию об использовании heapprofd можно найти на perfetto.dev .

Другие источники

В зависимости от вашего устройства, версии ОС и ядра, может быть доступно больше источников данных. Для получения дополнительной информации обратитесь к протоколам конфигурации источников данных .

Дополнительную информацию о perfetto можно найти на сайте perfetto.dev .