पावर वैल्यू मेज़र करना

डिवाइस बनाने वाली कंपनियों को /frameworks/base/core/res/res/xml/power_profile.xml में कॉम्पोनेंट की पावर प्रोफ़ाइल देनी होगी.

पावर प्रोफ़ाइल की वैल्यू तय करने के लिए, ऐसे हार्डवेयर का इस्तेमाल करें जो डिवाइस के इस्तेमाल की जा रही पावर को मेज़र करता हो. साथ ही, उन अलग-अलग कार्रवाइयों को भी करता हो जिनके लिए जानकारी की ज़रूरत होती है. इन ऑपरेशन के दौरान बिजली के इस्तेमाल को मेज़र करें और वैल्यू का हिसाब लगाएं. इसके लिए, बिजली के अन्य बेसलाइन इस्तेमाल से अंतर का हिसाब लगाएं.

पावर प्रोफ़ाइल का मकसद, बैटरी खर्च होने का सही अनुमान लगाना है. इसलिए, पावर प्रोफ़ाइल की वैल्यू, ऐंपियर में दी जाती हैं. Android फ़्रेमवर्क, मौजूदा वैल्यू को उस समय से गुणा करता है जिसके लिए सबसिस्टम चालू था और mAh वैल्यू का हिसाब लगाता है. इसके बाद, इस वैल्यू का इस्तेमाल करके यह अनुमान लगाया जाता है कि ऐप्लिकेशन या सबसिस्टम ने कितनी बैटरी खर्च की.

Android 7.0 और इसके बाद के वर्शन पर चलने वाले, ब्लूटूथ, मॉडेम, और वाई-फ़ाई कंट्रोलर वाले डिवाइसों में, चिपसेट डेटा से मिली अतिरिक्त पावर वैल्यू मिल सकती हैं.

अलग-अलग तरह के सीपीयू वाले डिवाइस

अलग-अलग आर्किटेक्चर वाले सीपीयू कोर वाले डिवाइसों की पावर प्रोफ़ाइल में, ये अतिरिक्त फ़ील्ड शामिल होने चाहिए:

  • हर क्लस्टर के लिए कुल सीपीयू की संख्या (cpu.clusters.cores में दी गई).
  • हर क्लस्टर में काम करने वाली सीपीयू स्पीड.
  • हर क्लस्टर के लिए, सीपीयू की क्षमता का इस्तेमाल किया जा रहा है.

क्लस्टर के लिए, सीपीयू की चालू बिजली की खपत और काम करने वाली सीपीयू की स्पीड के बीच अंतर करने के लिए, कलेक्शन के नाम में क्लस्टर नंबर जोड़ें. क्लस्टर नंबर, कर्नेल डिवाइस ट्री में सीपीयू कोर के क्रम में असाइन किए जाते हैं. उदाहरण के लिए, अलग-अलग तरह के आर्किटेक्चर में, चार (4) कोर वाले दो (2) क्लस्टर:

  • cluster0 में cpu0-3 शामिल हैं
  • क्लस्टर1 में cpu4-7 शामिल हैं

Android फ़्रेमवर्क, इन सीपीयू कोर नंबर का इस्तेमाल तब करता है, जब वह sysfs फ़ाइलों से आंकड़े पढ़ता है: /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

क्लस्टर सीपीयू और स्पीड का उदाहरण:

<array name="cpu.active.cluster0">
<value>200</value>
<value>300</value>
<value>400</value>
</array>
<array name="cpu.speeds.cluster0">
<value>600000</value>
<value>800000</value>
<value>1200000</value>
</array>

<array name="cpu.active.cluster1">
<value>400</value>
<value>500</value>
<value>600</value>
</array>
<array name="cpu.speeds.cluster1">
<value>800000</value>
<value>1200000</value>
<value>1400000</value>
</array>

पावर वैल्यू

नीचे दी गई टेबल में, पावर वैल्यू की उपलब्ध सेटिंग के बारे में बताया गया है. AOSP में सैंपल फ़ाइल देखने के लिए, power_profile.xml देखें.

