فحص سرعة عرض وحدة معالجة الرسومات والتجاوز

يتضمّن نظام التشغيل Android بعض خيارات المطوّرين على الجهاز التي تساعدك في تحديد المشاكل المحتملة في عرض واجهة المستخدم لتطبيقك، مثل تنفيذ عمليات عرض أكثر من اللازم أو تنفيذ عمليات طويلة في سلسلة التعليمات ووحدة معالجة الرسومات. توضّح هذه الصفحة كيفية تصحيح أخطاء تجاوز حدّ وحدة معالجة الرسومات ورسم مخطط لعرض GPU.

لمزيد من المعلومات حول خيارات المطوّرين على الجهاز، بما في ذلك كيفية تفعيلها، يمكنك الاطّلاع على ضبط خيارات المطوّرين على الجهاز.

رسم مخطط لعرض سرعة عرض الرسومات في وحدة معالجة الرسومات

تعرض أداة "رسم مخطط لعرض GPU"، كمدرج تكراري قابل للتمرير، تمثيلاً مرئيًا للمدة التي يستغرقها عرض لقطات نافذة واجهة المستخدم مقارنةً بمقياس أداء يبلغ 16.67 ملي ثانية لكل لقطة.

في وحدات معالجة الرسومات الأقل قوة، يمكن أن يكون معدل التعبئة المتاح (السرعة التي يمكن لوحدة معالجة الرسومات أن تملأ بها مخزن الإطارات) منخفضًا جدًا. مع زيادة عدد وحدات البكسل المطلوبة لرسم إطار، قد تستغرق وحدة معالجة الرسومات وقتًا أطول لمعالجة الأوامر الجديدة، ما يؤدي إلى انتظار بقية النظام إلى أن تتمكّن وحدة معالجة الرسومات من مواكبة ذلك.

تساعدك أداة إنشاء الملفات الشخصية في تحديد الحالات التي تكون فيها وحدة معالجة الرسومات مثقلة بمحاولة رسم وحدات البكسل أو مثقلة بالرسم الزائد.

تفعيل أداة تحليل الأداء

قبل البدء، تأكَّد من استخدام جهاز يعمل بالإصدار 4.1 من نظام التشغيل Android (المستوى 16 لواجهة برمجة التطبيقات) أو إصدار أحدث، ومن تفعيل خيارات المطوّرين. لبدء تسجيل بيانات عرض وحدة معالجة الرسومات على الجهاز أثناء استخدام تطبيقك، اتّبِع الخطوات التالية:

  1. على جهازك، انتقِل إلى الإعدادات وانقر على خيارات المطوّرين.
  2. في قسم المراقبة، اختَر رسم مخطط لعرض GPU أو عرض ملف التعريف HWUI، حسب إصدار Android المثبَّت على الجهاز.
  3. في مربّع الحوار "عرض رسومات وحدة معالجة الرسومات"، اختَر على الشاشة كأشرطة لتراكب الرسوم البيانية على شاشة جهازك.
  4. افتح التطبيق الذي تريد إنشاء ملف تعريف له.

فحص الناتج

في الصورة المكبّرة للرسم البياني "عرض الرسومات لوحدة معالجة الرسومات في الملف الشخصي" الموضّحة في الشكل 1، يمكنك الاطّلاع على القسم الملوّن، كما هو معروض على الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات).

الشكل 1. تم تكبير الرسم البياني "عرض رسومات GPU" في الملف الشخصي.

في ما يلي بعض الملاحظات حول الناتج:

  • بالنسبة إلى كل تطبيق مرئي، تعرض الأداة رسمًا بيانيًا.
  • يمثّل كل شريط عمودي على طول المحور الأفقي إطارًا، ويمثّل ارتفاع كل شريط عمودي مقدار الوقت الذي استغرقه عرض الإطار (بالمللي ثانية).
  • يمثّل الخط الأخضر الأفقي 16.67 ملي ثانية. لتحقيق 60 لقطة في الثانية، يجب أن يبقى الشريط العمودي لكل لقطة تحت هذا الخط. في أي وقت يتجاوز فيه أحد الأشرطة هذا الخط، قد تحدث فواصل في الرسوم المتحركة.
  • تُبرز الأداة اللقطات التي تتجاوز الحدّ الأدنى البالغ 16.67 ملي ثانية من خلال جعل الشريط المقابل أعرض وأقل شفافية.
  • يحتوي كل شريط على مكوّنات ملوّنة تتوافق مع مرحلة في مسار العرض. يختلف عدد المكوّنات حسب مستوى واجهة برمجة التطبيقات للجهاز.

يقدّم الجدول التالي أوصافًا لكل جزء من شريط عمودي في ناتج أداة تحليل الأداء عند استخدام جهاز يعمل بالإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث.

