מעקב אחר ביצועים של קובץ HAR

ATrace מבצע מעקב אחר הביצועים של HAR באמצעות ה-crate החיצוני 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

  • כדי להוסיף span מותאם אישית, משתמשים ב-span מ-tracing crate.
    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

איור 1. ממשק המשתמש של Perfetto שמציג דוגמה למעקב מהתהליך harry (HAR)

יומן למעקב ביצועים של DriverUI

ממשק המשתמש של הנהג משתמש במעקב אחר מערכת Android, ולא נדרשת הגדרה נוספת.

הוספת עקבות בהתאמה אישית ל-DriverUI

אפשר להוסיף אירועים בהתאמה אישית לקוד Kotlin באמצעות מדריך למפתחים.

איסוף נתונים למעקב

אנחנו ממליצים להשתמש ב-Torq כדי לאסוף עקבות ב-AAOS.

שימוש ב-Torq

Torq הוא כלי CLI לאיסוף נתוני מעקב ביצוע ב-AAOS וב-SDV.

  1. משכפלים את מאגר Torq.

  2. פועלים לפי ההוראות במאגר כדי ליצור את הקובץ ואז להריץ אותו:

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

איסוף נתוני מעקב אחר ביצועים מאוחדים בשתי המכונות הווירטואליות

מכיוון שהתכונה 'בטיחות התצוגה' פועלת בשתי מכונות וירטואליות, איסוף עקבות משתי המכונות הווירטואליות בו-זמנית עוזר לזהות בעיות.

  • 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

לדוגמה:

איור 2. ממשק המשתמש של Perfetto שבו רואים דוגמה של Unified Trace עם שני התהליכים משני מכונות ה-VM: ‏ 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. מגדירים את הפרמטר 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