नाम ब्यौरा वैल्यू का उदाहरण नोट
ambient.on स्क्रीन बंद होने के बजाय, डोज़ मोड/ऐंबियंट मोड/हमेशा चालू रहने वाले मोड में होने पर, ज़्यादा बैटरी खर्च होती है. करीब 100 mA -
screen.on स्क्रीन की रोशनी कम से कम पर सेट होने पर, ज़्यादा बैटरी खर्च होती है. 200 mA इसमें टच कंट्रोलर और डिसप्ले बैकलाइट शामिल है. चमक 0 पर हो, न कि Android की तय सीमा पर, जो 10 या 20% होती है.
screen.full स्क्रीन की रोशनी कम से कम होने की तुलना में, ज़्यादा रोशनी होने पर ज़्यादा बिजली खर्च होती है. 100 mA-300 mA इस वैल्यू का एक हिस्सा (स्क्रीन की चमक के आधार पर) screen.on वैल्यू में जोड़ा जाता है, ताकि स्क्रीन के पावर इस्तेमाल का हिसाब लगाया जा सके.
wifi.on वाई-फ़ाई के चालू होने पर, कोई डेटा न मिलने, उसे ट्रांसमिट या स्कैन करने के दौरान इस्तेमाल होने वाली अतिरिक्त पावर. 2 mA -
wifi.active वाई-फ़ाई से डेटा भेजने या पाने के दौरान, अतिरिक्त पावर का इस्तेमाल किया जाता है. 31 mA -
वाई-फ़ाई.स्कैन वाई-फ़ाई, ऐक्सेस पॉइंट को स्कैन करते समय ज़्यादा पावर का इस्तेमाल करता है. 100 mA -
ऑडियो डीएसपी के ज़रिए ऑडियो को डिकोड/एन्कोड करने के दौरान इस्तेमाल होने वाली अतिरिक्त पावर. करीब 10 mA DSP ऑडियो के लिए उपयोग किया जाता है.
वीडियो डीएसपी की मदद से वीडियो डिकोड करते समय, अतिरिक्त पावर का इस्तेमाल किया जाता है. करीब 50 mA इसका इस्तेमाल डीएसपी वीडियो के लिए किया जाता है.
कैमरा औसत किसी सामान्य कैमरा ऐप्लिकेशन के लिए, कैमरा सबसिस्टम के हिसाब से बैटरी का औसत इस्तेमाल. 600 एमए इसे किसी ऐसे ऐप्लिकेशन के लिए अनुमानित अनुमान के तौर पर बनाया गया है जो झलक दिखाता है और हर मिनट करीब 10 फ़ुल-रिज़ॉल्यूशन वाली तस्वीरें कैप्चर करता है.
camera.flashlight चालू होने पर, कैमरा फ़्लैश मॉड्यूल के ज़रिए औसत पावर का इस्तेमाल किया जाता है. 200 mA -
gps.signalqualitybased सिग्नल की शक्ति के आधार पर GPS द्वारा उपयोग की जाने वाली अतिरिक्त पावर. यह एक ऐसी एंट्री है जिसमें कई वैल्यू होती हैं. हर सिग्नल की क्षमता के हिसाब से एक वैल्यू होती है. यह सबसे कम से लेकर सबसे ज़्यादा तक की होती है. 30 mA, 10 mA -
gps.on GPS द्वारा सिग्नल प्राप्त करते समय अतिरिक्त पावर का उपयोग किया जाता है. 50 mA -
radio.active सेल्युलर रेडियो के ट्रांसमिट/रिसीव करने पर, ज़्यादा पावर का इस्तेमाल होता है. 100 mA-300 mA -
radio.scanning सेल रेडियो के टावर को पेज करने के दौरान, अतिरिक्त पावर का इस्तेमाल किया जाता है. 1.2 mA -
radio.on मोबाइल रेडियो चालू होने पर, ज़्यादा बैटरी खर्च होती है. यह एक ऐसी एंट्री है जिसमें कई वैल्यू होती हैं. इसमें हर सिग्नल की क्वालिटी के हिसाब से एक वैल्यू होती है. जैसे, कोई सिग्नल नहीं, कमज़ोर, सामान्य, और मज़बूत. 1.2 mA कुछ रेडियो, सेल टावर खोजने और सिग्नल का पता न चलने पर, पावर बढ़ा देते हैं. सिग्नल की बढ़ती हुई क्षमता के साथ, वैल्यू एक जैसी रह सकती हैं या कम हो सकती हैं. अगर आपने सिर्फ़ एक वैल्यू दी है, तो सभी ज़रूरी शर्तों के लिए एक ही वैल्यू का इस्तेमाल किया जाता है. अगर दो वैल्यू दी जाती हैं, तो पहली वैल्यू का इस्तेमाल सिग्नल न होने पर किया जाता है. इसके बाद, दूसरी वैल्यू का इस्तेमाल सिग्नल की अन्य सभी क्षमताओं के लिए किया जाता है.
bluetooth.controller.idle ब्लूटूथ कंट्रोलर के इस्तेमाल में न होने पर, उसका औसत करंट ड्रॉ (एमए). - इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटा शीट से लिया जाता है. अगर डेटा पाने या भेजने की एक से ज़्यादा स्थितियां हैं, तो उन स्थितियों का औसत लिया जाता है. इसके अलावा, अब सिस्टम कम एनर्जी (एलई) और ब्लूटूथ स्कैन के लिए डेटा इकट्ठा करता है.