مكوّن الشريطمرحلة العرضالوصف
Swap Buffers تمثّل هذه السمة الوقت الذي تنتظر فيه وحدة المعالجة المركزية (CPU) وحدة معالجة الرسومات (GPU) لإنهاء عملها. إذا أصبح هذا الشريط طويلاً، يعني ذلك أنّ التطبيق يفرض عبئًا كبيرًا على وحدة معالجة الرسومات.
مشكلة في الأمر تمثّل هذه السمة الوقت الذي استغرقه عارض ثنائي الأبعاد في نظام التشغيل Android في إصدار أوامر إلى OpenGL لرسم وإعادة رسم قوائم العرض. يتناسب ارتفاع هذا الشريط طرديًا مع مجموع الوقت الذي تستغرقه كل قائمة عرض في التنفيذ، أي أنّ المزيد من قوائم العرض يؤدي إلى ظهور شريط أحمر أطول.
المزامنة والتحميل تمثّل هذه السمة الوقت المستغرَق في تحميل معلومات الصورة النقطية إلى وحدة معالجة الرسومات. يشير الجزء الكبير إلى أنّ التطبيق يستغرق وقتًا طويلاً لتحميل كميات كبيرة من الرسومات.
رسم تمثّل هذه السمة الوقت المستخدَم لإنشاء قوائم العرض الخاصة بطريقة العرض وتعديلها. إذا كان هذا الجزء من الشريط طويلاً، قد يكون هناك الكثير من عمليات رسم العرض المخصّص، أو الكثير من العمليات في طرق onDraw.
القياس / التنسيق تمثّل هذه السمة مقدار الوقت المستغرَق في عمليات رد الاتصال onLayout وonMeasure في بنية العرض الهرمية. يشير الجزء الكبير إلى أنّ معالجة التسلسل الهرمي للعرض تستغرق وقتًا طويلاً.
التعامل مع الإدخال والحركة تمثّل هذه السمة مقدار الوقت المستغرَق في تقييم جميع عناصر الرسوم المتحركة التي تم تشغيلها في هذا الإطار ومعالجة جميع عمليات معاودة الاتصال الخاصة بالإدخال. إذا كان هذا الجزء كبيرًا، قد يشير ذلك إلى أنّ أداة تحريك مخصّصة أو دالة ردّ اتصال للإدخال تستغرق وقتًا طويلاً جدًا في المعالجة. يحدث أيضًا عادةً ربط عرض البيانات أثناء التمرير، مثل RecyclerView.Adapter.onBindViewHolder()، خلال هذا المقطع، وهو مصدر أكثر شيوعًا لعمليات التباطؤ في هذا المقطع.
الوقت المنقضي / تأخير VSync تمثّل هذه السمة الوقت الذي يستغرقه التطبيق في تنفيذ العمليات بين إطارَين متتاليَين. قد يكون ذلك مؤشرًا على أنّ هناك الكثير من عمليات المعالجة التي تتم في سلسلة التعليمات الخاصة بواجهة المستخدم، ويمكن نقلها إلى سلسلة تعليمات أخرى.

الجدول 1. أشرطة المكوّنات في الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث

تتضمّن إصدارات Android بين 4.0 (المستوى 14 من واجهة برمجة التطبيقات) و5.0 (المستوى 21 من واجهة برمجة التطبيقات) أقسامًا باللون الأزرق والأرجواني والأحمر والبرتقالي. لا تتضمّن إصدارات Android الأقدم من 4.0 سوى المكوّنات الأزرق والأحمر والبرتقالي. يعرض الجدول التالي أشرطة المكوّنات في الإصدارَين 4.0 و5.0 من نظام التشغيل Android.

مكوّن الشريطمرحلة العرضالوصف
معالجة تمثّل هذه السمة الوقت الذي تنتظر فيه وحدة المعالجة المركزية (CPU) وحدة معالجة الرسومات (GPU) لإنهاء عملها. إذا أصبح هذا الشريط طويلاً، يعني ذلك أنّ التطبيق يفرض عبئًا كبيرًا على وحدة معالجة الرسومات.
تنفيذ تمثّل هذه السمة الوقت الذي استغرقه عارض ثنائي الأبعاد في نظام التشغيل Android في إصدار أوامر إلى OpenGL لرسم وإعادة رسم قوائم العرض. يتناسب ارتفاع هذا الشريط طرديًا مع مجموع الوقت الذي تستغرقه كل قائمة عرض في التنفيذ، أي أنّ المزيد من قوائم العرض يؤدي إلى ظهور شريط أحمر أطول.
XFer تمثّل هذه السمة الوقت المستغرَق لتحميل معلومات الصورة النقطية إلى وحدة معالجة الرسومات. يشير الجزء الكبير إلى أنّ التطبيق يستغرق وقتًا طويلاً لتحميل كميات كبيرة من الرسومات. لا يظهر هذا القسم على الأجهزة التي تعمل بالإصدار 4.0 من نظام التشغيل Android أو الإصدارات الأقدم.
تعديل تمثّل هذه السمة الوقت المستخدَم لإنشاء قوائم العرض الخاصة بطريقة العرض وتعديلها. إذا كان هذا الجزء من الشريط طويلاً، قد يكون هناك الكثير من عمليات رسم العرض المخصّص، أو الكثير من العمليات في طرق onDraw.

