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