Tracciamento delle prestazioni per HAR

ATrace esegue la tracciatura delle prestazioni per HAR utilizzando il crate esterno tracing_android_trace.

Abilita il tracciamento per HAR

Per attivare il monitoraggio del rendimento per il riferimento harry-app, attiva la funzionalità Cargo harry-app-platform-specific/tracing-android.

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

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

Aggiungere tracce personalizzate al file HAR

  • Per aggiungere un span personalizzato, utilizza uno span dal crate tracing.
    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

Figura 1. UI di Perfetto che mostra una traccia di esempio del processo harry (HAR)

Tracciamento delle prestazioni per DriverUI

DriverUI utilizza la traccia di sistema Android; non è necessaria alcuna configurazione aggiuntiva.

Aggiungere tracce personalizzate a DriverUI

Puoi aggiungere eventi personalizzati al codice Kotlin utilizzando la guida per gli sviluppatori.

Raccogliere una traccia

Consigliamo Torq per raccogliere le tracce su AAOS.

Utilizzare Torq

Torq è uno strumento CLI per la raccolta di tracce delle prestazioni su AAOS e SDV.

  1. Clona il repository Torq.

  2. Segui le istruzioni nel repository per creare ed eseguire:

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

Raccogliere una traccia di rendimento unificata in entrambe le VM

Poiché Display Safety viene eseguito su due VM, la raccolta delle tracce da entrambe le VM contemporaneamente aiuta a identificare i problemi.

  • Torq supporta le tracce unificate tramite traced_relay di Perfetto.
  • Per acquisire una traccia unificata, identifica innanzitutto il cid per entrambe le VM:
# 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

In questo esempio, utilizza la VM SDV-Media (cid=3) come relè.

# 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

Ad esempio:

Figura 2. L'interfaccia utente di Perfetto mostra una traccia unificata di esempio con entrambi i processi di entrambe le VM: harry (HAR) e com.android.car.driverui (DriverUI).

Raccogliere una traccia di avvio

Per raccogliere una traccia di avvio per analizzare le prestazioni di avvio, devi attivare alcuni flag.

  1. Imposta il flag di persistenza specifico per SDV per le tracce di avvio.

    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. Imposta il parametro della riga di comando del kernel androidboot.fastboot.boottrace=enabled.

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

Utilizza record_android_trace

Segui questi passaggi:

# 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