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 | | perfetto немедленно выходит из интерфейса командной строки и продолжает запись трассировки в фоновом режиме. |
--background-wait | -D | Аналогично --background , но перед выходом ожидает (до 30 секунд) запуска всех источников данных. Код выхода равен нулю, если получено успешное подтверждение, и ненулевому в противном случае (ошибка или тайм-аут). |
--alert-id | Идентификатор оповещения, вызвавшего эту трассировку. |
--config-id | Идентификатор запускающей конфигурации. |
--config-uid | UID приложения, в котором зарегистрирована конфигурация. |
--subscription-id | Идентификатор подписки, вызвавшей эту трассировку. |
--out OUT_FILE | | Указывает желаемый путь к выходному файлу трассировки или Примечание. Необходимо указать полный путь к выходному файлу. Обычно файлы следует записывать в папку |
--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] | | Указывает продолжительность трассировки в секундах, минутах или часах. Например, --time 1m задает продолжительность трассировки 1 минуту. Продолжительность по умолчанию составляет 10 секунд. |
--buffer SIZE [mb|gb] | | Указывает размер кольцевого буфера в мегабайтах (МБ) или гигабайтах (ГБ). Параметр по умолчанию — --buffer 32mb . |
--size SIZE [mb|gb] | | Указывает максимальный размер файла в мегабайтах (МБ) или гигабайтах (ГБ). По умолчанию perfetto использует только кольцевой буфер в памяти. |
--app | -a | Название приложения Android (atrace) |
За этими параметрами следует список спецификаторов событий:
Таблица 3. Список спецификаторов событий для облегченного режима.
Событие | Описание |
---|---|
ATRACE_CAT | Указывает категории atrace , для которых вы хотите записать трассировку. Например, следующая команда отслеживает Диспетчер окон с помощью atrace : adb shell perfetto --out FILE wm Чтобы записать другие категории, см. этот список категорий |
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 . Выберите и настройте источники данных с помощью элемента |
--txt | Указывает perfetto проанализировать файл конфигурации как pbtxt . Этот флаг предназначен только для локального тестирования, и не рекомендуется включать его в рабочей среде. |
Поддерживаемые источники данных
В этом разделе описаны различные источники, которые perfetto
использует для создания трассировки.
ftrace
Источник данных ftrace
позволяет perfetto
получать события из ядра.
Включите этот источник, установив ftrace_config
в файле DataSourceConfig.
События, которые можно включить, включают в себя:
-
sched/sched_switch
-
sched/sched_wakeup
-
sched/sched_wakeup_new
-
sched/sched_process_exec
-
sched/sched_process_exit
-
sched/sched_process_fork
-
sched/sched_process_free
-
sched/sched_process_hang
-
sched/sched_process_wait
-
События файловой системы:
В зависимости от вашего устройства, версии ОС или ядра могут быть доступны дополнительные события. Для получения дополнительной информации обратитесь к протоколу конфигурации .
Статистика процесса
Источник данных статистики процессов позволяет получать опросные счетчики о системе и отдельных процессах.
Включите этот источник, process_stats_config
и sys_stats_config
в файле DataSourceConfig.
Данные, которые генерирует perfetto
, включают в себя:
-
/proc/meminfo
-
/proc/vmstat
-
/proc/stat
-
-
/proc/\<pid\>/status
-
/proc/\<pid\>/oom_score_adj
-
В зависимости от вашего устройства, версии ОС и ядра могут быть доступны дополнительные события. Чтобы узнать больше, обратитесь к прототипам конфигурации для sys_stats
process_stats
.
heapprofd
heapprofd
позволяет выявить причины использования встроенной памяти.
Включите этот источник, установив heapprofd_config
в файле DataSourceConfig. Этот параметр создает ProfilePackets
, включая кадры Java стека вызовов.
Дополнительную информацию о том, как использовать heapprofd
можно найти на perfetto.dev
.
Другие источники
В зависимости от вашего устройства, версии ОС и ядра могут быть доступны дополнительные источники данных. Чтобы узнать больше, обратитесь к прототипам конфигурации источника данных .
Дополнительную информацию о perfetto
можно найти на сайте perfetto.dev .