घटक शक्ति मापें

जब घटक वांछित स्थिति में हो (जैसे चालू, सक्रिय, स्कैनिंग) और जब घटक बंद हो तो आप डिवाइस द्वारा खींची गई धारा की तुलना करके व्यक्तिगत घटक बिजली की खपत निर्धारित कर सकते हैं। किसी बाहरी पावर मॉनिटर, जैसे बेंच पावर सप्लाई या विशेष बैटरी-मॉनिटरिंग टूल (जैसे मॉनसून सॉल्यूशन इंक. पावर मॉनिटर और पावर टूल सॉफ्टवेयर) का उपयोग करके नाममात्र वोल्टेज पर डिवाइस पर खींची गई औसत तात्कालिक धारा को मापें।

निर्माता अक्सर किसी व्यक्तिगत घटक द्वारा खपत किए गए करंट के बारे में जानकारी प्रदान करते हैं। इस जानकारी का उपयोग करें यदि यह व्यवहार में डिवाइस की बैटरी से खींची गई धारा का सटीक रूप से प्रतिनिधित्व करती है। हालाँकि, अपने डिवाइस पावर प्रोफ़ाइल में उन मानों का उपयोग करने से पहले निर्माता द्वारा प्रदत्त मानों को मान्य करें।

बिजली की खपत पर नियंत्रण रखें

मापते समय, सुनिश्चित करें कि डिवाइस का बाहरी चार्ज स्रोत से कोई कनेक्शन नहीं है, जैसे कि एंड्रॉइड डीबग ब्रिज (एडीबी) चलाने के दौरान उपयोग किए जाने वाले डेवलपमेंट होस्ट के लिए यूएसबी कनेक्शन। परीक्षण के तहत डिवाइस होस्ट से करंट खींच सकता है, जिससे बैटरी का माप कम हो सकता है। यूएसबी ऑन-द-गो (ओटीजी) कनेक्शन से बचें, क्योंकि ओटीजी डिवाइस परीक्षण के तहत डिवाइस से करंट खींच सकता है।

मापे जा रहे घटक को छोड़कर, अन्य घटकों में परिवर्तन के कारण होने वाले गलत माप से बचने के लिए सिस्टम को बिजली की खपत के निरंतर स्तर पर चलना चाहिए। सिस्टम गतिविधियाँ जो बिजली माप में अवांछित परिवर्तन ला सकती हैं उनमें शामिल हैं:

  • सेल्युलर, वाई-फ़ाई और ब्लूटूथ गतिविधि प्राप्त करते हैं, संचारित करते हैं या स्कैन करते हैं । जब सेल रेडियो पावर को मापना संभव न हो, तो डिवाइस को एयरप्लेन मोड पर सेट करें और वाई-फाई या ब्लूटूथ को उचित रूप से सक्षम करें।
  • स्क्रीन चालू/बंद . स्क्रीन चालू होने पर प्रदर्शित होने वाले रंग कुछ स्क्रीन प्रौद्योगिकियों पर पावर ड्रॉ को प्रभावित कर सकते हैं। गैर-स्क्रीन घटकों के लिए मान मापते समय स्क्रीन बंद कर दें।
  • सिस्टम निलंबित/फिर से शुरू । स्क्रीन बंद होने की स्थिति सिस्टम निलंबन को ट्रिगर कर सकती है, जिससे डिवाइस के कुछ हिस्से कम-शक्ति या बंद स्थिति में हो सकते हैं। यह मापे जा रहे घटक की बिजली खपत को प्रभावित कर सकता है और बिजली रीडिंग में बड़े बदलाव ला सकता है क्योंकि सिस्टम समय-समय पर अलार्म आदि भेजना शुरू कर देता है। विवरण के लिए, नियंत्रण प्रणाली निलंबित देखें।
  • सीपीयू गति बदल रहे हैं और कम-पावर शेड्यूलर निष्क्रिय स्थिति में प्रवेश/बाहर निकल रहे हैं । सामान्य ऑपरेशन के दौरान, सिस्टम सीपीयू गति, ऑनलाइन सीपीयू कोर की संख्या और अन्य सिस्टम कोर स्थितियों जैसे मेमोरी बस गति और सीपीयू और मेमोरी से जुड़े पावर रेल के वोल्टेज में लगातार समायोजन करता है। परीक्षण के दौरान, ये समायोजन बिजली माप को प्रभावित करते हैं:
    • सीपीयू स्पीड स्केलिंग ऑपरेशन मेमोरी बसों और अन्य सिस्टम कोर घटकों की घड़ी और वोल्टेज स्केलिंग की मात्रा को कम कर सकता है।
    • शेड्यूलिंग गतिविधि सीपीयू द्वारा कम-पावर निष्क्रिय स्थिति में बिताए गए समय के प्रतिशत को प्रभावित कर सकती है। परीक्षण के दौरान इन समायोजनों को होने से रोकने के विवरण के लिए, सीपीयू गति को नियंत्रित करना देखें।

