ردیابی عملکرد برای HAR

ATrace ردیابی عملکرد را برای HAR با استفاده از جعبه خارجی tracing_android_trace انجام می‌دهد.

فعال کردن ردیابی برای 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

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

شکل ۱. رابط کاربری Perfetto که نمونه‌ای از ردیابی فرآیند harry (HAR) را نشان می‌دهد.

ردیابی عملکرد برای DriverUI

DriverUI از ردیابی سیستم اندروید استفاده می‌کند؛ هیچ پیکربندی اضافی لازم نیست.

اضافه کردن ردپاهای سفارشی به DriverUI

شما می‌توانید با استفاده از راهنمای توسعه‌دهندگان ، رویدادهای سفارشی را به کد کاتلین اضافه کنید.

جمع‌آوری ردپا

ما Torq را برای جمع‌آوری ردپاها در AAOS توصیه می‌کنیم.

از تورک استفاده کنید

Torq یک ابزار CLI برای جمع‌آوری ردپای عملکرد در AAOS و SDV است.

  1. مخزن Torq را کلون کنید.

  2. برای ساخت و سپس اجرا، دستورالعمل‌های موجود در مخزن را دنبال کنید:

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

جمع‌آوری یک ردیابی عملکرد یکپارچه در هر دو ماشین مجازی

از آنجا که Display Safety در دو ماشین مجازی اجرا می‌شود، جمع‌آوری همزمان ردپاها از هر دو ماشین مجازی به شناسایی مشکلات کمک می‌کند.

  • Torq از طریق traced_relay مربوط به Perfetto از ردیابی‌های یکپارچه پشتیبانی می‌کند.
  • برای ثبت یک ردیابی یکپارچه، ابتدا 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 (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

برای مثال:

شکل ۲. رابط کاربری Perfetto که یک نمونه Unified Trace را با هر دو فرآیند از هر دو ماشین مجازی نشان می‌دهد: harry (HAR) و com.android.car.driverui (DriverUI).

ردیابی بوت را جمع‌آوری کنید

برای جمع‌آوری ردپای بوت برای تحلیل عملکرد بوت، باید چند پرچم را فعال کنید.

  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. پارامتر cmdline هسته را 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