Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

perfetto
Cобирает информацию о производительности устройства через ADB

Тип файла: команда
  Eng  

usage: perfetto

  • --background -d : Немедленно выходит и продолжает трассировку в фоне

  • --config -c : /path/to/trace/config/file или - для стандартного ввода

  • --out -o : /path/to/out/trace/file или - для stdout

  • --upload : Загрузить трассировку поля (только для Android)

  • --dropbox ТЕГ: УСТАРЕЛО: Используйте --upload вместо
    TAG всегда должен быть установлен на «perfetto»

  • --no-guardrails : Игнорировать защитные барьеры, срабатывающие
    при использовании --upload (для тестирования)

  • --txt : Разобрать конфиг как pbtxt.
    Не для производственного использования. Не стабильный API

  • --reset-guardrails : Сбрасывает состояние ограждений и выходов
    (для тестирования)

  • --query : Запрашивает состояние службы и распечатывает
    его как человекочитаемый текст.

  • --query-raw : То же, что и --query, но печатает необработанные байты
    в протокодированном виде из tracing_service_state.proto

  • --save-for-bugreport : если запущена трассировка с bugreport_score > 0,
    она сохраняет его в файл. Выводит путь, когда сделано

  • --help легкие флаги конфигурации: (только если НЕ используется -c/--config)

  • --time -t : продолжительность трассировки N [с, м, ч] (по умолчанию: 10 с)

  • --buffer -b : размер кольцевого буфера N [МБ, ГБ] (по умолчанию: 32 МБ)

  • --size -s : максимальный размер файла N [МБ, ГБ]
    (по умолчанию: только кольцевой буфер в памяти)

  • --app -a : имя приложения Android (atrace)
    ATRACE_CAT : запись ATRACE_CAT (например, wm)
    FTRACE_GROUP/FTRACE_NAME: запись события ftrace
    например, sched/sched_switch)

    Флаги, относящиеся к statsd:

  • --alert-id : идентификатор оповещения, вызвавшего эту трассировку

  • --config-id : ID запускающей конфигурации

  • --config-uid : UID приложения, в котором зарегистрирована конфигурация

  • --subscription-id : идентификатор подписки, вызвавшей эту трассировку

    Режим отсоединения
    Прочитайте https://perfetto.dev/docs/concepts/detached-mode

  • --detach=key : отсоединиться от сеанса трассировки с заданным ключом

  • --attach=key [--stop]: повторно подключиться к сеансу
    при желании остановить трассировку после повторного подключения

  • --is_detached=key : Проверить, можно ли повторно подключить сеанс
    (0:Да, 2:Нет, 1:Ошибка)

       

    Комментарии
    perfetto — это инструмент, который позволяет собирать информацию о производительности с устройств Android через Android Debug Bridge (ADB). Вызовите инструмент perfetto с помощью команды adb shell perfetto....
    perfetto использует различные источники для сбора данных о производительности вашего устройства, например:
    ftrace - для получения информации от ядра
    atrace - для аннотаций пользовательского пространства в сервисах и приложениях
    heapprofd - для информации об использовании встроенной памяти сервисов и приложений

    Как использовать ADB для вызова perfetto различных режимов и создания трассировки.

    ВЫБОР ИСТОЧНИКА ДАННЫХ

    perfetto включает следующие два режима, которые определяют источники данных,
    которые он использует для записи вашей трассировки:

    ОБЛЕГЧЕННЫЙ режим : можно выбрать только подмножество источников данных, в частности atrace и ftrace.
    Однако этот режим предлагает интерфейс, аналогичный systrace.

    НОРМАЛЬНЫЙ режим : получает свою конфигурацию в буфере протокола и позволяет использовать
    perfetto больше функциональных возможностей , используя источники данных,
    отличные от atrace и ftrace.

    Список доступных общих параметров инструмента perfetto (Вариант - Описание):

    --background | d perfetto немедленно выходит из интерфейса командной строки
    и продолжает запись вашей трассировки в фоновом режиме.

    --background-wait | -D Аналогично --background, но ожидает (до 30 с) запуска всех
    источников данных перед выходом. Код выхода равен нулю, если получено успешное подтверждение,
    и не равен нулю в противном случае (ошибка или тайм-аут).

    --alert-id Идентификатор предупреждения, вызвавшего эту трассировку

    --config-id ID запускающей конфигурации

    --config-uid UID приложения, зарегистрировавшего конфигурацию

    --subscription-id Идентификатор подписки, вызвавшей эту трассировку

    --out OUT_FILE | -o OUT_FILE Задает желаемый путь к выходному файлу трассировки или -для stdout
    perfetto записывает вывод в файл, описанный в предыдущих флагах.
    Выходной формат компилируется с форматом, определенным в AOSPtrace.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 опций инструмента при использовании облегченного режима:

    --time TIME[s|m|h] | -t TIME[s|m|h] Задает продолжительность трассировки в секундах, минутах или часах.
    Например, --time 1mзадает продолжительность трассировки 1 минуту.
    Продолжительность по умолчанию составляет 10 секунд

    --buffer SIZE[mb|gb] | -b SIZE[mb|gb] Указывает размер кольцевого буфера в мегабайтах (Mb)
    или гигабайтах (gb). Параметр по умолчанию --buffer 32mb

    --size SIZE[mb|gb] | -s SIZE[mb|gb] Указывает максимальный размер файла в мегабайтах (МБ)
    или гигабайтах (ГБ). По умолчанию perfetto использует только кольцевой буфер в памяти

    --app | -a Название приложения Android (atrace)

    За этими параметрами следует список спецификаторов событий (Событие - Описание):

    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 опций инструмента в обычном режиме (Вариант - Описание):

    --config CONFIG_FILE | -c CONFIG_FILE Указывает путь к файлу конфигурации.
    В обычном режиме некоторые конфигурации могут быть закодированы в буфере протокола конфигурации.
    Этот файл должен соответствовать схеме буфера протокола, определенной в AOSPtrace_config.proto .

    Выберите и настройте источники данных с помощью элемента DataSourceConfig TraceConfig,
    как определено в AOSPdata_source_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

    События файловой системы:
    ext4
    f2fs
    block

    События ATRACE
    В зависимости от вашего устройства, версии ОС или ядра могут быть доступны дополнительные события.
    Для получения дополнительной информации обратитесь к конфигурации protos.

    СТАТИСТИКА ПРОЦЕССА

    Источник данных статистики процессов позволяет получать счетчики опросов о системе и отдельных процессах.
    Включите этот источник, установив process_stats_config и sys_stats_config в файле DataSourceConfig.
    Генерируемые данные perfetto включают в себя:

    Общесистемные (System-wide):
    /proc/meminfo
    /proc/vmstat
    /proc/stat

    Процессы (Per process):
    /proc/\<pid\>/status
    /proc/\<pid\>/oom_score_adj

    В зависимости от вашего устройства, версии ОС и ядра может быть доступно больше событий.
    Чтобы узнать больше, обратитесь к прототипам конфигурации для sys_stats и process_stats.

    heapprofd

    heapprofd позволяет вам примерить причины использования встроенной памяти.

    Включите этот источник, установив heapprofd_config в DataSourceConfig.
    Этот параметр создает ProfilePackets, включая кадры Java стека вызовов.

    Дополнительную информацию о том, как использовать, heapprofd можно найти на perfetto.dev.



    https://perfetto.dev/docs/quickstart/android-tracing

    Perfetto позволяет собирать общесистемные данные о производительности устройств Android из различных источников данных (планировщик ядра через ftrace, инструменты пользовательского пространства через atrace и все другие источники данных, перечисленные на этом сайте).

    Запуск служб отслеживания
    Perfetto основан на сервисах платформы , которые доступны начиная с Android 9 (P), но включены по умолчанию только начиная с Android 11 (R). В Android 9 (P) и 10 (Q) перед началом работы необходимо сделать следующее, чтобы убедиться, что службы трассировки включены:

    # Needed only on Android 9 (P) and 10 (Q) on non-Pixel phones.
    adb shell setprop persist.traced.enable 1
    Если вы используете версию Android старше P, вы все равно можете записать трассировку с помощью Perfetto, используя скрипт record_android_trace. См. инструкции ниже в разделе «Запись трассировки через cmdline» .

    Запись следа
    Инструменты командной строки (примеры использования приведены ниже на этой странице):

    Использование tools/record_android_traceвспомогательного скрипта.
    Используя непосредственно /system/bin/perfettoкоманду на устройстве [ ссылка ].
    Инструменты пользовательского интерфейса:

    Через страницу записи в пользовательском интерфейсе Perfetto .
    Использование приложения для отслеживания системы на устройстве

    Запись трассировки через cmdline
    Предварительные условия

    Для рабочего процесса на основе cmdline вам понадобится, adbчтобы исполняемый файл (Android Debug Bridge) находился в вашем PATH. Бинарные файлы ADB для Linux, Mac или Windows можно загрузить по адресу https://developer.android.com/studio/releases/platform-tools .

    Использование вспомогательного скрипта

    Мы предлагаем использовать tools/record_android_traceскрипт для записи трассировок из командной строки. Это эквивалент запуска adb shell perfetto, но он помогает правильно определить пути, автоматически извлечь трассировку после ее завершения и открыть ее в браузере. Кроме того, в более старых версиях Android он заботится о загрузке неопубликованного traceboxдвоичного файла, чтобы компенсировать отсутствие системных служб отслеживания.

    Использование команды /system/bin/perfetto на устройстве

    Или, если вы хотите напрямую использовать двоичный файл на устройстве, сделайте следующее:

    adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s \
    sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
    Предостережения при использовании непосредственно adb shell perfettoрабочего процесса:

    Ctrl+C, который обычно вызывает плавное завершение трассировки, не распространяется ADB при использовании, adb shell perfettoа только при использовании интерактивного сеанса на основе PTY через adb shell.
    На нерутированных устройствах до Android 12 конфигурацию можно передать только как cat config | adb shell perfetto -c -(-: stdin) из-за слишком строгих правил SELinux. С Android 12 /data/misc/perfetto-configsможно использовать для хранения конфигов.
    На устройствах до Android 10 adb не может напрямую извлекать файлы /data/misc/perfetto-traces. Используйте adb shell cat /data/misc/perfetto-traces/trace > traceдля обхода.
    При захвате более длинных трассировок, например, в контексте тестов или непрерывной интеграции, используйте PID=$(perfetto --background)и затем kill $PIDдля остановки.

    Полная конфигурация трассировки

    Краткий синтаксис позволяет включить только часть источников данных; для полного контроля над конфигурацией трассировки передайте полную конфигурацию трассировки на входе.

    См. страницу конфигурации Trace и примеры на каждой странице документации источника данных для получения подробных инструкций о том, как настроить все различные регуляторы Perfetto.

    Если вы работаете на хосте Mac или Linux или используете терминал на базе bash в Windows, вы можете использовать следующее:

    ВНИМАНИЕ: приведенная ниже команда не работает на Android P, поскольку эта --txtопция была введена в Q. Вместо этого следует использовать двоичный формат protobuf; Подробности об этом можно найти на странице конфигурации Trace .

    cat<<EOF>config.pbtx
    duration_ms: 10000

    buffers: {
    size_kb: 8960
    fill_policy: DISCARD
    }
    buffers: {
    size_kb: 1280
    fill_policy: DISCARD
    }
    data_sources: {
    config {
    name: "linux.ftrace"
    ftrace_config {
    ftrace_events: "sched/sched_switch"
    ftrace_events: "power/suspend_resume"
    ftrace_events: "sched/sched_process_exit"
    ftrace_events: "sched/sched_process_free"
    ftrace_events: "task/task_newtask"
    ftrace_events: "task/task_rename"
    ftrace_events: "ftrace/print"
    atrace_categories: "gfx"
    atrace_categories: "view"
    atrace_categories: "webview"
    atrace_categories: "camera"
    atrace_categories: "dalvik"
    atrace_categories: "power"
    }
    }
    }
    data_sources: {
    config {
    name: "linux.process_stats"
    target_buffer: 1
    process_stats_config {
    scan_all_processes_on_start: true
    }
    }
    }
    EOF

    ./record_android_trace -c config.pbtx -o trace_file.perfetto-trace
    Или, альтернативно, при использовании непосредственно команды на устройстве:

    cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.perfetto-trace
    Альтернативно, сначала отправьте файл конфигурации трассировки, а затем вызовите perfetto:

    adb push config.pbtx /data/local/tmp/config.pbtx
    adb shell 'cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace'
    ПРИМЕЧАНИЕ. Из-за строгих правил SELinux в некорневых сборках Android прямая передача пути к файлу невозможна -c /data/local/tmp/config, следовательно, -c -указанный выше канал + stdin. /data/misc/perfetto-configs/ Вместо этого можно использовать начиная с Android 12 (S) .

    Вытащите файл с помощью adb pull /data/misc/perfetto-traces/trace ~/trace.perfetto-trace и откройте его в пользовательском интерфейсе Perfetto .

    ПРИМЕЧАНИЕ. На устройствах до Android 10 adb не может напрямую извлекать файлы /data/misc/perfetto-traces. Используйте adb shell cat /data/misc/perfetto-traces/trace > trace.perfetto-trace для обхода.

    Полную ссылку на perfettoинтерфейс cmdline можно найти здесь .