Registro del rendimiento para HAR

ATrace realiza un seguimiento del rendimiento para HAR con el crate externo tracing_android_trace.

Habilita el seguimiento para HAR

Para habilitar el registro de rendimiento para la referencia harry-app, habilita la función de Cargo harry-app-platform-specific/tracing-android.

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

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

Agrega registros personalizados al archivo HAR

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

Figura 1: IU de Perfetto que muestra un registro de muestra del proceso harry (HAR)

Seguimiento del rendimiento de DriverUI

DriverUI usa el registro del sistema de Android, por lo que no se requiere ninguna configuración adicional.

Agrega registros personalizados a DriverUI

Puedes agregar eventos personalizados al código de Kotlin con la Guía para desarrolladores.

Recopila un registro

Recomendamos Torq para recopilar registros en AAOS.

Cómo usar Torq

Torq es una herramienta de CLI para recopilar registros de rendimiento en AAOS y SDV.

  1. Clona el repositorio de Torq.

  2. Sigue las instrucciones del repositorio para compilar y, luego, ejecutar lo siguiente:

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

Recopila un registro de rendimiento unificado en ambas VMs

Dado que la Seguridad de la pantalla se ejecuta en dos VMs, recopilar registros de ambas al mismo tiempo ayuda a identificar problemas.

  • Torq admite registros unificados a través de traced_relay de Perfetto.
  • Para capturar un registro unificado, primero identifica el cid de ambas VMs:
# 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

En este ejemplo, usa la VM de SDV-Media (cid=3) como retransmisor.

# 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

Por ejemplo:

Figura 2: La IU de Perfetto muestra un registro unificado de muestra con ambos procesos de ambas VMs: harry (HAR) y com.android.car.driverui (DriverUI).

Cómo recopilar un registro de arranque

Para recopilar un registro de arranque y analizar el rendimiento del arranque, debes habilitar algunos parámetros.

  1. Establece la marca de persistencia específica de SDV para los registros de arranque.

    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. Establece el parámetro de la línea de comandos del kernel androidboot.fastboot.boottrace=enabled.

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

Usar record_android_trace

Puedes hacer lo siguiente:

# 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