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

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

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

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

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

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

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

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

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

  • cluster0 में cpu0-3 शामिल हैं
  • cluster1 में 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 -
wifi.scan ऐक्सेस पॉइंट स्कैन करने के दौरान, वाई-फ़ाई ज़्यादा बैटरी खर्च करता है. 100 mA -
ऑडियो डीएसपी के ज़रिए ऑडियो डिकोड/एन्कोड करने पर, ज़्यादा बैटरी खर्च होती है. करीब 10 mA इस कुकी का इस्तेमाल, डीएसपी ऑडियो के लिए किया जाता है.
वीडियो डीएसपी के ज़रिए वीडियो डिकोड करने पर, ज़्यादा बैटरी खर्च होती है. करीब 50 mA इसका इस्तेमाल, डीएसपी वीडियो के लिए किया जाता है.
camera.avg किसी सामान्य कैमरा ऐप्लिकेशन के लिए, कैमरा सबसिस्टम के ज़रिए इस्तेमाल की गई औसत ऊर्जा. 600 मि॰ए॰ यह अनुमान, प्रीव्यू चलाने वाले और हर मिनट में करीब 10 फ़ुल-रिज़ॉल्यूशन वाली फ़ोटो कैप्चर करने वाले ऐप्लिकेशन के लिए है.
camera.flashlight कैमरे का फ़्लैश चालू होने पर, फ़्लैश मॉड्यूल की औसत बैटरी खपत. 200 mA -
gps.signalqualitybased सिग्नल की क्वालिटी के आधार पर, जीपीएस के ज़रिए इस्तेमाल की गई अतिरिक्त बैटरी. यह एक से ज़्यादा वैल्यू वाली एंट्री है. इसमें हर सिग्नल की स्ट्रेंथ के लिए एक वैल्यू दी जाती है. वैल्यू, सबसे कम से लेकर सबसे ज़्यादा सिग्नल स्ट्रेंथ के हिसाब से दी जाती है. 30 mA, 10 mA -
gps.on जीपीएस सिग्नल मिलने पर, बैटरी ज़्यादा खर्च होती है. 50 mA -
radio.active सेल्युलर रेडियो के डेटा भेजने/पाने के दौरान, बैटरी का ज़्यादा इस्तेमाल होता है. 100 mA-300 mA -
radio.scanning जब सेल्युलर रेडियो, टावर को पेज कर रहा होता है, तब ज़्यादा बैटरी खर्च होती है. 1.2 mA -
radio.on सेलुलर रेडियो चालू होने पर, बैटरी ज़्यादा खर्च होती है. यह एक से ज़्यादा वैल्यू वाली एंट्री है. इसमें सिग्नल की हर स्थिति के लिए एक वैल्यू दी जाती है. जैसे, कोई सिग्नल नहीं है, कमज़ोर सिग्नल है, सामान्य सिग्नल है, और मज़बूत सिग्नल है. 1.2 mA कुछ रेडियो, सेल टावर ढूंढते समय ज़्यादा बैटरी खर्च करते हैं. ऐसा तब होता है, जब उन्हें सिग्नल नहीं मिलता. सिग्नल की क्वालिटी बढ़ने पर, वैल्यू एक जैसी हो सकती हैं या कम हो सकती हैं. सिर्फ़ एक वैल्यू देने पर, सभी के लिए एक ही वैल्यू का इस्तेमाल किया जाता है. दो वैल्यू देने पर, पहली वैल्यू का इस्तेमाल नो-सिग्नल के लिए किया जाता है. दूसरी वैल्यू का इस्तेमाल अन्य सभी सिग्नल के लिए किया जाता है. इसी तरह, अन्य वैल्यू का इस्तेमाल किया जाता है.
bluetooth.controller.idle ब्लूटूथ कंट्रोलर के इस्तेमाल में न होने पर, औसत करंट ड्रॉ (mA). - इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटा शीट से लिया जाता है. अगर डेटा पाने या भेजने की एक से ज़्यादा स्थितियां हैं, तो उन स्थितियों का औसत लिया जाता है. इसके अलावा, सिस्टम अब स्मार्ट ऑडियो और ब्लूटूथ स्कैन के लिए डेटा इकट्ठा करता है.

