HAR のパフォーマンス トレース

ATrace は、外部クレート tracing_android_trace を使用して HAR のパフォーマンス トレースを実行します。

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 を追加するには、spantracing クレートから使用します。
    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

図 1.harry プロセス(HAR)のトレースのサンプルを示す Perfetto UI

DriverUI のパフォーマンス トレース

DriverUI は Android システム トレースを使用するため、追加の構成は必要ありません。

DriverUI にカスタム トレースを追加する

カスタム イベントをデベロッパー ガイドを使用して、Kotlin コードに追加できます。

トレースを収集する

AAOS でトレースを収集するには、Torq を使用することをおすすめします。

Torq を使用する

Torq は、AAOS と SDV でパフォーマンス トレースを収集するための CLI ツールです。

  1. Torq リポジトリのクローンを作成します。

  2. リポジトリの手順に沿ってビルドし、実行します。

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

両方の VM で統合パフォーマンス トレースを収集する

Display Safety は 2 つの VM で実行されるため、両方の VM から同時にトレースを収集すると、問題の特定に役立ちます。

  • Torq は、Perfetto の traced_relay を介して統合トレースをサポートしています。
  • 統合トレースをキャプチャするには、まず両方の VM の 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 VM(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.両方の VM の両方のプロセス(harry(HAR)と com.android.car.driverui(DriverUI))を含む統合トレースのサンプルを示す Perfetto UI

ブート トレースを収集する

ブート パフォーマンスを分析するためのブート トレースを収集するには、 いくつかのフラグを有効にする必要があります。

  1. ブート トレースの 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
    
  2. カーネル コマンドライン パラメータ 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