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_switch
sched/sched_wakeup
sched/sched_wakeup_new
sched/sched_process_exec
sched/sched_process_exit
sched/sched_process_fork
sched/sched_process_free
sched/sched_process_hang
sched/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