Android 7.0 और उसके बाद के वर्शन, अब ब्लूटूथ.ऐक्टिव (ब्लूटूथ A2DP से ऑडियो चलाते समय इस्तेमाल होता है) और ब्लूटूथ.on (ब्लूटूथ चालू होने पर भी इस्तेमाल में नहीं होने पर) के लिए ब्लूटूथ पावर वैल्यू का इस्तेमाल नहीं करते.
ब्लूटूथ.कंट्रोलर.rx रिसीव करते समय ब्लूटूथ कंट्रोलर का औसत मौजूदा ड्रॉ (mA). -
bluetooth.controller.tx ट्रांसमिट करते समय, ब्लूटूथ कंट्रोलर का औसत करंट ड्रॉ (mA). -
bluetooth.controller.voltage ब्लूटूथ कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). -
modem.controller.sleep निष्क्रिय रहने पर मॉडम कंट्रोलर का औसत मौजूदा ड्रॉ (mA). 0 mA इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटाशीट से लिया जाता है. अगर पेमेंट पाने वाले एक से ज़्यादा राज्यों के नाम हैं, तो उन राज्यों का औसत निकाला जाएगा. अगर ट्रांसमिट की कई स्थितियां हैं, तो Android 9 से हर ट्रांसमिट स्टेटस के लिए वैल्यू तय की जा सकती है.
modem.controller.idle कुछ समय तक इस्तेमाल में न होने पर, मॉडम कंट्रोलर का औसत मौजूदा ड्रॉ (mA). -
modem.controller.rx डेटा पाने के दौरान, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (mA). -
modem.controller.tx अलग-अलग आरएफ़ पावर लेवल पर ट्रांसमिट करते समय, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (एमए). यह एक ऐसी एंट्री है जिसमें एक से ज़्यादा वैल्यू होती हैं. इसमें हर ट्रांसमिट पावर लेवल के लिए एक वैल्यू होती है. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
modem.controller.voltage मॉडेम कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). -
wifi.controller.idle डिवाइस कुछ समय इस्तेमाल न होने पर, वाई-फ़ाई कंट्रोलर का औसत मौजूदा ड्रॉ (mA). - ये वैल्यू अनुमानित नहीं हैं, लेकिन इन्हें कंट्रोलर की डेटा शीट से लिया गया है. अगर एक से ज़्यादा राज्यों या राज्यों के डेटा को पाने या ट्रांसमिट करने की संख्या एक से ज़्यादा है, तो उन राज्यों का औसत निकाला जाता है.
wifi.controller.rx डेटा पाने के दौरान, Wi-Fi कंट्रोलर का औसत करंट ड्रॉ (एमए). -
wifi.controller.tx ट्रांसमिशन के समय वाई-फ़ाई कंट्रोलर का औसत करंट ड्रॉ (mA). -
wifi.controller.voltage Wi-Fi कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). -
सीपीयू की स्पीड यह एक ऐसी एंट्री है जिसमें कई वैल्यू होती हैं. इसमें सीपीयू की हर संभावित स्पीड को केएचज़ में दिखाया जाता है. 125,000 किलोहर्ट्ज़, 250,000 किलोहर्ट्ज़, 500,000 किलोहर्ट्ज़, 1,000,000 किलोहर्ट्ज़, 1,500,000 किलोहर्ट्ज़ एंट्री की संख्या और क्रम, cpu.active में मौजूद mA एंट्री से मेल खाना चाहिए.
cpu.idle जब सीपीयू (और SoC) सिस्टम के 'रोका गया' मोड में होते हैं, तब सिस्टम की कुल खपत होने वाली बिजली. 3 mA -
CPU.awake जब सीपीयू का शेड्यूल इस्तेमाल में न होने की स्थिति में होता है, तो अतिरिक्त पावर (कर्नेल आइडल लूप) का इस्तेमाल होता है. सिस्टम, सिस्टम की निलंबन वाली स्थिति में नहीं है. 50 mA आपके प्लैटफ़ॉर्म पर, एक से ज़्यादा आइडल स्टेटस इस्तेमाल में हो सकते हैं. इनमें बिजली की खपत के अलग-अलग लेवल होते हैं. शेड्यूलर के आइडल रहने की लंबी अवधि (कई मिलीसेकंड) के लिए, कोई प्रतिनिधि आइडल स्टेटस चुनें. अपने मेज़रमेंट उपकरण पर पावर ग्राफ़ की जांच करें और ऐसे सैंपल चुनें जिनमें सीपीयू की खपत सबसे कम हो. साथ ही, ऐसे सैंपल हटा दें जिनमें सीपीयू, आइडल मोड से बाहर निकला हो.
सीपीयू चालू अलग-अलग स्पीड पर काम करते समय, सीपीयू की खपत होने वाली अतिरिक्त ऊर्जा. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA वैल्यू से पता चलता है कि अलग-अलग स्पीड पर चलने के दौरान, सीपीयू रेल कितनी पावर का इस्तेमाल करती हैं. अनुमति वाली हर स्पीड के लिए, कर्नेल में सबसे ज़्यादा स्पीड सेट करें और सीपीयू को उस स्पीड पर सेट करें. एंट्री की संख्या और क्रम, cpu.speeds में मौजूद एंट्री की संख्या और क्रम के हिसाब से होता है.
cpu.clusters.cores हर सीपीयू क्लस्टर में मौजूद कोर की संख्या. 4, 2 यह सिर्फ़ उन डिवाइसों के लिए ज़रूरी है जिनमें अलग-अलग तरह के सीपीयू आर्किटेक्चर हैं. एंट्री और ऑर्डर की संख्या, cpu.active और cpu.speeds के लिए क्लस्टर की एंट्री की संख्या से मेल खानी चाहिए. पहली एंट्री, क्लस्टर0 में सीपीयू कोर की संख्या दिखाती है, दूसरी एंट्री, क्लस्टर1 में सीपीयू कोर की संख्या दिखाती है, और इसी तरह आगे की एंट्री भी दिखाती हैं.
battery.capacity mAh में बैटरी की कुल क्षमता. 3000 mAh -

ब्लूटूथ स्मार्ट (बीएलई) और ब्लूटूथ स्कैन

Android 7.0 वाले डिवाइसों के लिए, सिस्टम लो एनर्जी (LE) स्कैन और ब्लूटूथ नेटवर्क ट्रैफ़िक (जैसे, RFCOMM और L2CAP) का डेटा इकट्ठा करता है. साथ ही, इन गतिविधियों को शुरू करने वाले ऐप्लिकेशन से जोड़ता है. ब्लूटूथ स्कैन, स्कैन शुरू करने वाले ऐप्लिकेशन से जुड़े होते हैं, लेकिन एक साथ कई डिवाइसों को स्कैन करने की सुविधा, ब्लूटूथ ऐप्लिकेशन से जुड़ी होती है. ऐप्लिकेशन को N मिलीसेकंड तक स्कैन करने के लिए, स्कैन की लागत N मिलीसेकंड है rx समय और N मिलीसेकंड tx समय; कंट्रोलर डेटा के बचे हुए समय को नेटवर्क ट्रैफ़िक या ब्लूटूथ ऐप्लिकेशन को असाइन किया जाता है.