หน้านี้อธิบายวิธีดึงข้อมูลการติดตามและแสดงภาพใน UI ของ Perfetto
ดึงข้อมูลการติดตาม
หลังจากบันทึกโปรไฟล์แล้ว ระบบจะบันทึกร่องรอยไว้ในอุปกรณ์ คุณต้องดึงข้อมูลการติดตามเหล่านี้ก่อนจึงจะวิเคราะห์ได้
ProfilingResult.getResultFilePath()
เป็นผู้ระบุตำแหน่งที่ทำการติดตาม
หากต้องการดูวิธีรับตำแหน่งการติดตาม
โปรดดูวิธีบันทึกโปรไฟล์ เมื่อทราบตำแหน่งของร่องรอยแล้ว คุณจะอัปโหลดร่องรอยไปยังเซิร์ฟเวอร์ได้
การทดสอบในเครื่อง: ดึงข้อมูลการติดตามโดยใช้ ADB
การใช้ adb
เพื่อรับการติดตามจะเป็นประโยชน์ในการตรวจสอบประสิทธิภาพและแก้ไขข้อบกพร่องในเครื่อง
ระบบจะบันทึกร่องรอยที่แก้ไขแล้วไว้ในไฟล์ของอุปกรณ์ เส้นทางทั่วไปสำหรับโปรไฟล์ที่บันทึกไว้มีดังนี้
/data/user/0/<app>/files/profiling/profile<tag><datetime>.perfetto-trace
สถานที่:
<app>
คือชื่อแอป<datetime>
คือวันที่และเวลาที่บันทึกการติดตาม<tag>
คือแท็กที่ได้จากผู้ใช้ซึ่งกำหนดค่าโดยใช้setTag
หากเปิดใช้และบันทึกการติดตามที่ไม่มีการปกปิดข้อมูลบางส่วน ให้ใช้adb
คำสั่งต่อไปนี้เพื่อ
ดึงข้อมูลจากการติดตามจากอุปกรณ์
adb pull /data/misc/perfetto-traces/profiling/<trace-name>.perfetto-trace-unredacted
แสดงภาพการติดตาม
หลังจากดึงข้อมูลการติดตามไปยังคอมพิวเตอร์แล้ว คุณจะดูข้อมูลดังกล่าวใน UI ของ Perfetto ได้

ในร่องรอยที่แก้ไขแล้ว ส่วน OtherProcesses
จะรวมกิจกรรม CPU ทั้งหมดจาก
กระบวนการอื่นๆ การรวมกระบวนการจะช่วยให้สิ่งที่กระบวนการอื่นๆ ทำเป็นแบบส่วนตัว
อย่างไรก็ตาม การเห็นกิจกรรม CPU ที่รวมกันนี้ยังช่วยให้คุณตรวจสอบได้ว่าระบบ ทำงานหนักเกินไปในระหว่างการบันทึกหรือไม่ การตรวจสอบกิจกรรมของระบบจะช่วยให้คุณ ทราบว่าแอปทำงานช้าเนื่องจากปัญหาภายในหรือเนื่องจาก ระบบทำงานช้าโดยทั่วไป
รูปภาพต่อไปนี้ไฮไลต์และอธิบายส่วนหลักๆ ที่คุณจะเห็น ในร่องรอยโดยย่อ

- รายการ CPU: แสดงโปรเซสเซอร์ทั้งหมดที่มีในอุปกรณ์
- งานของ CPU: แสดงเธรดที่ CPU แต่ละตัวดำเนินการ
- มุมมองกระบวนการอื่นๆ: แสดงทรัพยากร CPU ที่กระบวนการอื่นๆ ใช้
- มุมมองกระบวนการ: แสดงกระบวนการของแอป
- มุมมองเธรด: แสดงเธรดที่ทำงานภายในกระบวนการและสถานะเธรด (Runnable (R), Running (R), Sleeping (S), Uninterruptible Sleep (D)) ซึ่งแมปกับสถานะกระบวนการของ Linux โดยตรง
- ส่วนของร่องรอย: ส่วนนี้แสดงคำอธิบายประกอบร่องรอยที่นักพัฒนาแอป
หรือเฟรมเวิร์กเพิ่ม คำอธิบายประกอบเหล่านี้ครอบคลุมการคำนวณ
ระหว่าง
Trace.beginSection
กับTrace.endSection
ดูข้อมูลเพิ่มเติมเกี่ยวกับ UI ของ Perfetto และการแสดงภาพร่องรอยได้ที่เอกสาร Perfetto