Perfetto

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 |
-d
perfetto จะออกจากอินเทอร์เฟซบรรทัดคำสั่งทันทีและดำเนินการต่อ เพื่อบันทึกการติดตามของคุณในพื้นหลัง
--background-wait | -D เหมือน --background แต่รอ (สูงสุด 30 วินาที) สำหรับทุกกิจกรรม ของแหล่งข้อมูลที่ต้องเริ่มก่อนออก ออก รหัสเป็นศูนย์หากการตอบรับสำเร็จ ได้รับและไม่ใช่ 0 (ข้อผิดพลาดหรือหมดเวลา)
--alert-id รหัสของการแจ้งเตือนที่เรียกใช้การติดตามนี้
--config-id รหัสของการกำหนดค่าการทริกเกอร์
--config-uid UID ของแอปที่ลงทะเบียนการกำหนดค่า
--subscription-id รหัสของการสมัครใช้บริการที่เรียกใช้การติดตามนี้
--out OUT_FILE |
-o OUT_FILE

ระบุเส้นทางที่ต้องการไปยังไฟล์การติดตามเอาต์พุตหรือ - สำหรับ stdout perfetto เขียนเอาต์พุตไปยังไฟล์ที่อธิบายไว้ใน ก่อนหน้า รูปแบบเอาต์พุตคอมไพล์ตามรูปแบบที่กำหนดไว้ใน AOSP trace.proto

หมายเหตุ: คุณต้องระบุชื่อเส้นทางแบบเต็มของ ไฟล์ที่ส่งออก โดยทั่วไปไฟล์ควรเขียนลงใน /data/misc/perfetto-traces โฟลเดอร์

--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] |
-t TIME[s|m|h]
ระบุระยะเวลาการติดตามเป็นวินาที นาที หรือชั่วโมง ตัวอย่างเช่น --time 1m ระบุระยะเวลาการติดตามที่ 1 นาที ระยะเวลาเริ่มต้นคือ 10 วินาที
--buffer SIZE[mb|gb] |
-b SIZE[mb|gb]
ระบุขนาดบัฟเฟอร์ของริงเป็นเมกะไบต์ (mb) หรือ กิกะไบต์ (gb) พารามิเตอร์เริ่มต้นคือ --buffer 32mb
--size SIZE[mb|gb] |
-s SIZE[mb|gb]
ระบุขนาดไฟล์สูงสุดเป็นเมกะไบต์ (mb) หรือ กิกะไบต์ (gb) โดย ค่าเริ่มต้น perfetto จะใช้เฉพาะบัฟเฟอร์ริงในหน่วยความจำเท่านั้น
--app | -a ชื่อแอป Android (atrace)

รายการต่อไปนี้คือรายการตัวระบุเหตุการณ์

ตารางที่ 3 รายการตัวระบุเหตุการณ์สำหรับ โหมดสว่าง

กิจกรรม คำอธิบาย
ATRACE_CAT ระบุหมวดหมู่atraceที่ต้องการบันทึกการติดตาม ตัวอย่างเช่น คำสั่งต่อไปนี้จะติดตาม Window Manager โดยใช้ atrace
    adb shell perfetto --out FILE wm
    

หากต้องการบันทึกหมวดหมู่อื่นๆ โปรดดู รายการ จาก atrace หมวดหมู่

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

เลือกและกำหนดค่าแหล่งข้อมูลโดยใช้ สมาชิก DataSourceConfig รายของ TraceConfig ใน กำหนดไว้ใน AOSP data_source_config.proto

--txt สั่งให้ perfetto แยกวิเคราะห์ไฟล์การกำหนดค่าเป็น pbtxt ช่วงเวลานี้ Flag มีไว้สำหรับการทดสอบในเครื่องเท่านั้น และเราไม่แนะนำให้คุณ เพื่อเปิดใช้เวอร์ชันที่ใช้งานจริง

แหล่งข้อมูลที่รองรับ

ส่วนนี้จะอธิบายแหล่งที่มาต่างๆ ที่ perfetto ใช้ในการสร้าง การติดตามของคุณ

Ftrace

แหล่งข้อมูล ftrace อนุญาตให้ perfetto รับเหตุการณ์จากเคอร์เนล

เปิดใช้แหล่งที่มานี้โดยการตั้งค่า ftrace_config ใน DataSourceConfig

เหตุการณ์ที่จะเปิดใช้ได้มีดังนี้

อาจมีเหตุการณ์อื่นๆ เกิดขึ้นบ้าง ทั้งนี้ขึ้นอยู่กับอุปกรณ์ เวอร์ชันของระบบปฏิบัติการ หรือเคอร์เนล พร้อมใช้งาน ดูข้อมูลเพิ่มเติมได้ที่โปรโตคอลการกำหนดค่า

สถิติเกี่ยวกับกระบวนงาน

แหล่งข้อมูลสถิติกระบวนการจะช่วยให้คุณได้รับตัวนับที่สำรวจเกี่ยวกับ อย่างเป็นระบบและกระบวนการแต่ละอย่าง

เปิดใช้แหล่งข้อมูลนี้โดยการตั้งค่า process_stats_config และ sys_stats_config ใน DataSourceConfig

ข้อมูลที่ perfetto สร้างขึ้น ได้แก่

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

heapprofd

heapprofd ให้คุณดูตัวอย่างสาเหตุของการใช้หน่วยความจำของระบบ

เปิดใช้แหล่งข้อมูลนี้โดยการตั้งค่า heapprofd_config ใน DataSourceConfig การตั้งค่านี้จะสร้าง ProfilePackets รวมถึงเฟรม Java ของ Calltack ด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้งาน heapprofd ได้ที่ perfetto.dev

แหล่งที่มาอื่นๆ

แหล่งข้อมูลเพิ่มเติมอาจขึ้นอยู่กับอุปกรณ์ เวอร์ชันของระบบปฏิบัติการ และเคอร์เนล พร้อมใช้งาน ดูข้อมูลเพิ่มเติมได้ที่ โปรโตคอลการกำหนดค่าแหล่งข้อมูล

อ่านข้อมูลเพิ่มเติมเกี่ยวกับ perfetto ได้ที่ perfetto.dev