ไปยังส่วนต่างๆ ของรายงาน Systrace

คู่มือนี้จะอธิบายวิธีไปยังส่วนต่างๆ และตีความรายงาน Systrace หากต้องการตีความรายงาน Perfetto โปรดดูเอกสารประกอบของ Trace Processor

องค์ประกอบของรายงานทั่วไป

Systrace จะสร้างไฟล์ HTML เอาต์พุตที่มีส่วนต่างๆ รายงานจะแสดงรายการเธรดของแต่ละกระบวนการ หากเธรดที่ระบุแสดงเฟรม UI รายงานจะระบุเฟรมที่แสดงตามไทม์ไลน์ด้วย เวลาจะผ่านไปในทิศทางไปข้างหน้าขณะที่คุณเลื่อนจากซ้ายไปขวาในรายงาน

รายงานประกอบด้วยส่วนต่างๆ ดังต่อไปนี้จากบนลงล่าง

การโต้ตอบของผู้ใช้

ส่วนแรกมีแถบที่แสดงการโต้ตอบของผู้ใช้ที่เฉพาะเจาะจงภายในแอปหรือเกม เช่น การแตะบนหน้าจอของอุปกรณ์ การโต้ตอบเหล่านี้ ทำหน้าที่เป็นเครื่องหมายเวลาที่มีประโยชน์

กิจกรรมของ CPU

ส่วนถัดไปจะแสดงแถบที่แสดงกิจกรรมของเธรดภายใน CPU แต่ละตัว แถบแสดงกิจกรรม CPU ในแอปทั้งหมด รวมถึงแอปหรือเกมของคุณ

ส่วนกิจกรรมของ CPU สามารถขยายได้เพื่อให้คุณดูความถี่สัญญาณนาฬิกาของ แต่ละ CPU รูปที่ 1 แสดงตัวอย่างส่วนกิจกรรมของ CPU ที่ยุบอยู่ และ รูปที่ 2 แสดงเวอร์ชันที่ขยายซึ่งแสดงความถี่สัญญาณนาฬิกา

ภาพหน้าจอของรายงาน Systrace
รูปที่ 1 กิจกรรมของ CPU ตัวอย่าง (มุมมองแบบยุบ) ในรายงาน Systrace

ภาพหน้าจอของรายงาน Systrace
รูปที่ 2 ตัวอย่างกิจกรรมของ CPU (มุมมองแบบขยาย) ที่แสดงความถี่ของสัญญาณนาฬิกา CPU ในรายงาน Systrace

เหตุการณ์ของระบบ

ฮิสโทแกรมในส่วนนี้แสดงเหตุการณ์ระดับระบบที่เฉพาะเจาะจง เช่น จำนวนเท็กซ์เจอร์และขนาดรวมของออบเจ็กต์ที่เฉพาะเจาะจง

ฮิสโตแกรมที่ควรตรวจสอบอย่างละเอียดคือฮิสโตแกรมที่มีป้ายกำกับ SurfaceView count แสดงจำนวนบัฟเฟอร์เฟรมที่สร้างขึ้นซึ่งส่งไปยัง ไปป์ไลน์การแสดงผลและรอแสดงบนหน้าจอของอุปกรณ์ เนื่องจากอุปกรณ์ส่วนใหญ่ใช้บัฟเฟอร์ 2 หรือ 3 รายการ ค่านี้จึงมักเป็น 0, 1 หรือ 2

ฮิสโทแกรมอื่นๆ ที่แสดงกระบวนการ Surface Flinger รวมถึงเหตุการณ์ VSync และงานการสลับของเทรด UI จะปรากฏในรูปที่ 3 ดังนี้

ภาพหน้าจอของรายงาน Systrace
รูปที่ 3 ตัวอย่างกราฟ Surface Flinger ในรายงาน Systrace

กรอบแสดงผล

ส่วนนี้มักจะสูงที่สุดในรายงาน โดยแสดงเส้นหลากสี ตามด้วยแถบซ้อนกัน รูปร่างเหล่านี้แสดงถึงสถานะและสแต็กเฟรมของ เธรดที่สร้างขึ้น แต่ละระดับของสแต็กแสดงถึง การเรียกไปยัง beginSection() หรือจุดเริ่มต้นของเหตุการณ์การติดตามที่กำหนดเองที่คุณกำหนดไว้สำหรับแอป หรือเกม

