идеальное

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 .