उदाहरण के लिए, जो ड्रॉयड किसी डिवाइस के लिए screen.on मान की गणना करना चाहता है। वह डिवाइस पर एयरप्लेन मोड को सक्षम करता है, डिवाइस को स्थिर वर्तमान स्थिति में चलाता है, सीपीयू की गति को स्थिर रखता है, और सिस्टम सस्पेंड को रोकने के लिए आंशिक वैकलॉक का उपयोग करता है। जो फिर डिवाइस स्क्रीन को बंद कर देता है और माप (200 एमए) लेता है। इसके बाद, जो डिवाइस स्क्रीन को न्यूनतम चमक पर चालू करता है और एक और माप (300 एमए) लेता है। screen.on मान 100 mA (300 - 200) है।

ध्यान दें : उन घटकों के लिए जिनमें सक्रिय होने पर वर्तमान खपत का एक सपाट तरंग रूप नहीं होता है (जैसे सेलुलर रेडियो या वाई-फाई), पावर मॉनिटरिंग टूल का उपयोग करके समय के साथ औसत वर्तमान को मापें।

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

नियंत्रण प्रणाली निलंबित

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

सिस्टम को निलंबित होने से रोकें

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

adb shell "echo temporary > /sys/power/wake_lock"

wake_lock में रहते हुए, स्क्रीन ऑफ स्थिति सिस्टम सस्पेंड को ट्रिगर नहीं करती है। (बिजली की खपत मापने से पहले डिवाइस से यूएसबी केबल को डिस्कनेक्ट करना याद रखें।)

वैकलॉक हटाने के लिए:

adb shell "echo temporary > /sys/power/wake_unlock"

माप प्रणाली निलंबित

सिस्टम सस्पेंड स्थिति के दौरान पावर ड्रॉ को मापने के लिए, पावर प्रोफ़ाइल में cpu.idle का मान मापें। मापने से पहले:

  • मौजूदा वैकलॉक हटाएं (जैसा कि ऊपर बताया गया है)।
  • सेलुलर रेडियो द्वारा समवर्ती गतिविधि से बचने के लिए डिवाइस को हवाई जहाज मोड में रखें, जो सिस्टम सस्पेंड द्वारा नियंत्रित एसओसी भागों से अलग प्रोसेसर पर चल सकता है।
  • सुनिश्चित करें कि सिस्टम निलंबित स्थिति में है:
    • वर्तमान रीडिंग की पुष्टि एक स्थिर मूल्य पर होती है। SoC सस्पेंड स्थिति की बिजली खपत और संचालित रहने वाले सिस्टम घटकों (जैसे USB PHY) की बिजली खपत के लिए रीडिंग अपेक्षित सीमा के भीतर होनी चाहिए।
    • सिस्टम कंसोल आउटपुट की जाँच करना।
    • सिस्टम स्थिति के बाहरी संकेतों पर नज़र रखना (जैसे निलंबित न होने पर एलईडी का बंद हो जाना)।

सीपीयू गति को नियंत्रित करें

सक्रिय सीपीयू को ऑनलाइन लाया जा सकता है या ऑफ़लाइन रखा जा सकता है, उनकी घड़ी की गति और संबंधित वोल्टेज को बदला जा सकता है (संभवतः मेमोरी बस की गति और अन्य सिस्टम कोर पावर स्थितियों को भी प्रभावित कर सकता है), और कर्नेल निष्क्रिय लूप में कम पावर निष्क्रिय स्थिति में प्रवेश कर सकता है। पावर प्रोफ़ाइल के लिए विभिन्न सीपीयू पावर स्थितियों को मापते समय, अन्य मापदंडों को मापते समय पावर ड्रॉ विचरण से बचें। पावर प्रोफ़ाइल मानती है कि सभी सीपीयू में समान उपलब्ध गति और पावर विशेषताएँ हैं।

