पावर आँकड़े एचएएल

डिवाइस सबसिस्टम पावर को अक्सर प्रयोगशाला वातावरण में विभिन्न स्थिर-स्थिति स्थितियों के लिए मापा और रिकॉर्ड किया जाता है, जैसे कि जब स्क्रीन चालू हो, या डिवाइस निष्क्रिय पावर स्थिति में हो। यह निरंतर पावर ड्रॉ वाले उप-प्रणालियों के लिए, या उन स्थितियों के तहत काम करता है जिन्हें प्रयोगशाला वातावरण में आसानी से मापा जा सकता है, लेकिन कुछ उपयोग के मामलों के लिए नहीं, जैसे कि जब स्क्रीन एक वीडियो प्रदर्शित करती है।

IPower.hal 1.0 पावर संकेत पारित करने और सबसिस्टम स्लीप-स्टेट मेट्रिक्स पर संचयी डेटा की रिपोर्ट करने के लिए एक इंटरफ़ेस प्रदान करता है। एंड्रॉइड 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 API का उपयोग निम्नलिखित क्लाइंट द्वारा किया जाता है:

  • Statsd , प्रति-रेल बिजली खपत मेट्रिक्स एकत्र करने के लिए।
  • Perfetto , सीपीयू गतिविधि के साथ बिजली की खपत को सहसंबंधित करने के लिए।
  • Batterystats , power_profile.xml.

एंड्रॉइड 10 और उच्चतर के साथ, एक डिवाइस निर्माता IPower.hal और IPowerStats.hal फ़ंक्शंस के बीच चयन कर सकता है, लेकिन यदि IPowerStats.hal लागू नहीं किया गया है, तो सभी क्लाइंट को IPower.hal पर वापस आना होगा।

IPowerStats.hal कार्यान्वयन विकल्प

एंड्रॉइड 7 से एंड्रॉइड 9 तक केवल IPower.hal फ़ंक्शन उपलब्ध हैं। जिन डिवाइसों को एंड्रॉइड 10 में अपग्रेड किया गया है, उनमें हार्डवेयर पावर-मॉनिटरिंग सबसिस्टम, या पावर आंकड़ों की निगरानी और रिकॉर्ड करने के लिए अन्य साधन उपलब्ध होने चाहिए। कुछ SoCs आपके लिए बिजली-उपयोग के आँकड़े एकत्र करते हैं, या आप सॉफ़्टवेयर के माध्यम से बिजली-इकाई राज्य निवास जानकारी प्राप्त कर सकते हैं। पावर-मॉनिटरिंग हार्डवेयर केवल getRailInfo() , getEnergyData() , और streamEnergyData() सपोर्ट करने के लिए आवश्यक है।

यदि आप पावर-मॉनिटरिंग हार्डवेयर के बिना IPowerStats.hal लागू करते हैं, getRailInfo(), getEnergyData() और streamEnergyData() NOT_SUPPORTED लौटाते हैं। इसी तरह, getPowerEntityInfo(), getPowerEntityStateInfo() और getPowerEntityStateResidencyData() भी NOT_SUPPORTED लौटा सकते हैं यदि इसका उपयोग करने का इरादा नहीं है।

रेल-मॉनिटरिंग एपीआई द्वारा लौटाए गए डेटा के उदाहरणों में शामिल हैं

  • डिस्प्ले के लिए पावर रेल ने X µW की खपत की।
  • मॉडेम के लिए पावर रेल ने Y µW की खपत की।

सबसिस्टम स्लीप-स्टेट एपीआई द्वारा लौटाए गए डेटा के उदाहरणों में शामिल हैं

  • मॉडेम एक्स एमएस के लिए निष्क्रिय था।
  • एसओसी वाई एमएस के लिए पावर-पतन स्थिति में था।
  • Z एमएस के लिए GPU निलंबित स्थिति में था।

हार्डवेयर पावर-मॉनिटरिंग सबसिस्टम का उपयोग करें

यदि आपके डिवाइस डिज़ाइन में एक हार्डवेयर पावर-मॉनिटरिंग सबसिस्टम है, तो एक एकल sysfs नोड बनाकर IPowerStats.hal लागू करें जिससे PowerStats.hal डेटा को पार्स कर सकता है, या ioctl -टाइप सिस्टम कॉल का संग्रह बनाकर।

आपको अपने कर्नेल ड्राइवर को इस तरह से कार्यान्वित करना होगा कि संचायक अतिप्रवाह को रोका जा सके। उपयोग किया गया एल्गोरिदम आपके अद्वितीय हार्डवेयर पावर-मॉनिटरिंग सबसिस्टम डिज़ाइन पर निर्भर करता है, जिसे तात्कालिक और औसत बस वोल्टेज और वर्तमान माप दोनों प्रदान करना होगा। कर्नेल ड्राइवर को इस डेटा को इस तरह से कैप्चर करना होगा कि ऊर्जा संचायक साफ़ न हो, और उसे बूट के बाद से प्रत्येक सबरेल के लिए संचित ऊर्जा डेटा को 64-बिट वैरिएबल के रूप में बनाए रखना होगा जो कि ऊर्जा पढ़ने के साथ बढ़ता है प्रत्येक संचायक क्वेरी।

