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 .