सीपीयू पावर को मापते समय, या अन्य माप करने के लिए सीपीयू पावर को स्थिर रखते समय, ऑनलाइन लाए गए सीपीयू की संख्या को स्थिर रखें (जैसे कि एक सीपीयू को ऑनलाइन रखना और बाकी को ऑफ़लाइन/हॉटप्लग आउट करना)। एक को छोड़कर सभी सीपीयू को शेड्यूलिंग निष्क्रिय में रखने से स्वीकार्य परिणाम मिल सकते हैं। adb shell stop के साथ एंड्रॉइड फ्रेमवर्क को रोकने से सिस्टम शेड्यूलिंग गतिविधि कम हो सकती है।

आपको पावर प्रोफ़ाइल cpu.speeds प्रविष्टि में अपने डिवाइस के लिए उपलब्ध CPU गति निर्दिष्ट करनी होगी। उपलब्ध सीपीयू गति की सूची प्राप्त करने के लिए, चलाएँ:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

ये गति cpu.active मान में संगत शक्ति माप से मेल खाती हैं।

ऐसे प्लेटफ़ॉर्म के लिए जहां ऑनलाइन लाए गए कोर की संख्या बिजली की खपत को महत्वपूर्ण रूप से प्रभावित करती है, आपको प्लेटफ़ॉर्म के लिए cpufreq ड्राइवर या गवर्नर को संशोधित करने की आवश्यकता हो सकती है। अधिकांश प्लेटफ़ॉर्म यूजरस्पेस सीपीयूफ़्रेक गवर्नर का उपयोग करके और गति निर्धारित करने के लिए sysfs इंटरफ़ेस का उपयोग करके सीपीयू गति को नियंत्रित करने का समर्थन करते हैं। उदाहरण के लिए, केवल 1 सीपीयू वाले सिस्टम पर 200 मेगाहर्ट्ज की गति सेट करने के लिए या सभी सीपीयू एक सामान्य सीपीयूफ्रेक नीति साझा करने के लिए, निम्नलिखित कमांड चलाने के लिए सिस्टम कंसोल या एडीबी शेल का उपयोग करें:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

ध्यान दें : सटीक कमांड प्लेटफ़ॉर्म cpufreq कार्यान्वयन के आधार पर भिन्न होते हैं।

ये आदेश सुनिश्चित करते हैं कि नई गति अनुमत सीमा से बाहर नहीं है, नई गति सेट करें, फिर उस गति को प्रिंट करें जिस पर सीपीयू वास्तव में चल रहा है (सत्यापन के लिए)। यदि निष्पादन से पहले वर्तमान न्यूनतम गति 200000 से अधिक है, तो आपको पहली दो पंक्तियों के क्रम को उलटने की आवश्यकता हो सकती है, या अधिकतम गति निर्धारित करने से पहले न्यूनतम गति को कम करने के लिए पहली पंक्ति को फिर से निष्पादित करना पड़ सकता है।

विभिन्न गति से चल रहे सीपीयू द्वारा खपत किए गए करंट को मापने के लिए, कमांड का उपयोग करके सीपीयू को सीपीयू-बाउंड लूप में रखने के लिए सिस्टम कंसोल का उपयोग करें:

# while true; do true; done

लूप निष्पादित होने पर माप लें।

कुछ डिवाइस उच्च तापमान माप के कारण थर्मल थ्रॉटलिंग करते समय अधिकतम सीपीयू गति को सीमित कर सकते हैं (यानी, निरंतर अवधि के लिए उच्च गति पर सीपीयू चलाने के बाद)। माप लेते समय या तो सिस्टम कंसोल आउटपुट का उपयोग करके या मापने के बाद कर्नेल लॉग की जांच करके ऐसी सीमितताओं पर ध्यान दें।

cpu.awake मान के लिए, उस समय खपत की गई बिजली को मापें जब सिस्टम निलंबित न हो और कार्यों को निष्पादित न कर रहा हो। सीपीयू को कम-पावर शेड्यूलर निष्क्रिय लूप में होना चाहिए, संभवतः एआरएम वेट फॉर इवेंट इंस्ट्रक्शन को निष्पादित करना या निष्क्रिय उपयोग के लिए उपयुक्त फास्ट-एग्जिट विलंबता के साथ एसओसी-विशिष्ट कम-पावर स्थिति में होना चाहिए।