เส้นหลากสีเหนือกองแท่งแต่ละกองแสดงชุดสถานะของเธรดหนึ่งๆ เมื่อเวลาผ่านไป แต่ละส่วนของเส้นจะมีสีใดสีหนึ่งต่อไปนี้

เขียว: กำลังทำงาน
เธรดกำลังทำงานที่เกี่ยวข้องกับกระบวนการหรือตอบสนองต่อการ ขัดจังหวะ
สีน้ำเงิน: เรียกใช้ได้
เธรดพร้อมที่จะทำงาน แต่ยังไม่มีกำหนดการในขณะนี้
สีขาว: กำลังหลับ
เธรดไม่มีงานที่ต้องทำ อาจเป็นเพราะเธรดถูกบล็อกใน Mutex Lock
สีส้ม: การนอนหลับที่ไม่ถูกรบกวน
เทรดถูกบล็อกใน I/O หรือรอให้การดำเนินการในดิสก์เสร็จสมบูรณ์
สีม่วง: การนอนหลับที่ขัดจังหวะได้
เธรดถูกบล็อกในการดำเนินการเคอร์เนลอื่น ซึ่งมักจะเป็นการจัดการหน่วยความจำ

แป้นพิมพ์ลัด

ตารางต่อไปนี้แสดงแป้นพิมพ์ลัดที่ใช้ได้ขณะดูรายงาน Systrace

คีย์ คำอธิบาย
ทิศตะวันตก ซูมเข้าไทม์ไลน์การติดตาม
A แพนไปทางซ้ายในไทม์ไลน์การติดตาม
ทิศใต้ ซูมออกจากไทม์ไลน์การติดตาม
D เลื่อนไปทางขวาในไทม์ไลน์การติดตาม
ทิศตะวันออก จัดกึ่งกลางไทม์ไลน์การติดตามที่ตำแหน่งเมาส์ปัจจุบัน
M จัดเฟรมส่วนที่เลือกในปัจจุบัน
1 เปลี่ยนรูปแบบการเลือกที่ใช้งานอยู่เป็นโหมด "เลือก" สอดคล้องกับปุ่มแรกที่ปรากฏในแถบเครื่องมือของตัวเลือกเมาส์ (ดูรูปภาพทางด้านขวา) ภาพหน้าจอของแถบเครื่องมือตัวเลือกเมาส์ในรายงาน Systrace
2 เปลี่ยนรูปแบบการเลือกที่ใช้งานอยู่เป็นโหมด "แพน" สอดคล้องกับปุ่มที่ 2 ที่ปรากฏในแถบเครื่องมือของตัวเลือกเมาส์ (ดูรูปภาพทางด้านขวา) ภาพหน้าจอของแถบเครื่องมือตัวเลือกเมาส์ในรายงาน Systrace
3 เปลี่ยนรูปแบบการเลือกที่ใช้งานอยู่ปัจจุบันเป็นโหมด "ซูม" สอดคล้องกับปุ่มที่ 3 ที่ปรากฏในแถบเครื่องมือ ตัวเลือกเมาส์ (ดูรูปภาพทางด้านขวา) ภาพหน้าจอของแถบเครื่องมือตัวเลือกเมาส์ในรายงาน Systrace
4 เปลี่ยนรูปแบบการเลือกที่ใช้งานอยู่เป็นโหมด "เวลา" สอดคล้องกับปุ่มที่ 4 ที่ปรากฏในแถบเครื่องมือของตัวเลือกเมาส์ (ดูรูปภาพทางด้านขวา) ภาพหน้าจอของแถบเครื่องมือตัวเลือกเมาส์ในรายงาน Systrace
G แสดงตารางกริดที่จุดเริ่มต้นของงานที่เลือกในปัจจุบัน
Shift + G แสดงตารางกริดที่ท้ายงานที่เลือกในปัจจุบัน
ลูกศรซ้าย เลือกเหตุการณ์ก่อนหน้าในไทม์ไลน์ที่เลือกอยู่
ลูกศรขวา เลือกเหตุการณ์ถัดไปในไทม์ไลน์ที่เลือกอยู่

ตรวจสอบปัญหาด้านประสิทธิภาพ

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

