Śledzenie wydajności w przypadku pliku HAR

ATrace wykonuje śledzenie wydajności dla HAR za pomocą zewnętrznego pakietu tracing_android_trace.

Włączanie śledzenia dla HAR

Aby włączyć śledzenie wydajności dla odniesienia harry-app, włącz funkcję Cargo harry-app-platform-specific/tracing-android.

# crates/reference/harry-app/Cargo.toml

harry-sdv = ["harry-app-platform-specific/tracing-android", ...]

Dodawanie niestandardowych śladów do HAR

    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

Rysunek 1. Interfejs Perfetto z przykładowym śladem z procesu harry (HAR)

Śledzenie wydajności DriverUI

DriverUI korzysta ze śledzenia systemu Android. Nie wymaga dodatkowej konfiguracji.

Dodawanie niestandardowych śladów do DriverUI

Za pomocą przewodnika dla deweloperów możesz dodawać niestandardowe zdarzenia do kodu Kotlin.

Zbieranie śladu

Do zbierania śladów w AAOS zalecamy używanie Torq.

Używanie Torq

Torq to narzędzie CLI do zbierania śladów wydajności w AAOS i SDV.

  1. Sklonuj repozytorium Torq.

  2. Postępuj zgodnie z instrukcjami w repozytorium, aby skompilować, a następnie uruchomić:

export ANDROID_SERIAL=<your_device_serial>
# Collect a 7 second trace
torq -d 7000

Zbieranie ujednoliconego śladu wydajności na obu maszynach wirtualnych

Ponieważ funkcja Display Safety działa na 2 maszynach wirtualnych, zbieranie śladów z obu maszyn wirtualnych w tym samym czasie pomaga w identyfikowaniu problemów.

  • Torq obsługuje ujednolicone ślady za pomocą traced_relay w Perfetto.
  • Aby zarejestrować ujednolicony ślad, najpierw określ identyfikator cid dla obu maszyn wirtualnych:
# 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

W tym przykładzie użyjemy maszyny wirtualnej SDV-Media (cid=3) jako przekaźnika.

# 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

Przykład:

Rysunek 2. Interfejs Perfetto z przykładowym ujednoliconym śladem z obu procesów z obu maszyn wirtualnych: harry (HAR) i com.android.car.driverui (DriverUI).

Zbieranie śladu rozruchu

Aby zebrać ślad rozruchu do analizy wydajności rozruchu, musisz włączyć kilka flag.

  1. Ustaw flagę trwałości specyficzną dla SDV dla śladów rozruchu.

    export ANDROID_SERIAL=<your_device_serial>
    adb root
    adb shell setprop persist.debug.sdv.boottrace 1
    adb shell setprop persist.debug.perfetto.boottrace 1
    
  2. Ustaw parametr wiersza poleceń jądra androidboot.fastboot.boottrace=enabled.

# For Cuttlefish, set when creating CVD
cvd create -extra_kernel_cmdline=androidboot.fastboot.boottrace=enabled

Używanie record_android_trace

Wykonaj te czynności:

# 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