Android 7.0 और उसके बाद के वर्शन में, bluetooth.active (ब्लूटूथ A2DP के ज़रिए ऑडियो चलाने के दौरान इस्तेमाल किया जाता है) और bluetooth.on (ब्लूटूथ चालू होने पर इस्तेमाल किया जाता है, लेकिन जब कोई काम नहीं हो रहा होता है) के लिए, ब्लूटूथ की पावर वैल्यू का इस्तेमाल नहीं किया जाता.
bluetooth.controller.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 अलग-अलग आरएफ़ पावर लेवल पर डेटा ट्रांसमिट करते समय, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (mA). यह एक से ज़्यादा वैल्यू वाली एंट्री है. इसमें ट्रांसमिट पावर लेवल के हिसाब से एक वैल्यू होती है. 100 मि॰ए॰, 200 मि॰ए॰, 300 मि॰ए॰, 400 मि॰ए॰, 500 मि॰ए॰
modem.controller.voltage मॉडेम कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). -
wifi.controller.idle वाई-फ़ाई कंट्रोलर के इस्तेमाल में न होने पर, औसत करंट ड्रॉ (mA). - इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटा शीट से लिया जाता है. अगर डेटा पाने या भेजने की एक से ज़्यादा स्थितियां हैं, तो उन स्थितियों का औसत लिया जाता है.
wifi.controller.rx डेटा रिसीव करते समय, वाई-फ़ाई कंट्रोलर का औसत करंट ड्रॉ (mA). -
wifi.controller.tx डेटा ट्रांसमिट करते समय, वाई-फ़ाई कंट्रोलर का औसत करंट ड्रॉ (mA). -
wifi.controller.voltage वाई-फ़ाई कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). -
cpu.speeds यह एक से ज़्यादा वैल्यू वाली एंट्री है. इसमें सीपीयू की हर संभावित स्पीड को किलोहर्ट्ज़ में दिखाया जाता है. 1,25,000 किलोहर्ट्ज़, 2,50,000 किलोहर्ट्ज़, 5,00,000 किलोहर्ट्ज़, 10,00,000 किलोहर्ट्ज़, 15,00,000 किलोहर्ट्ज़ cpu.active में mA की एंट्री की संख्या और क्रम, एंट्री की संख्या और क्रम से मेल खाना चाहिए.
cpu.idle सीपीयू (और एसओसी) के सिस्टम सस्पेंड स्टेट में होने पर, सिस्टम की ओर से इस्तेमाल की गई कुल पावर. 3 mA -
cpu.awake सीपीयू के शेड्यूल किए गए आइडल स्टेट (कर्नेल आइडल लूप) में होने पर, ज़्यादा बैटरी खर्च होती है. सिस्टम, सिस्टम सस्पेंड स्टेट में नहीं होता. 50 mA आपके प्लैटफ़ॉर्म में, बैटरी की खपत के अलग-अलग लेवल के साथ एक से ज़्यादा निष्क्रिय स्थितियां इस्तेमाल की जा सकती हैं. शेड्यूलर के निष्क्रिय रहने की लंबी अवधि (कई मिलीसेकंड) के लिए, निष्क्रिय स्थिति का कोई प्रतिनिधि चुनें. अपने मेज़रमेंट डिवाइस पर पावर ग्राफ़ देखें. साथ ही, ऐसे सैंपल चुनें जिनमें सीपीयू का इस्तेमाल सबसे कम हो. इसके अलावा, ऐसे सैंपल खारिज करें जिनमें सीपीयू का इस्तेमाल ज़्यादा हो.
cpu.active अलग-अलग स्पीड पर काम करते समय, सीपीयू को इस्तेमाल होने वाली अतिरिक्त पावर. 100 मि॰ए॰, 120 मि॰ए॰, 140 मि॰ए॰, 160 मि॰ए॰, 200 मि॰ए॰ वैल्यू से पता चलता है कि अलग-अलग स्पीड पर चलने के दौरान, सीपीयू रेल कितनी पावर का इस्तेमाल करती हैं. कर्नेल में, अनुमति वाली हर स्पीड के लिए ज़्यादा से ज़्यादा स्पीड सेट करें और सीपीयू को उस स्पीड पर सेट करें. cpu.speeds में मौजूद एंट्री की संख्या और क्रम, इसमें मौजूद एंट्री की संख्या और क्रम से मेल खाता है.
cpu.clusters.cores हर सीपीयू क्लस्टर में मौजूद कोर की संख्या. 4, 2 यह सिर्फ़ उन डिवाइसों के लिए ज़रूरी है जिनमें अलग-अलग सीपीयू आर्किटेक्चर होते हैं. cpu.active और cpu.speeds के लिए क्लस्टर एंट्री की संख्या और क्रम, एंट्री की संख्या और क्रम से मेल खाना चाहिए. पहली एंट्री, cluster0 में मौजूद सीपीयू कोर की संख्या को दिखाती है. दूसरी एंट्री, cluster1 में मौजूद सीपीयू कोर की संख्या को दिखाती है. यह क्रम इसी तरह चलता है.
battery.capacity बैटरी की कुल क्षमता mAh में. 3000 mAh -

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

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