डिवाइस बनाने वाली कंपनियों को /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 | स्क्रीन की चमक के आधार पर, इस वैल्यू का एक हिस्सा (स्क्रीन.चालू वैल्यू में जोड़ा जाता है, ताकि स्क्रीन के लिए बिजली की खपत का हिसाब लगाया जा सके. |
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 | ब्लूटूथ कंट्रोलर के इस्तेमाल में न होने पर, उसका औसत करंट ड्रॉ (एमए). | - | इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटा शीट से लिया जाता है. अगर डेटा पाने या भेजने की एक से ज़्यादा स्थितियां हैं, तो उन स्थितियों का औसत लिया जाता है. इसके अलावा, सिस्टम अब स्मार्ट ऑडियो (LE) और ब्लूटूथ स्कैन के लिए डेटा इकट्ठा करता है. Android 7.0 और उसके बाद के वर्शन में, अब bluetooth.active (ब्लूटूथ A2DP के ज़रिए ऑडियो चलाते समय इस्तेमाल किया जाता है) और bluetooth.on (ब्लूटूथ चालू होने पर, लेकिन इस्तेमाल न होने पर इस्तेमाल किया जाता है) के लिए ब्लूटूथ पावर वैल्यू का इस्तेमाल नहीं किया जाता. |
bluetooth.controller.rx | ब्लूटूथ कंट्रोलर के चालू होने पर, उसका औसत करंट ड्रॉ (एमए). | - | |
bluetooth.controller.tx | डेटा ट्रांसमिट करते समय, ब्लूटूथ कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | |
bluetooth.controller.voltage | ब्लूटूथ कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). | - | |
modem.controller.sleep | मॉडम कंट्रोलर के बंद होने पर, उसका औसत करंट ड्रॉ (एमए). | 0 mA | इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटाशीट से लिया जाता है. अगर ईमेल पाने की स्थिति एक से ज़्यादा है, तो उन स्थितियों का औसत लिया जाता है. अगर ट्रांसमिट की एक से ज़्यादा स्थितियां हैं, तो Android 9 से हर ट्रांसमिट स्टेटस के लिए वैल्यू तय की जा सकती है. |
modem.controller.idle | इस्तेमाल में न होने पर, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | |
modem.controller.rx | डेटा रिसीव करते समय, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | |
modem.controller.tx | अलग-अलग आरएफ़ पावर लेवल पर ट्रांसमिट करते समय, मॉडेम कंट्रोलर का औसत करंट ड्रॉ (एमए). यह एक ऐसी एंट्री है जिसमें एक से ज़्यादा वैल्यू होती हैं. इसमें हर ट्रांसमिट पावर लेवल के लिए एक वैल्यू होती है. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | मॉडेम कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). | - | |
wifi.controller.idle | इस्तेमाल में न होने पर, वाई-फ़ाई कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | इन वैल्यू का अनुमान नहीं लगाया जाता, बल्कि इन्हें कंट्रोलर की डेटा शीट से लिया जाता है. अगर डेटा पाने या भेजने की एक से ज़्यादा स्थितियां हैं, तो उन स्थितियों का औसत लिया जाता है. |
wifi.controller.rx | डेटा पाने के दौरान, Wi-Fi कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | |
wifi.controller.tx | डेटा ट्रांसफ़र करते समय, Wi-Fi कंट्रोलर का औसत करंट ड्रॉ (एमए). | - | |
wifi.controller.voltage | Wi-Fi कंट्रोलर का औसत ऑपरेटिंग वोल्टेज (mV). | - | |
cpu.speeds | यह एक ऐसी एंट्री है जिसमें कई वैल्यू होती हैं. इसमें सीपीयू की हर संभावित स्पीड को केएचज़ में दिखाया जाता है. | 125,000 किलोहर्ट्ज़, 250,000 किलोहर्ट्ज़, 500,000 किलोहर्ट्ज़, 1,000,000 किलोहर्ट्ज़, 1,500,000 किलोहर्ट्ज़ | एंट्री की संख्या और क्रम, cpu.active में मौजूद mA एंट्री से मेल खाना चाहिए. |
cpu.idle | जब सीपीयू (और SoC) सिस्टम के 'सस्पेंड' मोड में होते हैं, तब सिस्टम की कुल खपत. | 3 mA | - |
cpu.awake | जब सीपीयू, शेड्यूल करने के लिए निष्क्रिय स्थिति (कर्नल के निष्क्रिय लूप) में होते हैं, तब अतिरिक्त पावर का इस्तेमाल किया जाता है. हालांकि, सिस्टम निलंबित स्थिति में नहीं होता. | 50 mA | आपके प्लैटफ़ॉर्म पर, एक से ज़्यादा आइडल स्टेटस इस्तेमाल में हो सकते हैं. इनमें बिजली की खपत के अलग-अलग लेवल होते हैं. शेड्यूलर के आइडल रहने की लंबी अवधि (कई मिलीसेकंड) के लिए, कोई प्रतिनिधि आइडल स्टेटस चुनें. अपने मेज़रमेंट उपकरण पर पावर ग्राफ़ की जांच करें और ऐसे सैंपल चुनें जिनमें सीपीयू की खपत सबसे कम हो. साथ ही, ऐसे सैंपल हटा दें जिनमें सीपीयू, आइडल मोड से बाहर निकला हो. |
cpu.active | अलग-अलग स्पीड पर काम करते समय, सीपीयू की खपत होने वाली अतिरिक्त ऊर्जा. | 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 समय होता है. बाकी बचे कंट्रोलर का समय, नेटवर्क ट्रैफ़िक या ब्लूटूथ ऐप्लिकेशन को असाइन किया जाता है.