perfetto เป็นเครื่องมือที่ช่วยให้คุณรวบรวมข้อมูลประสิทธิภาพจาก
อุปกรณ์ Android ผ่าน
Android Debug Bridge (ADB) เรียกใช้เครื่องมือ
perfetto โดยใช้คำสั่ง adb shell perfetto ...
perfetto ใช้แหล่งข้อมูลต่างๆ เพื่อรวบรวมการติดตามประสิทธิภาพจากอุปกรณ์ เช่น
ftraceสำหรับข้อมูลจากเคอร์เนลatraceสำหรับคำอธิบายประกอบในพื้นที่ผู้ใช้ในบริการและแอปheapprofdสำหรับข้อมูลการใช้งานหน่วยความจำเนทีฟของบริการและแอป
หน้านี้อธิบายวิธีเรียก perfetto และกำหนดค่าเพื่อสร้างเอาต์พุตที่ต้องการ ดูข้อมูลเพิ่มเติมได้ที่
perfettoเอกสารประกอบ
ทักษะ Android
ดูใน GitHubการวิเคราะห์การติดตาม Perfetto
perfettoandroid skills add [perfetto-trace-analyzer|perfetto-sql]ไวยากรณ์
ส่วนนี้อธิบายวิธีใช้ ADB เพื่อเรียก perfetto สำหรับโหมดต่างๆ และสร้างการติดตาม
การเลือกแหล่งข้อมูล
perfetto มี 2 โหมดต่อไปนี้ที่กำหนดแหล่งข้อมูลที่จะใช้ในการบันทึกการติดตาม
- โหมดสว่าง: เลือกได้เฉพาะแหล่งข้อมูลบางส่วนเท่านั้น โดยเฉพาะ
atraceและftraceอย่างไรก็ตาม โหมดนี้มีอินเทอร์เฟซที่คล้ายกับsystrace - โหมดปกติ: รับการกำหนดค่าในบัฟเฟอร์โปรโตคอลและช่วยให้คุณ
ใช้ประโยชน์จากฟังก์ชันการทำงานของ
perfettoได้มากขึ้นโดยใช้แหล่งข้อมูลที่แตกต่าง จากatraceและftrace
ตัวเลือกทั่วไป
ตารางต่อไปนี้แสดงตัวเลือกที่พร้อมใช้งานเมื่อใช้ perfetto ในโหมดใดโหมดหนึ่ง
ตารางที่ 1 รายการตัวเลือกเครื่องมือ Perfetto ทั่วไปที่พร้อมใช้งาน
| ตัวเลือก | คำอธิบาย |
|---|---|
--background |
|
perfetto จะออกจากอินเทอร์เฟซบรรทัดคำสั่งทันทีและบันทึกการติดตามต่อในเบื้องหลัง |
--background-wait | -D
|
คล้ายกับ --background แต่จะรอ (สูงสุด 30 วินาที) ให้แหล่งข้อมูลทั้งหมด
เริ่มทำงานก่อนที่จะออก รหัสออกจะเป็น 0 หากได้รับคำยืนยันที่สำเร็จ และเป็นค่าที่ไม่ใช่ 0 ในกรณีอื่นๆ (ข้อผิดพลาดหรือหมดเวลา)
|
--alert-id
|
รหัสของการแจ้งเตือนที่ทริกเกอร์การติดตามนี้ |
--config-id
|
รหัสของการกำหนดค่าที่ทริกเกอร์ |
--config-uid
|
UID ของแอปที่ลงทะเบียนการกำหนดค่า |
--subscription-id
|
รหัสของการสมัครใช้บริการที่ทริกเกอร์การติดตามนี้ |
--out OUT_FILE |
|
ระบุเส้นทางที่ต้องการไปยังไฟล์การติดตามเอาต์พุต หรือ หมายเหตุ: คุณต้องระบุชื่อเส้นทางแบบเต็มของ
ไฟล์เอาต์พุต โดยปกติแล้วควรเขียนไฟล์ลงใน
|
--upload
|
เมื่อเสร็จสมบูรณ์แล้ว จะส่งการติดตามไปยังแพ็กเกจที่ระบุโดย
IncidentReportConfig ข้อความในการกำหนดค่าการติดตามโปรโต |
--no-guardrails
|
ปิดใช้การป้องกันการใช้ทรัพยากรมากเกินไปเมื่อเปิดใช้
--upload แฟล็กระหว่างการทดสอบ |
--reset-guardrails
|
รีเซ็ตสถานะถาวรของ Guardrails และออกจากการทดสอบ |
--rsave-for-bugreport
|
หากมีการติดตามที่มี bugreport_score > 0 ทำงานอยู่ ระบบจะบันทึกการติดตามลงในไฟล์ และแสดงเส้นทางเมื่อเสร็จสิ้น
|
--query
|
ค้นหาสถานะบริการและพิมพ์เป็นข้อความที่อ่านได้ |
--query-raw
|
คล้ายกับ --query แต่จะพิมพ์ไบต์ที่เข้ารหัสโปรโตแบบดิบของ
tracing_service_state.proto. |
--help | -h
|
พิมพ์ข้อความช่วยเหลือสำหรับเครื่องมือ perfetto
|
โหมดสว่าง
ไวยากรณ์ทั่วไปสำหรับการใช้ perfetto ในโหมดสว่างมีดังนี้
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
[ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
--out FILE
ตารางต่อไปนี้แสดงตัวเลือกที่พร้อมใช้งานเมื่อใช้ perfetto ในโหมดสว่าง
ตารางที่ 2 รายการตัวเลือกเครื่องมือ perfetto ที่พร้อมใช้งานเมื่อใช้โหมดสว่าง
| ตัวเลือก | คำอธิบาย |
|---|---|
--time TIME[s|m|h] |
|
ระบุระยะเวลาการติดตามเป็นวินาที นาที หรือชั่วโมง
เช่น --time 1m จะระบุระยะเวลาการติดตาม 1 นาที
ระยะเวลาเริ่มต้นคือ 10 วินาที
|
--buffer SIZE[mb|gb] |
|
ระบุขนาดบัฟเฟอร์แบบวงแหวนเป็นเมกะไบต์ (MB) หรือกิกะไบต์ (GB)
พารามิเตอร์เริ่มต้นคือ --buffer 32mb
|
--size SIZE[mb|gb] |
|
ระบุขนาดไฟล์สูงสุดเป็นเมกะไบต์ (MB) หรือกิกะไบต์ (GB) โดย
ค่าเริ่มต้น perfetto จะใช้เฉพาะบัฟเฟอร์แบบวงแหวนในหน่วยความจำเท่านั้น
|
--app | -a
|
ชื่อแอป Android (atrace) |
ตัวเลือกเหล่านี้ตามด้วยรายการตัวระบุเหตุการณ์
ตารางที่ 3 รายการตัวระบุเหตุการณ์สำหรับโหมดสว่าง
| เหตุการณ์ | คำอธิบาย |
|---|---|
| ATRACE_CAT |
ระบุหมวดหมู่ atrace ที่คุณต้องการบันทึกการติดตาม
เช่น คำสั่งต่อไปนี้จะติดตาม Window Manager โดยใช้ atrace
adb shell perfetto --out FILE wm
หากต้องการบันทึกหมวดหมู่อื่นๆ ให้ดูรายการ
นี้
ของ |
| FTRACE_GROUP/FTRACE_NAME |
ระบุเหตุการณ์ ftrace ที่คุณต้องการบันทึกการติดตาม
เช่น คำสั่งต่อไปนี้จะติดตามเหตุการณ์ sched/sched_switch
adb shell perfetto --out FILE sched/sched_switch
|
โหมดปกติ
ไวยากรณ์ทั่วไปสำหรับการใช้ perfetto ในโหมดปกติมีดังนี้
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
ตารางต่อไปนี้แสดงตัวเลือกที่พร้อมใช้งานเมื่อใช้ perfetto ในโหมดปกติ
ตารางที่ 4 รายการตัวเลือกเครื่องมือ perfetto ที่พร้อมใช้งานเมื่อใช้โหมดปกติ
| ตัวเลือก | คำอธิบาย |
|---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
ระบุเส้นทางไปยังไฟล์การกำหนดค่า ในโหมดปกติ การกำหนดค่าบางอย่าง
อาจเข้ารหัสในบัฟเฟอร์โปรโตคอลการกำหนดค่า ไฟล์นี้
ต้องเป็นไปตามสคีมาบัฟเฟอร์โปรโตคอลที่กำหนดไว้ใน
AOSP trace_config.proto
เลือกและกำหนดค่าแหล่งข้อมูลโดยใช้
|
--txt
|
สั่งให้ perfetto แยกวิเคราะห์ไฟล์การกำหนดค่าเป็น pbtxt แฟล็กนี้มีไว้สำหรับการทดสอบในเครื่องเท่านั้น และเราไม่แนะนำให้เปิดใช้สำหรับเวอร์ชันที่ใช้งานจริง |
แหล่งข้อมูลที่รองรับ
ส่วนนี้อธิบายแหล่งข้อมูลต่างๆ ที่ perfetto ใช้เพื่อสร้างการติดตาม
ftrace
แหล่งข้อมูล ftrace ช่วยให้ perfetto รับเหตุการณ์จากเคอร์เนลได้
เปิดใช้แหล่งข้อมูลนี้โดยตั้งค่า
ftrace_config
ใน DataSourceConfig
เหตุการณ์ที่เปิดใช้ได้มีดังนี้
-
sched/sched_switchsched/sched_wakeupsched/sched_wakeup_newsched/sched_process_execsched/sched_process_exitsched/sched_process_forksched/sched_process_freesched/sched_process_hangsched/sched_process_wait
เหตุการณ์ระบบไฟล์
เหตุการณ์เพิ่มเติมอาจพร้อมใช้งาน ทั้งนี้ขึ้นอยู่กับอุปกรณ์ เวอร์ชันระบบปฏิบัติการ หรือเคอร์เนล ดูข้อมูลเพิ่มเติมได้ที่โปรโตการกำหนดค่า
สถิติเกี่ยวกับกระบวนงาน
แหล่งข้อมูลสถิติเกี่ยวกับกระบวนงานช่วยให้คุณรับตัวนับที่โพลเกี่ยวกับระบบและกระบวนการแต่ละอย่างได้
เปิดใช้แหล่งข้อมูลนี้โดยตั้งค่า process_stats_config
และ sys_stats_config
ใน DataSourceConfig
ข้อมูลที่ perfetto สร้างขึ้นมีดังนี้
-
/proc/meminfo/proc/vmstat/proc/stat
-
/proc/\<pid\>/status/proc/\<pid\>/oom_score_adj
เหตุการณ์เพิ่มเติมอาจพร้อมใช้งาน ทั้งนี้ขึ้นอยู่กับอุปกรณ์ เวอร์ชันระบบปฏิบัติการ และเคอร์เนล ดูข้อมูลเพิ่มเติมได้ที่โปรโตการกำหนดค่าสำหรับ sys_stats
และ process_stats
heapprofd
heapprofd ช่วยให้คุณสุ่มตัวอย่างสาเหตุของการใช้หน่วยความจำเนทีฟได้
เปิดใช้แหล่งข้อมูลนี้โดยตั้งค่า heapprofd_config
ใน DataSourceConfig การตั้งค่านี้จะสร้าง ProfilePackets,
ซึ่งรวมถึงเฟรม Java ของ Callstack
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ heapprofd ได้ที่
perfetto.dev
แหล่งที่มาอื่นๆ
แหล่งข้อมูลเพิ่มเติมอาจพร้อมใช้งาน ทั้งนี้ขึ้นอยู่กับอุปกรณ์ เวอร์ชันระบบปฏิบัติการ และเคอร์เนล ดูข้อมูลเพิ่มเติมได้ที่ โปรโตการกำหนดค่าแหล่งข้อมูล
ดูข้อมูลเพิ่มเติมเกี่ยวกับ perfetto ได้ที่
perfetto.dev