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 .