किसी दिए गए घटक (या वैकल्पिक रूप से, एकाधिक घटकों) के आँकड़े एक ही नोड में होने चाहिए। हालाँकि यह sysfs का पारंपरिक उपयोग नहीं है (जो आम तौर पर प्रत्येक नोड को एक मान तक सीमित करता है), यह सुनिश्चित करता है कि सभी डेटा सुसंगत हैं।

डिजाइन मार्गदर्शन

  • sysfs नोड से पढ़ते समय या सिस्टम कॉल करते समय विलंबता कम (1 मिसे, अधिकतम) रखें।
  • सुनिश्चित करें कि सहायक आँकड़े कार्यक्षमता से बिजली की खपत में उल्लेखनीय वृद्धि न हो:
    • स्लीप मोड में बिताए गए समय जैसे मापदंडों को ट्रैक करने के लिए एक्सेस पॉइंट (एपी) और/या सबसिस्टम वेकअप को न बढ़ाएं।
    • जब संभव हो तो अन्य ट्रैफ़िक के साथ अवसरवादी रूप से ऐप्स प्रोसेसर और फ़र्मवेयर के बीच आँकड़े स्थानांतरित करें।
  • यदि आवश्यक हो, तो सबसिस्टम निम्नलिखित ड्राइवर फ़ंक्शंस का उपयोग कर सकता है:
    • थोड़े पुराने डेटा की कीमत पर विलंबता/वेकअप से बचने के लिए डेटा को आंतरिक रूप से कैशिंग करना।
    • जब सबसिस्टम सो रहा हो तो एक्सट्रपलेशन करना, सबसिस्टम को जगाए बिना अद्यतन नींद का समय प्रदान करना।

घटक, उपप्रणाली और आँकड़े चुनें

IPowerStats.hal डेटा इकट्ठा करने के लिए कौन से घटकों या उपप्रणालियों का चयन करते समय, डिवाइस पर कुछ भी चुनें जो महत्वपूर्ण वर्तमान (5 एमए या अधिक) का उपभोग करता है, या जो कई बिजली-खपत मोड का समर्थन करता है, जैसे कि निम्नलिखित:

  • व्यक्तिगत SoC उपप्रणालियाँ।
  • सबसिस्टम आंशिक रूप से या पूरी तरह से SoC से बाहर, जैसे कि वाईफाई, इमेज प्रोसेसर, या सुरक्षा प्रोसेसर।
  • उच्च-शक्ति एलईडी और कैमरे जैसे परिधीय उपकरण।
  • पावर डोमेन जो विभिन्न मोड का उपयोग करते हैं (जैसे संपूर्ण SoC के लिए पावर डोमेन)।

अनुकूलन

यह वैकल्पिक सुविधा अनुकूलन के लिए उत्तरदायी है। उपयोग के मामले डिज़ाइन करें और अपने उपयोग को अनुकूलित करें:

  • तय करें कि कौन सी रेलिंग मापनी है और कितनी बार मापनी है।
  • तय करें कि डेटा को कब पढ़ना है और उसकी व्याख्या कैसे करनी है।
  • अपने डेटा के आधार पर तय करें कि क्या कार्रवाई करनी है और कब करनी है।

मान्यकरण

वीटीएस परीक्षण यह सुनिश्चित करते हैं कि एंड्रॉइड आवश्यकताएं पूरी हों। IPowerStats.hal में टिप्पणियों का उपयोग यह सत्यापित करने के लिए किया जाता है कि कोई उपकरण अनुपालन में है।

उदाहरण के लिए, यदि आप getRailInfo() कॉल करते हैं और यह कुछ भी नहीं लौटाता है, तो VTS परीक्षण विफल हो जाता है, क्योंकि आपको मॉनिटर की गई रेल, या SUCCESS की लौटाई गई स्थिति के बारे में जानकारी प्राप्त नहीं हुई है। इसी प्रकार, यदि आपको रेल सूचना प्राप्त हुई, लेकिन उसके साथ NON_SUPPORTED या FILE_SYSTEM_ERROR प्रतिक्रिया थी, तो यह भी एक विफलता है। VTS IPower.hal और IPowerStats.hal टिप्पणियों में आवश्यकताओं का उपयोग करके सत्यापित करता है कि डिवाइस निर्माता विनिर्देश HAL फ़ाइल में पालन किया गया है। वीटीएस परीक्षण में प्रयुक्त टिप्पणियों का एक उदाहरण नीचे दिखाया गया है:

/**
* 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);