perfetto — это инструмент, позволяющий собирать информацию о производительности устройств Android через Android Debug Bridge (ADB) . Запустите инструмент perfetto с помощью команды adb shell perfetto ... perfetto использует различные источники для сбора трассировок производительности с вашего устройства, такие как:
-
ftraceдля получения информации из ядра -
atraceдля аннотирования пользовательского пространства в сервисах и приложениях -
heapprofdпредоставляет информацию об использовании собственной памяти сервисами и приложениями.
На этой странице описано, как вызвать perfetto и настроить его для генерации желаемого результата. Для получения дополнительной информации обратитесь к документации perfetto .
навыки Android
Просмотреть на GitHub Перфетто-анализ следов
perfetto .android skills add [perfetto-trace-analyzer|perfetto-sql]
Синтаксис
В этом разделе описывается, как использовать 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 .