ส่วนด้านล่างจะอธิบายวิธีตรวจสอบข้อมูลในรายงานเพื่อค้นหาและ แก้ไขปัญหาด้านประสิทธิภาพ

ระบุข้อกังวลเกี่ยวกับประสิทธิภาพ

เมื่อไปยังส่วนต่างๆ ของรายงาน Systrace คุณจะระบุปัญหาด้านประสิทธิภาพได้ง่ายขึ้น โดยทำอย่างน้อย 1 อย่างต่อไปนี้

  • เลือกช่วงเวลาที่สนใจโดยวาดสี่เหลี่ยมรอบช่วงเวลา
  • ทำเครื่องหมายหรือไฮไลต์บริเวณที่มีปัญหาโดยใช้เครื่องมือไม้บรรทัด
  • แสดงการรีเฟรชจอแสดงผลแต่ละครั้งโดยคลิกดูตัวเลือก > ไฮไลต์ VSync

ตรวจสอบเฟรมและการแจ้งเตือนของ UI

ดังที่แสดงในรูปที่ 4 รายงาน Systrace จะแสดงรายการแต่ละกระบวนการที่แสดงผลเฟรม UI และระบุแต่ละเฟรมที่แสดงผลตามไทม์ไลน์ เฟรมที่แสดงผล ภายใน 16.6 มิลลิวินาทีที่จำเป็นต่อการรักษา 60 เฟรมต่อวินาทีให้เสถียร จะแสดงด้วยวงกลมเฟรมสีเขียว เฟรมที่ใช้เวลาในการแสดงผลนานกว่า 16.6 มิลลิวินาทีจะมีวงกลมเฟรมสีเหลืองหรือสีแดง

มุมมองของเฟรมที่ซูมเข้า
รูปที่ 4 การแสดง Systrace หลังจากซูมเข้าเฟรมที่ทำงานเป็นเวลานาน

การคลิกวงกลมเฟรมจะไฮไลต์เฟรมนั้นและให้ข้อมูลเพิ่มเติม เกี่ยวกับงานที่ระบบทำเพื่อแสดงเฟรมนั้น รวมถึงการแจ้งเตือน รายงานยังแสดงวิธีการที่ระบบดำเนินการขณะแสดงผลเฟรมนั้นด้วย คุณสามารถตรวจสอบวิธีการเหล่านั้นเพื่อระบุสาเหตุที่เป็นไปได้ของ UI Jank

เลือกเฟรมที่มีปัญหา
รูปที่ 5 เมื่อเลือกเฟรมที่มีปัญหา การแจ้งเตือนจะปรากฏ ใต้รายงานการติดตามเพื่อระบุปัญหา

หลังจากเลือกเฟรมที่ช้าแล้ว คุณอาจเห็นการแจ้งเตือนในบานหน้าต่างด้านล่างของรายงาน การแจ้งเตือนที่แสดงในรูปที่ 5 ระบุว่าปัญหาหลักเกี่ยวกับเฟรมคือใช้เวลามากเกินไปในการรีไซเคิลและผูกใหม่ภายใน ListView มีลิงก์ไปยังเหตุการณ์ที่เกี่ยวข้องในร่องรอยซึ่งอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่ระบบกำลังทำในช่วงเวลานี้

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

แสดงแท็บการแจ้งเตือน
รูปที่ 6 การคลิกปุ่มการแจ้งเตือนจะแสดงแท็บการแจ้งเตือน

หากเห็นว่ามีการทำงานบนเทรด UI มากเกินไป ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้ เพื่อช่วยระบุว่าเมธอดใดใช้เวลา CPU มากเกินไป

  • หากคุณมีแนวคิดเกี่ยวกับวิธีการที่อาจทำให้เกิดคอขวด ให้เพิ่ม เครื่องหมายการติดตามไปยังวิธีการเหล่านั้น ดูข้อมูลเพิ่มเติมได้ที่คู่มือเกี่ยวกับวิธีกําหนด เหตุการณ์ที่กําหนดเองในโค้ด
  • หากไม่แน่ใจว่าคอขวดของ UI มาจากไหน ให้ใช้ CPU Profiler ที่มีอยู่ใน Android Studio คุณสามารถสร้างบันทึกการติดตาม จากนั้นนำเข้าและตรวจสอบโดยใช้ CPU Profiler