ATrace выполняет трассировку производительности для HAR с помощью внешнего крейта tracing_android_trace .
Включить трассировку для HAR
Чтобы включить трассировку производительности для эталонного harry-app , активируйте функцию Cargo harry-app-platform-specific/tracing-android .
# crates/reference/harry-app/Cargo.toml
harry-sdv = ["harry-app-platform-specific/tracing-android", ...]
Добавить пользовательские трассировки в HAR
- Чтобы добавить пользовательский элемент `
span, используйте элемент `<span>` из библиотеки трассировки .
let custom_trace = tracing::info_span!("custom_trace_span").entered()
// code here will be traced
drop(custom_trace)

Рисунок 1. Пользовательский интерфейс Perfetto, демонстрирующий пример трассировки из процесса harry (HAR).
Трассировка производительности для DriverUI
DriverUI использует трассировку системы Android ; дополнительная настройка не требуется.
Добавьте пользовательские трассировки в DriverUI
Добавить пользовательские события в код Kotlin можно с помощью Руководства разработчика .
Собрать следы
Мы рекомендуем использовать Torq для сбора данных с AAOS.
Используйте Torq
Torq — это инструмент командной строки для сбора трассировок производительности на AAOS и SDV.
Клонируйте репозиторий Torq .
Следуйте инструкциям в репозитории для сборки и последующего запуска:
export ANDROID_SERIAL=<your_device_serial>
# Collect a 7 second trace
torq -d 7000
Соберите единый отчет о производительности для обеих виртуальных машин.
Поскольку Display Safety работает на двух виртуальных машинах, одновременный сбор трассировок с обеих виртуальных машин помогает выявить проблемы.
- Torq поддерживает унифицированную трассировку с помощью
traced_relayиз Perfetto. - Для получения единого трассировочного файла сначала определите CID для обеих виртуальных машин:
# Get the cid for SDV Media VM. For example: 3
adb -s <sdv_media_vm_serial> shell getprop ro.sdv.vsock_local_cid
# Get the cid for SDV IVI VM. For example: 4
adb -s <sdv_ivi_vm_serial> shell getprop ro.sdv.vsock_local_cid
В этом примере используйте виртуальную машину SDV-Media (cid=3) в качестве ретранслятора.
# Configure your VMs for unified tracing
torq vm configure --primary <sdv_ivi_vm_serial> --primary-cid 4 --secondary <sdv_media_vm_serial>
# Collect a 7 second trace from the SDV IVI VM, it will now collect a unified trace
torq --serial <sdv_ivi_vm_serial> -d 7000
Например:

Рисунок 2. Пользовательский интерфейс Perfetto, демонстрирующий пример унифицированной трассировки с обоими процессами из обеих виртуальных машин: harry (HAR) и com.android.car.driverui (DriverUI).
Соберите трассировку загрузки
Для сбора трассировки загрузки с целью анализа производительности загрузки необходимо включить несколько флагов.
Установите флаг сохранения данных, специфичный для SDV, для трассировки загрузки.
export ANDROID_SERIAL=<your_device_serial> adb root adb shell setprop persist.debug.sdv.boottrace 1 adb shell setprop persist.debug.perfetto.boottrace 1Установите параметр командной строки ядра
androidboot.fastboot.boottrace=enabled.
# For Cuttlefish, set when creating CVD
cvd create -extra_kernel_cmdline=androidboot.fastboot.boottrace=enabled
Используйте record_android_trace
Выполните следующие действия:
# Set your adb device serial
export ANDROID_SERIAL=<your_device_serial>
# Run record_android_trace from the Android repo
cd /<your_repo_path>
build/envsetup.sh
$ANDROID_BUILD_TOP/external/perfetto/tools/record_android_trace --config $ANDROID_BUILD_TOP/system/software_defined_vehicle/core_services/samples/tracing/config/trace_cfg.pbtx