perfetto คือเครื่องมือที่ช่วยให้คุณรวบรวมข้อมูลประสิทธิภาพจาก
อุปกรณ์ Android ผ่าน
Android Debug Bridge (ADB) เรียกใช้
เครื่องมือ perfetto โดยใช้คำสั่ง adb shell perfetto ...
perfetto ใช้ตัวแปร
แหล่งที่มาในการรวบรวมการติดตามประสิทธิภาพจากอุปกรณ์ของคุณ เช่น
ftraceสำหรับข้อมูลจากเคอร์เนลatraceสำหรับคำอธิบายประกอบพื้นที่ผู้ใช้ในบริการและแอปheapprofdสำหรับข้อมูลการใช้งานหน่วยความจำในเครื่องของบริการและแอป
หน้านี้อธิบายวิธีเรียก perfetto และกำหนดค่าให้สร้าง
เอาต์พุตที่ต้องการ ดูข้อมูลเพิ่มเติมได้ที่
เอกสารประกอบเกี่ยวกับ perfetto
วากยสัมพันธ์
ส่วนนี้จะอธิบายวิธีใช้ ADB เพื่อเรียก perfetto สำหรับโหมดต่างๆ
และสร้างการติดตาม
การเลือกแหล่งข้อมูล
perfetto มี 2 โหมดต่อไปนี้ซึ่งเป็นตัวกำหนดแหล่งข้อมูล
ซึ่งใช้บันทึกการติดตามของคุณ
- โหมดสว่าง: เลือกแหล่งข้อมูลชุดย่อย โดยเฉพาะ
atraceและftraceอย่างไรก็ตาม โหมดนี้มีอินเทอร์เฟซที่คล้ายกับsystrace - โหมดปกติ: รับการกำหนดค่าในบัฟเฟอร์โปรโตคอลและช่วยให้คุณ
ใช้ประโยชน์จากฟังก์ชันของ
perfettoมากขึ้นด้วยการใช้แหล่งข้อมูลต่างๆ จากatraceและftrace
ตัวเลือกทั่วไป
ตารางต่อไปนี้แสดงตัวเลือกที่ใช้ได้เมื่อใช้ perfetto ใน
โหมด:
ตาราง 1 รายการทั่วไปที่ใช้ได้ เครื่องมือ Perfetto ต่างๆ
| ตัวเลือก | คำอธิบาย |
|---|---|
--background |
|
perfetto จะออกจากอินเทอร์เฟซบรรทัดคำสั่งทันทีและดำเนินการต่อ
เพื่อบันทึกการติดตามของคุณในพื้นหลัง |
--background-wait | -D
|
เหมือน --background แต่รอ (สูงสุด 30 วินาที) สำหรับทุกกิจกรรม
ของแหล่งข้อมูลที่ต้องเริ่มก่อนออก ออก
รหัสเป็นศูนย์หากการตอบรับสำเร็จ
ได้รับและไม่ใช่ 0 (ข้อผิดพลาดหรือหมดเวลา)
|
--alert-id
|
รหัสของการแจ้งเตือนที่เรียกใช้การติดตามนี้ |
--config-id
|
รหัสของการกำหนดค่าการทริกเกอร์ |
--config-uid
|
UID ของแอปที่ลงทะเบียนการกำหนดค่า |
--subscription-id
|
รหัสของการสมัครใช้บริการที่เรียกใช้การติดตามนี้ |
--out OUT_FILE |
|
ระบุเส้นทางที่ต้องการไปยังไฟล์การติดตามเอาต์พุตหรือ หมายเหตุ: คุณต้องระบุชื่อเส้นทางแบบเต็มของ
ไฟล์ที่ส่งออก โดยทั่วไปไฟล์ควรเขียนลงใน
|
--upload
|
เมื่อดำเนินการเสร็จสมบูรณ์แล้ว ให้ส่งการติดตามไปยังแพ็กเกจที่ระบุโดย
IncidentReportConfig ในการกำหนดค่าการติดตามโปรโต |
--no-guardrails
|
ปิดใช้การป้องกันการใช้ทรัพยากรมากเกินไปเมื่อเปิดใช้
--upload Flag ระหว่างการทดสอบ |
--reset-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 ช่วงเวลานี้
Flag มีไว้สำหรับการทดสอบในเครื่องเท่านั้น และเราไม่แนะนำให้คุณ
เพื่อเปิดใช้เวอร์ชันที่ใช้งานจริง |
แหล่งข้อมูลที่รองรับ
ส่วนนี้จะอธิบายแหล่งที่มาต่างๆ ที่ 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 ของ Calltack ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้งาน heapprofd ได้ที่
perfetto.dev
แหล่งที่มาอื่นๆ
แหล่งข้อมูลเพิ่มเติมอาจขึ้นอยู่กับอุปกรณ์ เวอร์ชันของระบบปฏิบัติการ และเคอร์เนล พร้อมใช้งาน ดูข้อมูลเพิ่มเติมได้ที่ โปรโตคอลการกำหนดค่าแหล่งข้อมูล
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ perfetto ได้ที่
perfetto.dev