إدارة الأداء

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

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

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

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

هندسة معمارية

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

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

التنفيذ

لدعم الأداء المستمر في الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث، على المصنّعين الأصليّين للأجهزة إجراء ما يلي:

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

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

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

ملاحظة: ليس من الضروري وضع حد أقصى لمعدلات الساعة القصوى لتطبيق الوضع المستدام.

التحقُّق

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

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

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

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

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

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

لتفعيل معالج مركزي حصري على جهاز:

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

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

للاطّلاع على مرجع تنفيذ لجهاز Nexus 6P، يُرجى الرجوع إلى android//device/huawei/angler/power/power.c.