perfetto Cобирает информацию о производительности устройства через ADB Тип файла: команда usage: perfetto TAG всегда должен быть установлен на «perfetto» при использовании --upload (для тестирования) Не для производственного использования. Не стабильный API (для тестирования) его как человекочитаемый текст. в протокодированном виде из tracing_service_state.proto она сохраняет его в файл. Выводит путь, когда сделано (по умолчанию: только кольцевой буфер в памяти) ATRACE_CAT : запись ATRACE_CAT (например, wm) FTRACE_GROUP/FTRACE_NAME: запись события ftrace например, sched/sched_switch) Флаги, относящиеся к statsd: Режим отсоединения Прочитайте https://perfetto.dev/docs/concepts/detached-mode при желании остановить трассировку после повторного подключения (0:Да, 2:Нет, 1:Ошибка) Комментарии 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 можно найти здесь . |