Suivi des performances pour HAR

ATrace effectue le traçage des performances pour HAR à l'aide du crate externe tracing_android_trace.

Activer le traçage pour HAR

Pour activer le traçage des performances pour la référence harry-app, activez la fonctionnalité Cargo harry-app-platform-specific/tracing-android.

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

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

Ajouter des traces personnalisées à HAR

  • Pour ajouter un span personnalisé, utilisez une span du crate tracing.
    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

Figure 1. Interface utilisateur Perfetto affichant un exemple de trace du processus harry (HAR)

Suivi des performances pour DriverUI

DriverUI utilise le traçage système Android. Aucune configuration supplémentaire n'est requise.

Ajouter des traces personnalisées à DriverUI

Vous pouvez ajouter des événements personnalisés au code Kotlin à l'aide du Guide du développeur.

Collecter une trace

Nous vous recommandons d'utiliser Torq pour collecter des traces sur AAOS.

Utiliser Torq

Torq est un outil CLI permettant de collecter des traces de performances sur AAOS et SDV.

  1. Clonez le dépôt Torq.

  2. Suivez les instructions du dépôt pour compiler, puis exécuter :

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

Collecter une trace des performances unifiée pour les deux VM

Étant donné que Display Safety s'exécute sur deux VM, la collecte de traces à partir des deux VM en même temps permet d'identifier les problèmes.

  • Torq est compatible avec les traces unifiées via traced_relay de Perfetto.
  • Pour capturer une trace unifiée, identifiez d'abord le numéro client des deux 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

Dans cet exemple, utilisez la VM SDV-Media (cid=3) comme relais.

# 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

Exemple :

Figure 2. Interface utilisateur Perfetto affichant un exemple de trace unifiée avec les deux processus des deux VM : harry (HAR) et com.android.car.driverui (DriverUI).

Collecter une trace de démarrage

Pour collecter une trace de démarrage afin d'analyser les performances de démarrage, vous devez activer quelques indicateurs.

  1. Définissez l'indicateur de persistance spécifique à SDV pour les traces de démarrage.

    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. Définissez le paramètre de ligne de commande du noyau androidboot.fastboot.boottrace=enabled.

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

Utiliser record_android_trace

Procédez comme suit :

# 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