ادارة الأداء

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

الأداء المستدام

بالنسبة للتطبيقات طويلة التشغيل (الألعاب، والكاميرا، وRenderScript ، ومعالجة الصوت)، يمكن أن يختلف الأداء بشكل كبير مع الوصول إلى حدود درجة حرارة الجهاز واختناق محركات النظام الموجود على الشريحة (SoC). مطورو التطبيقات الذين يقومون بإنشاء تطبيقات عالية الأداء وطويلة التشغيل محدودون لأن إمكانيات النظام الأساسي الأساسي تصبح هدفًا متحركًا عندما يبدأ الجهاز في التسخين.

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

بنيان

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

الشكل 1. بنية وضع الأداء المستدام

تطبيق

لدعم الأداء المستمر في Android 7.0 والإصدارات الأحدث، يجب على مصنعي المعدات الأصلية:

  • قم بإجراء تغييرات خاصة بالجهاز على طبقة الطاقة HAL إما لقفل الحد الأقصى من ترددات وحدة المعالجة المركزية/وحدة معالجة الرسومات أو إجراء تحسينات أخرى لمنع الاختناق الحراري.
  • قم بتنفيذ التلميح الجديد POWER_HINT_SUSTAINED_PERFORMANCE في power HAL.
  • قم بإعلان الدعم عن طريق إرجاع TRUE من خلال isSustainedPerformanceModeSupported() API.
  • قم بتنفيذ Window.setSustainedPerformanceMode .

في تطبيق Nexus المرجعي، يحدد تلميح الطاقة الحد الأقصى لترددات وحدة المعالجة المركزية ووحدة معالجة الرسومات على أعلى المستويات المستدامة. ضع في اعتبارك أن خفض شريط MAX في تردد وحدة المعالجة المركزية/وحدة معالجة الرسومات سيؤدي إلى خفض معدل الإطارات، ولكن هذا المعدل الأقل مفضل في هذا الوضع نظرًا لاستدامته. على سبيل المثال، قد يتمكن الجهاز الذي يستخدم الحد الأقصى للساعات العادية من العرض بمعدل 60 إطارًا في الثانية لبضع دقائق، ولكن بعد تسخين الجهاز، قد ينخفض ​​إلى 30 إطارًا في الثانية بنهاية 30 دقيقة. عند استخدام الوضع المستدام، يمكن للجهاز، على سبيل المثال، العرض باستمرار بمعدل 45 إطارًا في الثانية لمدة 30 دقيقة كاملة. الهدف هو معدل إطارات عند استخدام الوضع يكون مرتفعًا (أو أعلى) من معدل الإطارات عند عدم استخدام الوضع، ويكون ثابتًا بمرور الوقت حتى لا يضطر المطورون إلى مطاردة هدف متحرك.

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

ملاحظة : لا يلزم تحديد الحد الأقصى لمعدلات الساعة لتنفيذ الوضع المستدام.

تصديق

يمكن لمصنعي المعدات الأصلية استخدام اختبار CTS (Android 7.0 والإصدارات الأحدث) للتحقق من تنفيذهم لواجهة برمجة تطبيقات الأداء المستدام. يقوم الاختبار بتنفيذ عبء عمل لمدة 30 دقيقة تقريبًا ويقيس الأداء مع تمكين الوضع المستمر وبدونه:

  • مع تمكين الوضع المستدام، يجب أن يظل معدل الإطارات ثابتًا نسبيًا (يقيس الاختبار النسبة المئوية للتغير في معدل الإطارات بمرور الوقت ويتطلب تغييرًا بنسبة <5%).
  • مع تمكين الوضع المستدام، يجب ألا يكون معدل الإطارات أقل من معدل الإطارات في نهاية 30 دقيقة مع تعطيل الوضع.

بالإضافة إلى ذلك، يمكنك اختبار التنفيذ يدويًا باستخدام العديد من أحمال العمل التي تتطلب استخدام وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) للتأكد من عدم اختناق الجهاز حرارياً بعد 30 دقيقة من الاستخدام. في الاختبار الداخلي، استخدمنا نماذج لأحمال العمل بما في ذلك الألعاب وتطبيقات قياس الأداء (على سبيل المثال gfxbench ).

النوى الحصرية

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

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

لدعم النواة الحصرية على الجهاز:

  • قم بتمكين cpusets وتكوين cpuset المركزية التي تحتوي فقط على التطبيق الأمامي العلوي.
  • تأكد من حجز نواة واحدة (هذا هو النواة الحصرية) لسلاسل الرسائل من cpuset هذه.
  • قم بتطبيق getExclusiveCores API لإرجاع الرقم الأساسي للنواة الحصرية.

لتحديد العمليات التي تمت جدولتها على أي من النوى، استخدم systrace أثناء تشغيل أي حمل عمل وتحقق من عدم جدولة أي سلاسل عمليات لمساحة المستخدم من تطبيقات أخرى غير التطبيق الأمامي العلوي على النواة الحصرية.

لعرض تطبيق مرجعي لجهاز Nexus 6P، راجع android//device/huawei/angler/power/power.c .