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


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

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

Тип файла: команда
  Рус  
usage:  perfetto

  • --background -d : Exits immediately and continues tracing in background

  • --config -c : /path/to/trace/config/file or - for stdin

  • --out -o : /path/to/out/trace/file or - for stdout

  • --upload : Upload field trace (Android only)

  • --dropbox TAG : DEPRECATED: Use --upload instead TAG should always be set to 'perfetto'

  • --no-guardrails : Ignore guardrails triggered when using --upload (for testing).

  • --txt : Parse config as pbtxt. Not for production use. Not a stable API.

  • --reset-guardrails : Resets the state of the guardails and exits (for testing).

  • --query : Queries the service state and prints it as human-readable text.

  • --query-raw : Like --query, but prints raw proto-encoded bytes of tracing_service_state.proto.

  • --save-for-bugreport : If a trace with bugreport_score > 0 is running, it saves it into a file. Outputs the path when done.

  • --help light configuration flags: (only when NOT using -c/--config)

  • --time -t : Trace duration N[s,m,h] (default: 10s)

  • --buffer -b : Ring buffer size N[mb,gb] (default: 32mb)

  • --size -s : Max file size N[mb,gb] (default: in-memory ring-buffer only)

  • --app -a : Android (atrace) app name ATRACE_CAT : Record ATRACE_CAT (e.g. wm) FTRACE_GROUP/FTRACE_NAME : Record ftrace event (e.g. sched/sched_switch) statsd-specific flags:

  • --alert-id : ID of the alert that triggered this trace.

  • --config-id : ID of the triggering config.

  • --config-uid : UID of app which registered the config.

  • --subscription-id : ID of the subscription that triggered this trace. Detach mode. DISCOURAGED, read https://perfetto.dev/docs/concepts/detached-mode :

  • --detach=key : Detach from the tracing session with the given key.

  • --attach=key [--stop] : Re-attach to the session (optionally stop tracing once reattached).

  • --is_detached=key : Check if the session can be re-attached (0:Yes, 2:No, 1:Error).
  •    

    Комментарии
    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 можно найти здесь .