إحصاءات الطاقة HAL

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

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

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

IPower.hal وIPowerStats.hal

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

  • لتنفيذ قياسات الطاقة على مستوى السكك الحديدية للترددات المنخفضة (getRailInfo) وبتردد عالٍ (streamEnergyData) العملاء، وتقارير الطاقة المتراكمة منذ التشغيل.
  • تعمل هذه السياسة على إعداد التقارير عن المعلومات ذات الصلة بكل PowerEntity متوافق تتوفّر له بيانات. PowerEntity هو نظام فرعي للنظام الأساسي أو نطاق ملحق أو نطاق طاقة يؤثر على استهلاك طاقة الجهاز.
  • تُبلِغ عن مجموعة حالات كيانات الطاقة (getPowerEntityStateInfo). التي توفر لها الكيانات المحددة بيانات إقامة، ثم تقدم تقارير البيانات المجمّعة لكل PowerEntity محدّد

يستخدم العملاء التاليون واجهات برمجة التطبيقات IPowerStats.hal:

  • Statsd، لجمع مقاييس استهلاك الطاقة لكل قطار.
  • Perfetto، لربط استهلاك الطاقة بوحدة المعالجة المركزية الأخرى.
  • Batterystats، لتحسين إحالة البطارية باستخدام نموذج تم قياسه البيانات بدلاً من تقدير استهلاك البطارية من خلال ثوابت محددة مسبقًا في power_profile.xml.

باستخدام نظام التشغيل Android 10 والإصدارات الأحدث، يمكن للشركة المصنّعة للجهاز الاختيار من بين دالتي IPower.hal وIPowerStats.hal، ولكن يجب أن يعود جميع العملاء إلى IPower.hal إذا لم يتم تنفيذ IPowerStats.hal .

خيارات تنفيذ IPowerStats.hal

لا تتوفّر سوى وظائف IPower.hal على نظام التشغيل Android 7. حتى إصدار Android 9. يجب أن تتم ترقية الأجهزة التي تمت ترقيتها إلى Android 10 أو لديها نظام فرعي للأجهزة لمراقبة الطاقة، أو غير ذلك من الوسائل المتاحة للمراقبة وتسجيل إحصاءات القوة. تجمع بعض تقنيات المنظومة على الرقاقة (SoCs) إحصاءات استخدام الطاقة نيابةً عنك، أو يمكنك الحصول على الإقامة في حالة كيان السلطة المعلومات من خلال البرنامج. أجهزة مراقبة الطاقة ضرورية فقط التوافق مع getRailInfo() وgetEnergyData() streamEnergyData()

في حال تنفيذ IPowerStats.hal بدون مراقبة الطاقة والأجهزة getRailInfo(), getEnergyData() إرجاع streamEnergyData(): NOT_SUPPORTED وبالمثل، getPowerEntityInfo(), getPowerEntityStateInfo()، getPowerEntityStateResidencyData()قد يعود أيضًا NOT_SUPPORTED إذا لم يكن الغرض منه استخدامها.

تتضمن أمثلة البيانات التي تعرضها واجهات برمجة تطبيقات مراقبة السكك الحديدية

  • استهلك قطار الطاقة للشاشة X ميكرو واط.
  • استهلك مسار الطاقة الخاص بالمودم Y ميكرو واط.

تشمل أمثلة البيانات التي تعرضها واجهات برمجة التطبيقات لحالة السكون للنظام الفرعي ما يلي:

  • كان المودم في وضع السكون لمدة X ملي ثانية.
  • كانت المنظومة على الرقاقة في حالة انهيار الطاقة بالنسبة لـ Y ملي ثانية.
  • كانت وحدة معالجة الرسومات في حالة التعليق لعدد Z ملي ثانية.

استخدام نظام فرعي للأجهزة لمراقبة الطاقة

إذا كان تصميم الجهاز يتضمن نظامًا فرعيًا للأجهزة لمراقبة الطاقة، فابدأ IPowerStats.hal عن طريق إنشاء عقدة sysfs واحدة التي بإمكان "PowerStats.hal" تحليل البيانات منها، أو من خلال إنشاء مجموعة من طلبات النظام من نوع ioctl.

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

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

إرشادات التصميم

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

اختيار المكونات والأنظمة الفرعية والإحصاءات

عند اختيار المكونات أو الأنظمة الفرعية التي سيتم جمع بيانات IPowerStats.hal: يمكنك اختيار أي عنصر على الجهاز يتم استهلاكه. التيار الكبير (5 ملّي أمبير أو أكثر) أو يدعم أوضاع استهلاك الطاقة المتعددة، مثل ما يلي:

  • الأنظمة الفرعية للمنظومة على الرقاقة (SoC) الفردية.
  • والأنظمة الفرعية خارج المنظومة على الرقاقة، مثل WiFi، أو معالج الصور أو معالج الأمان.
  • الأجهزة المُلحقة مثل مصابيح LED العالية الطاقة والكاميرات
  • نطاقات الطاقة التي تستخدم أوضاعًا مختلفة (مثل نطاق الطاقة للمنظومة على الرقاقة (SoC) ككل)

التخصيص

هذه الميزة الاختيارية قابلة للتخصيص. حالات الاستخدام للتصميم وتخصيص طريقة الاستخدام:

  • حدِّد القضبان التي سيتم قياسها، ووتيرة قياسها.
  • تحديد متى تتم قراءة البيانات وكيفية تفسيرها.
  • تحديد الإجراء المطلوب اتخاذه والوقت المناسب لاتخاذها، وذلك استنادًا إلى بياناتك.

التحقُّق

تضمن اختبارات VTS استيفاء متطلبات Android. التعليقات في تُستخدم IPowerStats.hal للتحقّق من وجود جهاز. الامتثال.

على سبيل المثال، إذا استدعيت getRailInfo() ولم تظهر أي نتائج، فشل اختبار VTS، لأنك لم تتلقَ معلومات حول القضبان، أو الحالة التي تم إرجاعها بقيمة SUCCESS. وبالمثل، إذا تلقيت معلومات السكك الحديدية، ولكن كانت مصحوبة بـ NON_SUPPORTED أو استجابة FILE_SYSTEM_ERROR، وهذا خطأ أيضًا. فيديو VTS التحقق من الالتزام بمواصفات الشركة المصنعة للجهاز في ملف HAL، باستخدام المتطلبات في تعليقات IPower.hal وIPowerStats.hal. إنّ في ما يلي مثال على التعليقات المستخدَمة في اختبار VTS:

/**
* Rail information:
* Reports information related to the rails being monitored.
*
* @return rails Information about monitored rails.
* @return status SUCCESS on success or NOT_SUPPORTED if
* feature is not enabled or FILESYSTEM_ERROR on filesystem nodes
* access error.
*/
getRailInfo()
generates(vec<e;RailInfo>e; rails, Status status);