การติดตามประสิทธิภาพสำหรับ 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 จาก Crate tracing
    let custom_trace = tracing::info_span!("custom_trace_span").entered()
    // code here will be traced
    drop(custom_trace)

รูปที่ 1 UI ของ Perfetto แสดงการติดตามตัวอย่างจากharryกระบวนการ (HAR)

การติดตามประสิทธิภาพสำหรับ DriverUI

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

รวบรวมการติดตามประสิทธิภาพแบบรวมใน VM ทั้ง 2 รายการ

เนื่องจาก Display Safety ทำงานใน VM 2 รายการ การรวบรวมการติดตามจากทั้ง 2 รายการพร้อมกันจะช่วยระบุปัญหาได้

  • Torq รองรับการติดตามแบบรวมผ่าน traced_relay ของ Perfetto
  • หากต้องการบันทึกการติดตามแบบรวม ให้ระบุ cid สำหรับทั้ง 2 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

ในตัวอย่างนี้ ให้ใช้ VM ของ 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 UI ของ Perfetto แสดงตัวอย่างการติดตามแบบรวมที่มีทั้งกระบวนการ จากทั้ง 2 VM ได้แก่ harry (HAR) และ com.android.car.driverui (DriverUI)

รวบรวมการติดตามการบูต

หากต้องการรวบรวมการติดตามการบูตเพื่อวิเคราะห์ประสิทธิภาพการบูต คุณต้องเปิดใช้ Flag บางรายการ

  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