cpu.active मान के लिए, पावर को तब मापें जब सिस्टम सस्पेंड मोड में न हो और कार्यों को निष्पादित न कर रहा हो। एक सीपीयू (आमतौर पर प्राथमिक सीपीयू) को कार्य चलाना चाहिए जबकि अन्य सभी सीपीयू निष्क्रिय अवस्था में होने चाहिए।

स्क्रीन की शक्ति मापें

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

कुछ डिस्प्ले प्रौद्योगिकियाँ प्रदर्शित रंगों के अनुसार बिजली की खपत में भिन्न होती हैं, जिससे माप के समय स्क्रीन पर जो प्रदर्शित होता है उसके आधार पर बिजली माप में काफी भिन्नता होती है। मापते समय, सुनिश्चित करें कि स्क्रीन कुछ ऐसा प्रदर्शित कर रही है जिसमें यथार्थवादी स्क्रीन की शक्ति विशेषताएँ हों। एक पूरी तरह से काली स्क्रीन (जो कुछ प्रौद्योगिकियों के लिए सबसे कम बिजली की खपत करती है) और एक पूरी तरह से सफेद स्क्रीन के बीच लक्ष्य रखें। एक आम पसंद कैलेंडर ऐप में शेड्यूल का दृश्य है, जिसमें सफेद पृष्ठभूमि और गैर-सफेद तत्वों का मिश्रण होता है।

न्यूनतम और अधिकतम डिस्प्ले/बैकलाइट चमक पर स्क्रीन की पावर मापें। न्यूनतम चमक सेट करने के लिए:

  • एंड्रॉइड यूआई का उपयोग करें (अनुशंसित नहीं)। सेटिंग्स > डिस्प्ले ब्राइटनेस स्लाइडर को न्यूनतम डिस्प्ले ब्राइटनेस पर सेट करें। हालाँकि, एंड्रॉइड यूआई चमक को संभावित पैनल या बैकलाइट चमक के न्यूनतम 10-20% पर ही सेट करने की अनुमति देता है, और चमक को इतना कम सेट करने की अनुमति नहीं देता है कि स्क्रीन बिना अधिक प्रयास के दिखाई न दे।
  • sysfs फ़ाइल का उपयोग करें (अनुशंसित)। यदि उपलब्ध हो, तो पैनल की चमक को हार्डवेयर द्वारा समर्थित न्यूनतम चमक तक नियंत्रित करने के लिए एक sysfs फ़ाइल का उपयोग करें।

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

वाई-फ़ाई पावर मापें

अपेक्षाकृत शांत नेटवर्क पर वाई-फाई मापन करें। उच्च मात्रा में प्रसारण ट्रैफ़िक को संसाधित करने के लिए अतिरिक्त कार्य शुरू करने से बचें जो मापी जा रही गतिविधि से असंबंधित है।

जब वाई-फ़ाई सक्षम है लेकिन सक्रिय रूप से संचारित या प्राप्त नहीं हो रहा है तो wifi.on मान खपत की गई बिजली को मापता है। इसे अक्सर वाई-फाई सक्षम बनाम अक्षम के साथ सिस्टम सस्पेंड (स्लीप) स्थिति में वर्तमान ड्रा के बीच डेल्टा के रूप में मापा जाता है।

wifi.scan मान एक्सेस पॉइंट के लिए वाई-फ़ाई स्कैन के दौरान खपत की गई बिजली को मापता है। एप्लिकेशन WifiManager क्लास startScan() API का उपयोग करके वाई-फ़ाई स्कैन ट्रिगर कर सकते हैं। आप सेटिंग्स> वाई-फाई भी खोल सकते हैं, जो बिजली की खपत में स्पष्ट उछाल के साथ हर कुछ सेकंड में एक्सेस प्वाइंट स्कैन करता है, लेकिन आपको इन मापों से स्क्रीन पावर घटाना होगा।

ध्यान दें : नेटवर्क प्राप्त करने और ट्रैफ़िक संचारित करने के लिए नियंत्रित सेटअप (जैसे कि iperf ) का उपयोग करें।