การประมาณเวลาในการประมวลผลเฟรมของ CPU และ GPU (เวลาของเฟรม) เป็นสิ่งจําเป็นสําหรับการทำความเข้าใจประสิทธิภาพของแอปและค้นหาจุดคอขวด เมื่อคุณสร้างโปรไฟล์แอปด้วย AGI เครื่องมือวิเคราะห์ระบบจะแสดงข้อมูลการติดตามที่คุณสามารถใช้เพื่อประมาณเวลาเฟรม
เวลา CPU
ใน AGI คุณสามารถดูเวลาเฟรมของ CPU ทั้งหมดและที่ใช้งานอยู่ในการติดตาม CPU ของโปรไฟล์ระบบ
เวลา CPU รวม
หากต้องการวัดเวลา CPU ทั้งหมดที่ใช้ไป ให้เลือกช่วงเวลาซึ่งรวมเวลาระหว่างเหตุการณ์การส่งเฟรมต่อเนื่อง เหตุการณ์การส่งเฟรมคือ eglSwapBuffers
(สําหรับ OpenGL) และ vkQueuePresentKHR
(สําหรับ Vulkan)

eglSwapBuffer
2 เหตุการณ์
vkQueuePresentKHR
2 เหตุการณ์การวัดนี้เป็นค่าประมาณของเวลา CPU ทั้งหมด แต่ไม่จำเป็นต้องแสดงถึงเวลา CPU ที่ใช้งานอยู่ ตัวอย่างเช่น ในแอปที่ทำงานกับ GPU เป็นหลัก CPU อาจรอให้ GPU ทำงานเสร็จก่อนจึงจะส่งเฟรมใหม่ ปัญหานี้มักเกิดขึ้นเมื่อเหตุการณ์ dequeueBuffer
, eglSwapBuffer
(สําหรับ OpenGL) หรือ vkQueuePresent
(สําหรับ Vulkan) ใช้เวลาส่วนใหญ่ของ CPU
เวลารอจะรวมอยู่ในเวลา CPU รวม แต่จะไม่รวมอยู่ในเวลา CPU ที่ใช้งานอยู่

dequeueBuffer
และ eglSwapBuffer
เวลา CPU ที่ใช้งานอยู่
เวลา CPU ที่ใช้งานอยู่จะระบุเวลาที่ CPU เรียกใช้โค้ดแอปโดยไม่อยู่ในสถานะ "ไม่ได้ใช้งาน"
หากต้องการวัดเวลา CPU ที่ใช้งานอยู่ ให้ดูส่วนแบ่งกำลังทำงานเหนือเหตุการณ์ CPU นับส่วนของการติดตามทั้งหมดระหว่างเหตุการณ์การส่งเฟรม 2 รายการที่อยู่ในสถานะกำลังทำงาน ตรวจสอบว่าคุณได้รวมชุดข้อความที่ใช้งานได้


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

คุณสามารถเพิ่มเครื่องหมาย ATrace ลงในแอปเพื่อช่วยระบุข้อมูลโค้ดของแอปได้ ซึ่งจะแสดงเครื่องหมายในแทร็ก CPU ของเครื่องมือวิเคราะห์ระบบ

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


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


อุปกรณ์ Adreno
ในอุปกรณ์ Adreno ส่วนของ GPU จะปรากฏในแทร็ก GPU Queue 0 และแสดงตามลําดับเสมอ คุณจึงดูส่วนของ GPU ทั้งหมดที่แสดงการผ่านการแสดงผลของเฟรมและใช้เพื่อวัดเวลาที่ใช้ในการแสดงผลเฟรมของ GPU ได้


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

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

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

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

อุปกรณ์ Adreno
ในอุปกรณ์ Adreno หากแอปไม่ได้ใช้ GPU อย่างหนัก คุณสามารถประมาณเวลาที่ใช้ในการแสดงผลเฟรมของ GPU ได้เช่นเดียวกับอุปกรณ์ Mali ในส่วนก่อนหน้า

หากแอปใช้ GPU มากกว่าและแอปพลิเคชันมีเปอร์เซ็นต์การใช้ประโยชน์จาก GPU สูงอย่างต่อเนื่อง คุณสามารถใช้แทร็กคำสั่ง Vertex / วินาทีและคำสั่ง Fragment / วินาที เพื่อประมาณเวลาเฟรมของ GPU การมองหารูปแบบในระดับกิจกรรมของแทร็กเหล่านี้จะช่วยให้คุณทราบขอบเขตโดยคร่าวๆ ของเฟรม และนำไปใช้วัดเวลาเฟรมของ GPU ได้

แทร็กอื่นๆ เหล่านี้อาจให้ข้อมูลที่คล้ายกัน
- จุดยอดที่แรเงา / วินาที
- เศษเสี้ยวที่แรเงา / วินาที
- % เวลาในการแรเงาจุดยอด
- % เวลาในการแรเงาเศษข้อมูล