يعد تقدير أوقات معالجة إطارات وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (أوقات عرض الإطارات) أمرًا ضروريًا لفهم أداء تطبيقك وتحديد المؤثِّرات السلبية. عند إعداد ملف تعريفي لتطبيق باستخدام AGI، يوفّر محلّل النظام بيانات تتبُّع يمكنك استخدامها لتقدير أوقات عرض اللقطات.
أوقات وحدة المعالجة المركزية (CPU)
في AGI، يمكنك الاطّلاع على إجمالي عدد اللقطات في الثانية وإجمالي وقت عرض وحدة المعالجة المركزية (CPU) في مسار وحدة المعالجة المركزية (CPU) لأحد الملف الشخصي للنظام.
إجمالي وقت وحدة المعالجة المركزية (CPU)
لقياس إجمالي الوقت المُستغرَق في وحدة المعالجة المركزية (CPU)،
اختَر النطاق الزمني
الذي يتضمّن الوقت الفاصل بين أحداث إرسال الإطار المتعاقبة. أحداث إرسال الإطار هي eglSwapBuffers
(لـ OpenGL) وvkQueuePresentKHR
(لـ Vulkan).
![لقطة شاشة للعديد من أحداث eglSwapBuffer](https://developer.android.com/static/images/agi/long-images/image1.png?authuser=6&hl=ar)
eglSwapBuffer
"![لقطة شاشة لحدث vkQueuePresentKHR.](https://developer.android.com/static/images/agi/long-images/image2.png?authuser=6&hl=ar)
vkQueuePresentKHR
يُعد هذا القياس تقديرًا لإجمالي وقت وحدة المعالجة المركزية، ولكنه لا يمثل بالضرورة
الوقت النشط لوحدة المعالجة المركزية. على سبيل المثال، في التطبيقات المرتبطة بوحدة معالجة الرسومات، قد تنتظر وحدة المعالجة المركزية
حتى تنتهي وحدة معالجة الرسومات من عملها قبل إرسال إطار جديد. ويحدث ذلك غالبًا عندما يستغرق الحدث dequeueBuffer
أو eglSwapBuffer
(لبرنامج OpenGL) أو vkQueuePresent
(لـ Vulkan) جزءًا كبيرًا من وقت وحدة المعالجة المركزية (CPU).
يتم تضمين وقت الانتظار في إجمالي وقت وحدة المعالجة المركزية (CPU)، ولكنه لا يتضمن وقت وحدة المعالجة المركزية (CPU) النشط.
![لقطة شاشة تعرض قدرًا كبيرًا من عدم النشاط أثناء حدثَي dequeueBuffer وeglSwapBuffer.](https://developer.android.com/static/images/agi/long-images/image3.png?authuser=6&hl=ar)
dequeueBuffer
وeglSwapBuffer
الوقت النشط لوحدة المعالجة المركزية
يحدد وقت وحدة المعالجة المركزية النشطة وقت تشغيل وحدة المعالجة المركزية لرمز التطبيق بدون أن تكون في حالة عدم النشاط.
لقياس الوقت النشط لوحدة المعالجة المركزية، اعرض الشرائح قيد التشغيل أعلى أحداث وحدة المعالجة المركزية (CPU) مباشرةً. إحصاء جميع أجزاء التتبّع بين أحداث إرسال الإطارين التي تكون في الحالة قيد التشغيل. تأكد من تضمين خيوط عمل.
![لقطة شاشة لفترتين من وقت وحدة المعالجة المركزية يمكن استخدامهما لقياس الوقت النشط لوحدة المعالجة المركزية (CPU).](https://developer.android.com/static/images/agi/long-images/image5.png?authuser=6&hl=ar)
![لقطة شاشة لتطبيق متعدّد سلاسل المحادثات يتضمّن سلسلة تعليمات عندما تكون سلسلة التعليمات الرئيسية غير نشطة.](https://developer.android.com/static/images/agi/long-images/image6.png?authuser=6&hl=ar)
هناك طريقة أخرى لقياس المدة النشطة لوحدة المعالجة المركزية (CPU)، وهي عرض شرائح التطبيق في مسارات وحدة المعالجة المركزية (CPU). يشار إلى هذه الشرائح عندما تكون وحدة المعالجة المركزية قيد التشغيل وأنها تتوافق مع شرائح قيد التشغيل.
![لقطة شاشة تعرض حالة تشغيل سلسلة محادثات مثبّتة تتطابق مع مسار وحدة المعالجة المركزية (CPU).](https://developer.android.com/static/images/agi/long-images/image7.png?authuser=6&hl=ar)
للمساعدة في تحديد شرائح التطبيق، يمكنك إضافة علامات ATrace إلى تطبيقك. وسيؤدي ذلك إلى عرض العلامات في مسار وحدة المعالجة المركزية (CPU) لأداة تحليل النظام.
![لقطة شاشة لعلامة ATrace في مسار وحدة المعالجة المركزية (CPU)](https://developer.android.com/static/images/agi/long-images/image8.png?authuser=6&hl=ar)
تقدير عدد اللقطات في الثانية على وحدة معالجة الرسومات
لتقدير أوقات عرض لقطات وحدة معالجة الرسومات، يمكنك إما استخدام شرائح وحدة معالجة الرسومات أو عدّادات وحدة معالجة الرسومات في أداة تحليل النظام. يكون التقدير أكثر دقة عند استخدام شرائح وحدة معالجة الرسومات.
شرائح وحدة معالجة الرسومات
إذا توفرت معلومات شرائح وحدة معالجة الرسومات في محلّل النظام، يمكنك الحصول على معلومات دقيقة للغاية لوقت عرض وحدة معالجة الرسومات من خلال قياس إجمالي الوقت الذي يقضيه تطبيقك في العمل على المهام المرتبطة بإطار واحد.
الأجهزة في مالي
على أجهزة مالي، تحتوي شرائح وحدة معالجة الرسومات على مسارات مجزأة وغير مجزأة وأحيانًا تكميلية غير مجزأة. بالنسبة إلى الإطارات الأقل تعقيدًا، يكون عمل الأجزاء والعمل غير المجزأ متسلسلاً، وبالتالي يمكن تمييز عمل أحد الإطارات عن عمل آخر من خلال البحث عن الثغرات بين عمل وحدة معالجة الرسومات النشطة.
كخيار بديل، إذا كنت على دراية بالعمل الذي يتم إرساله إلى وحدة معالجة الرسومات، سيوفّر تحديد نمط بطاقات العرض المقدّمة معلومات حول وقت بدء الإطار وانتهائه.
![لقطة شاشة لإطارات متعدّدة يتم تنفيذها في تسلسل.](https://developer.android.com/static/images/agi/long-images/image9.png?authuser=6&hl=ar)
![لقطة شاشة تُكبّر فيها أداة AGI عمل إطار فردي.](https://developer.android.com/static/images/agi/long-images/image10.png?authuser=6&hl=ar)
بالنسبة إلى التطبيقات التي تتضمّن سير عمل وحدة معالجة الرسومات المشابه بشكل أكبر، يمكنك معرفة مدّة إطارات وحدة معالجة الرسومات من خلال البحث عن كلّ الإطارات التي لها submissionID نفسه في جزء التحديد لكل شريحة.
بالنسبة إلى التطبيقات التي تستند إلى Vulkan، يمكن استخدام عمليات إرسال متعددة لإنشاء إطار. تتبَّع معرّفات الإرسال باستخدام مسار Vulkan Events الذي يتضمن شريحة لكل عملية إرسال. يؤدي اختيار شريحة إرسال إلى تمييز كل شرائح نشاط وحدة معالجة الرسومات التي تتوافق مع عملية الإرسال.
![لقطة شاشة لأعباء عمل وحدة معالجة الرسومات الموازية، حيث يمكن أن يتداخل العمل على أحد الإطارات مع إطار آخر.](https://developer.android.com/static/images/agi/long-images/image11.png?authuser=6&hl=ar)
![لقطة شاشة لعدة أحداث Vulkan لإطار محدد.](https://developer.android.com/static/images/agi/long-images/image12.png?authuser=6&hl=ar)
أجهزة Adreno
على أجهزة Adreno، تظهر شرائح وحدة معالجة الرسومات في مسار قائمة انتظار وحدة معالجة الرسومات 0 ويتم تمثيلها دائمًا بشكل تسلسلي، لذا يمكنك الاطّلاع على جميع الشرائح التي تمثل تمريرات العرض للإطار واستخدامها لقياس أوقات عرض وحدة معالجة الرسومات.
![لقطة شاشة لإطارات متعدّدة يتم تنفيذها في تسلسل.](https://developer.android.com/static/images/agi/long-images/image13.png?authuser=6&hl=ar)
![لقطة شاشة يتم فيها تكبير مؤشر AGI على إطار يتضمّن عدة بطاقات عرض](https://developer.android.com/static/images/agi/long-images/image14.png?authuser=6&hl=ar)
على غرار سيناريو مالي الموضّح سابقًا: إذا كان التطبيق يستخدم Vulkan، يوفّر مسار Vulkan Events معلومات عن العمل الذي يتم إرساله لتنفيذ الإطار. لتمييز بطاقات العرض، انقر على شرائح Vulkan Events المرتبطة بالإطار.
![لقطة شاشة لتطبيق يستند إلى Vulkan مع أحداث Vulkan لإطار محدد.](https://developer.android.com/static/images/agi/long-images/image15.png?authuser=6&hl=ar)
هناك بعض السيناريوهات التي يصعب فيها تمييز حدود إطار وحدة معالجة الرسومات نظرًا إلى ارتباط التطبيق بوحدة معالجة الرسومات بشكل كبير. في هذه السيناريوهات، إذا كنت على دراية بالعمل الذي يتم إرساله إلى وحدة معالجة الرسومات، يمكنك تحديد النمط الذي يتم عرض البطاقات باستخدامه وتحديد حدود الإطار من تلك المعلومات.
![لقطة شاشة لتطبيق مرتبط بوحدة معالجة الرسومات بشكل كبير مع نمط تمرير عرض يساعد في تحديد حدود الإطار](https://developer.android.com/static/images/agi/long-images/image16.png?authuser=6&hl=ar)
عدّادات وحدة معالجة الرسومات
إذا لم تتوفر معلومات شرائح وحدة معالجة الرسومات في التتبع، يمكنك تقدير وقت إطار وحدة معالجة الرسومات باستخدام مسارات عدّاد وحدة معالجة الرسومات.
الأجهزة في مالي
على أجهزة Mali، يمكنك استخدام مسار استخدام وحدة معالجة الرسومات لتقدير وقت إطار عمل وحدة معالجة الرسومات لتطبيق لا تستهلك وحدة معالجة الرسومات في التطبيق. عندما تكون التطبيقات أقل كثافة في استخدام وحدة معالجة الرسومات، تكون لديهم فترات منتظمة من النشاط العالي والمنخفض لوحدة معالجة الرسومات، بدلاً من النشاط العالي باستمرار. لتقدير أوقات عرض إعلانات وحدة معالجة الرسومات باستخدام مسار استخدام وحدة معالجة الرسومات، يمكنك قياس مدة فترات النشاط المرتفعة في المسار.
![لقطة شاشة لمسار استخدام وحدة معالجة الرسومات ومسارات قائمة انتظار وحدة معالجة الرسومات على جهاز مالي](https://developer.android.com/static/images/agi/long-images/image17.png?authuser=6&hl=ar)
إذا كان التطبيق يستهلك وحدة معالجة الرسومات بشكل أكبر، يمكنك استخدام المسارات المجزأة وغير المجزّأة لتقدير أوقات عرض إطارات وحدة معالجة الرسومات. من خلال البحث عن أنماط في مستويات الأنشطة للمسارات الأجزاء وغير المجزأة، يمكنك الحصول على تقدير تقريبي لحدود الإطار واستخدام ذلك لقياس وقت عرض وحدة معالجة الرسومات.
![لقطة شاشة لمسارات مجزّأة وغير مجزّأة.](https://developer.android.com/static/images/agi/long-images/image18.png?authuser=6&hl=ar)
أجهزة Adreno
على أجهزة Adreno، إذا كان التطبيق لا يستهلك وحدة معالجة الرسومات (GPU)، يمكنك تقدير عدد مرّات استخدام وحدة معالجة الرسومات كما هو الحال مع أجهزة Mali في القسم السابق.
![لقطة شاشة لمسار استخدام وحدة معالجة الرسومات ومسارات قائمة انتظار وحدة معالجة الرسومات على جهاز Adreno](https://developer.android.com/static/images/agi/long-images/image19.png?authuser=6&hl=ar)
إذا كان التطبيق يستخدم وحدة معالجة رسومات أكثر كثافة، يمكنك استخدام مساري تعليمات Vertex / الثانية وتعليمات التجزئة / الثانية لتقدير أوقات عرض إطارات وحدة معالجة الرسومات. من خلال البحث عن أنماط في مستويات النشاط لهذه المسارات، يمكنك الحصول على تقدير تقريبي لمكان حدود الإطار، واستخدام ذلك لقياس وقت عرض وحدة معالجة الرسومات.
![لقطة شاشة لتعليمات Vertex / المسار الثاني](https://developer.android.com/static/images/agi/long-images/image20.png?authuser=6&hl=ar)
قد توفّر هذه المسارات الأخرى معلومات مماثلة:
- الفترات المظللة / الثانية
- أجزاء مظللة / ثانية
- النسبة المئوية لأعمدة تظليل الوقت
- النسبة المئوية للأجزاء الزمنية