الجدول 2. أشرطة المكوّنات في الإصدارَين 4.0 و5.0 من نظام التشغيل Android

لمزيد من المعلومات حول كيفية تفسير المعلومات التي تقدّمها أداة إنشاء الملفات، يمكنك الاطّلاع على مقالة التحليل باستخدام أداة "رسم مخطط لعرض GPU".

ملاحظة: على الرغم من أنّ اسم هذه الأداة هو "رسم مخطط لعرض GPU"، فإنّ جميع العمليات التي تتم مراقبتها تحدث في وحدة المعالجة المركزية. يتم العرض من خلال إرسال أوامر إلى وحدة معالجة الرسومات، وتعرض وحدة معالجة الرسومات الشاشة بشكل غير متزامن. في بعض الحالات، قد يكون لدى وحدة معالجة الرسومات الكثير من المهام التي يجب إنجازها، وسيكون على وحدة المعالجة المركزية الانتظار قبل أن تتمكّن من إرسال أوامر جديدة. في هذه الحالة، ستلاحظ ارتفاعات في الشريطَين البرتقالي والأحمر، وسيتم حظر إرسال الأمر إلى أن يتم توفير مساحة أكبر في قائمة انتظار أوامر وحدة معالجة الرسومات.

عرض استخدام GPU الزائد

تساعدك ميزة أخرى في خيارات المطوّرين على تحديد الرسم الزائد من خلال ترميز واجهة المستخدم بالألوان. يحدث الرسم الزائد عندما يرسم تطبيقك البكسل نفسه أكثر من مرة في الإطار نفسه. لذا، يوضّح هذا التمثيل المرئي الأماكن التي قد يبذل فيها تطبيقك مجهودًا أكبر من اللازم في العرض، ما قد يؤدي إلى حدوث مشكلة في الأداء بسبب المجهود الإضافي الذي تبذله وحدة معالجة الرسومات لعرض وحدات البكسل التي لن يراها المستخدم. لذلك، عليك إصلاح أحداث الرسم الزائد كلما أمكن ذلك.

إذا لم يسبق لك إجراء ذلك، فعِّل خيارات المطوّرين. بعد ذلك، لتصوُّر الرسم الزائد على جهازك، اتّبِع الخطوات التالية:

  1. على جهازك، انتقِل إلى الإعدادات وانقر على خيارات المطوّرين.
  2. انتقِل للأسفل إلى قسم عرض المحتوى باستخدام مسرِّع الأجهزة، واختر تصحيح أخطاء الرسم الزائد لوحدة معالجة الرسومات.
  3. في مربّع الحوار تصحيح تجاوز حد وحدة معالجة الرسومات، انقر على عرض المناطق التي تتجاوز الحد.

تلوّن Android عناصر واجهة المستخدم لتحديد مقدار الرسم الزائد على النحو التالي:

  • اللون الحقيقي: لا يوجد رسم زائد
  • أزرق: تم تجاوز الحد المسموح به مرة واحدة
  • أخضر: السحب على المكشوف مرّتين
  • اللون الوردي: السحب على المكشوف 3 مرات
  • أحمر: السحب على المكشوف 4 مرات أو أكثر

الشكل 2. تطبيق كما يظهر عادةً (على اليمين)، وكما يظهر عند تفعيل ميزة "استخدام GPU الزائد" (على اليسار)

يُرجى العِلم أنّ هذه الألوان شبه شفافة، لذا يعتمد اللون الدقيق الذي يظهر على الشاشة على محتوى واجهة المستخدم.

بعد أن أصبحت تعرف موضع حدوث الرسم الزائد في التصميم، يمكنك الاطّلاع على كيفية تقليل الرسم الزائد.

تذكَّر أنّ بعض السحب على المكشوف لا يمكن تجنُّبه. أثناء ضبط واجهة مستخدم تطبيقك، حاوِل الوصول إلى تمثيل مرئي يعرض ألوانًا صحيحة في الغالب أو رسمًا متكررًا بمقدار مرة واحدة فقط (باللون الأزرق).

الشكل 3. أمثلة على تطبيق يتضمّن الكثير من عمليات الرسم الزائد (على اليمين) وعمليات رسم زائد أقل بكثير (على اليسار)