Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Android

एंड्रॉइड के लो पावर ब्लूटूथ मोड के अंदर:आपका सीपीयू आपके डिवाइस को कैसे कुशल रखता है

एंड्रॉइड के लो पावर ब्लूटूथ मोड के अंदर:आपका सीपीयू आपके डिवाइस को कैसे कुशल रखता है <पी> यदि आपका फोन एक व्यक्ति होता, तो संभवतः वह अति-उपलब्धि वाला मित्र होता जो शांत नहीं बैठ सकता। वह व्यक्ति जो इस बात पर ज़ोर देता है कि वे गुप्त रूप से काम करते हुए, संदेशों का उत्तर देते हुए और साथ ही मौसम की जाँच करते हुए आराम कर रहे हैं।

<पी> आपके एंड्रॉइड डिवाइस के अंदर, हर पल कुछ ऐसा ही हो रहा है। एक सेकंड में प्रोसेसर आपकी प्लेलिस्ट को ब्लूटूथ पर स्ट्रीम कर रहा है, दूसरे सेकंड में यह नोटिफिकेशन प्रोसेस कर रहा है, आपके स्थान को ट्रैक कर रहा है, या पृष्ठभूमि में डेटा को सिंक कर रहा है। किसी तरह यह आपकी जींस को पिघलाए बिना या दोपहर के भोजन से पहले चार्जर की मांग किए बिना यह सब प्रबंधित करता है।

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

<पी> अपने सीपीयू को एक व्यस्त कॉफी शॉप के रूप में कल्पना करें। मुख्य बरिस्ता उच्च-प्रदर्शन वाले कोर हैं, जो गेम या वीडियो संपादकों जैसे मांग वाले ऐप्स के लिए फैंसी एस्प्रेसो पेय तैयार करने के लिए चारों ओर घूमते हैं। छोटी दक्षता वाले कोर हल्के ऑर्डर जैसे नोटिफिकेशन या पृष्ठभूमि कार्यों को संभालते हैं। अब एक अकेली ड्रिप कॉफी मशीन की कल्पना कीजिए जो घंटों बंद होने के बाद कोने में गुनगुना रही है। यह अधिक ऊर्जा खर्च किए बिना आवश्यक वस्तुओं को चालू रखता है। वह साधारण मशीन आपका लो पावर आइलैंड है।

<पी> जब एंड्रॉइड को पता चलता है कि कोई भी स्क्रीन को नहीं छू रहा है, कोई भारी गणना नहीं चल रही है, और कोई महत्वपूर्ण वेक लॉक सक्रिय नहीं है, तो यह डिवाइस को इस हल्की आधी नींद में जाने देता है। सिस्टम पूरी तरह से अचेतन नहीं है क्योंकि किसी को अभी भी अलार्म, नेटवर्क गतिविधि, या ब्लूटूथ पैकेट सुनने की ज़रूरत है। यह एक बिल्ली के झपकी लेने जैसा है जिसका एक कान आवाज के लिए फड़क रहा है।

<पी> यह डिज़ाइन आधुनिक उपकरणों को प्रतिक्रियाशील रहते हुए बिजली बचाने की अनुमति देता है। पुरानी प्रणालियों में, सोने का मतलब सब कुछ बंद कर देना और फिर किसी एक घटना के लिए दर्दनाक तरीके से जागना होता था। यह ऐसा होगा जैसे हर बार जब कोई ग्राहक न हो तो कॉफ़ी शॉप की बिजली बंद कर दी जाए, फिर अगला ऑर्डर आने पर मशीनों के गर्म होने का इंतज़ार किया जाए। लो पावर आइलैंड केवल आवश्यक वस्तुओं को जीवित रखकर उस बर्बादी से बचता है।

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

<पी> इस आर्टिकल में हम उस हीरो पर से पर्दा उठाने जा रहे हैं। आप देखेंगे कि एलपीआई कैसे काम करता है, न केवल सीपीयू के लिए एक निष्क्रिय कोने के रूप में बल्कि एंड्रॉइड के आर्किटेक्चर में बुनी गई एक पूर्ण पावर-प्रबंधन रणनीति के रूप में। हम यह भी पता लगाएंगे कि कैसे ब्लूटूथ बड़े कोर को जगाए बिना द्वीप के अंदर चुपचाप चैट करता रहता है, कैसे पावर एचएएल और कर्नेल हर झपकी और जागने के चक्र को व्यवस्थित करते हैं, और फर्मवेयर कैसे एक अथक रात्रि रक्षक की भूमिका निभाता है।

<पी> आपको वास्तविक AOSP स्निपेट, वास्तविक कर्नेल लॉग और ब्लूटूथ कोड लिखने पर व्यावहारिक सलाह मिलेगी जो ज़ोर से बोलने के बजाय द्वीप के साथ सहयोग करता है।

<पी> अंत तक, आप समझ जाएंगे कि आपका फ़ोन लंबे समय तक क्यों चलता है, और सिलिकॉन का यह छिपा हुआ कोना कैसे सब कुछ शांत परिशुद्धता के साथ चालू रखता है।

सामग्री तालिका

  • <पी> एंड्रॉइड ब्लूटूथ में लो पावर आइलैंड (एलपीआई) क्या है?

  • <पी> साइलेंट ऑर्केस्ट्रा:एलपीआई पावर एचएएल और कर्नेल के साथ कैसे काम करता है
  • <पी> ब्लूटूथ में लो पावर आइलैंड को डिबग करना और सत्यापित करना

  • <पी> नैप स्मार्टर को ब्लूटूथ सिखाना

  • <पी> निष्कर्ष:आपके फ़ोन के अंदर की शांत प्रतिभा

<पी> ब्लूटूथ एक सामाजिक तितली है. यहां तक ​​​​कि जब स्क्रीन अंधेरा होती है, तब भी यह आपके ईयरबड्स, स्मार्टवॉच या कार स्टीरियो पर फुसफुसाती रहती है, डेटा के पैकेट का आदान-प्रदान करती है जो जीवन को निर्बाध महसूस कराती है। समस्या यह है कि लगातार बातचीत करने से ऊर्जा की खपत होती है। केवल कुछ बाइट भेजने के लिए हर कुछ सेकंड में पूरे फोन को जगाना अपनी चाबियां ढूंढने के लिए स्टेडियम की फ्लडलाइट चालू करने जैसा होगा।

<पी> यहीं पर लो पावर आइलैंड फिर से हीरो बन जाता है। आधुनिक एंड्रॉइड फोन के अंदर, ब्लूटूथ संचार को एक समर्पित ब्लूटूथ नियंत्रक द्वारा नियंत्रित किया जाता है , मुख्य सीपीयू के समान सिस्टम-ऑन-चिप के भीतर एक छोटा माइक्रोप्रोसेसर। इस नियंत्रक की अपनी मेमोरी और अपना पावर डोमेन है। जब बड़े सीपीयू कोर आराम करते हैं तो यह आंशिक रूप से जागृत रह सकता है, कनेक्शन बनाए रख सकता है और मुख्य प्रोसेसर की लगभग बिना किसी मदद के रेडियो ट्रैफ़िक को संभाल सकता है।

<पी> जब Android का पावर मैनेजर यह तय करता है कि सिस्टम सो सकता है, यह ब्लूटूथ एचएएल के माध्यम से सिग्नल भेजता है और विक्रेता ड्राइवर को नियंत्रक को यह बताने के लिए कि होस्ट पक्ष कम-शक्ति वाली स्थिति में प्रवेश कर रहा है। इसके बाद नियंत्रक हल्के-फुल्के कार्यों को अपने ऊपर ले लेता है, जैसे कनेक्शन को जीवित रखना, सूंघने के अंतराल को शेड्यूल करना और एन्क्रिप्शन हैंडशेक को संभालना। परिणाम एक सहज अनुभव है जहां आपके ईयरबड जुड़े रहते हैं और प्रतिक्रियाशील रहते हैं जबकि आपका बाकी फोन चुपचाप बिजली बचाता है।

<पी> AOSP की ब्लूटूथ सेवा के अंदर एक सरलीकृत झलक इस सहयोग को क्रियान्वित करती हुई दिखाती है:

// From system/bt/service/btif/src/btif_core.cc
void btif_pm_enter_low_power_mode() {
 LOG_INFO("%s: entering low power mode", __func__);
 // Notify controller to enter sleep mode
 BTA_dm_pm_btm_status_evt(BTA_DM_PM_BTM_STATUS_IDLE);
 // Suspend host stack threads
 btif_thread_suspend();
}
void btif_pm_exit_low_power_mode() {
 LOG_INFO("%s: exiting low power mode", __func__);
 // Resume host stack threads
 btif_thread_resume();
 // Notify controller that the host is active again
 BTA_dm_pm_btm_status_evt(BTA_DM_PM_BTM_STATUS_ACTIVE);
}
<पी> ये फ़ंक्शन एंड्रॉइड और नियंत्रक के बीच बहुत बड़ी बातचीत का एक छोटा सा हिस्सा दर्शाते हैं। होस्ट स्टैक चुपचाप रुक जाता है जबकि नियंत्रक निगरानी रखता है। कई चिप विक्रेता प्लेटफार्मों पर, इस स्थिति को कंट्रोलर स्लीप कहा जाता है या स्नूज़ मोड . ब्लूटूथ नियंत्रक होस्ट को केवल तभी जगा सकता है जब कुछ सार्थक होता है, जैसे इनकमिंग कॉल या आपके हेडसेट से बटन दबाना।

<पी> यह एक रात्रि सुरक्षा गार्ड की तरह काम करता है जो सभी के घर चले जाने के बाद किसी इमारत में गश्त करता है। लाइटें बंद रहती हैं, हवा शांत रहती है, लेकिन कोई न कोई हमेशा सतर्क रहता है। यदि कुछ होता है, तो गार्ड घंटी बजाता है, और बाकी दल जाग जाते हैं। इस प्रकार आपके फ़ोन का ब्लूटूथ तब भी काम करता रहता है जब डिस्प्ले अंधेरा हो और सीपीयू कोर लो पावर आइलैंड के अंदर आराम कर रहे हों।

<पी> हार्डवेयर, फर्मवेयर और एंड्रॉइड के पावर प्रबंधन के बीच यह सहयोग आपके लिए संगीत सुनना, स्मार्टवॉच सूचनाएं प्राप्त करना, या बैटरी खत्म किए बिना तुरंत प्लेबैक फिर से शुरू करना संभव बनाता है। यह अपनी सर्वोत्तम शांत दक्षता, जागरूकता और आराम के बीच संतुलन है जो आधुनिक एंड्रॉइड डिज़ाइन की सुंदरता को परिभाषित करता है।

द साइलेंट ऑर्केस्ट्रा:लो पावर आइलैंड एंड्रॉइड पावर एचएएल और कर्नेल के साथ कैसे काम करता है

<पी> यदि आप अपने फ़ोन के निष्क्रिय होने पर एंड्रॉइड के हुड के नीचे झाँक सकते हैं, तो आपको कुछ ऐसा दिखाई देगा जो बिल्कुल सही समय पर ऑर्केस्ट्रा जैसा दिखता है। प्रत्येक वाद्ययंत्र को पता है कि कब धीरे से बजाना है, कब आराम करना है और कब बिना एक ताल गँवाए वापस आना है।

<पी> लो पावर आइलैंड इस शो में एकल कलाकार नहीं है। यह सौम्य लय अनुभाग की तरह है, जो अदृश्य कंडक्टरों के एक सेट द्वारा समन्वित है जो पावर एचएएल के अंदर रहते हैं। , कर्नेल , और फर्मवेयर .

<पी> आइए पावर एचएएल से शुरुआत करें , या हार्डवेयर एब्स्ट्रैक्शन लेयर। एंड्रॉइड में, पावर एचएएल सिस्टम फ्रेमवर्क और निम्न-स्तरीय कर्नेल ड्राइवरों के बीच मध्यस्थ के रूप में कार्य करता है। जब भी एंड्रॉइड निर्णय लेता है कि वह बिजली की खपत कम कर सकता है, तो वह एचएएल इंटरफेस के माध्यम से इस निर्णय को सूचित करता है। पावर एचएएल चिपसेट विक्रेता के कार्यान्वयन से बात करता है ताकि यह तय किया जा सके कि हार्डवेयर के कौन से हिस्से सुरक्षित रूप से सो सकते हैं। यह न केवल सीपीयू क्लस्टर बल्कि जीपीयू, डिस्प्ले पाइपलाइन और ब्लूटूथ और वाई-फाई जैसे परिधीय नियंत्रकों को भी नियंत्रित करता है।

<पी> सरलीकृत अर्थ में, एंड्रॉइड का पावर मैनेजर कुछ इस तरह कहता है, "अरे एचएएल, हम अभी निष्क्रिय हैं, क्या हम थोड़ी देर के लिए झपकी ले सकते हैं?" पावर एचएएल फिर कर्नेल और हार्डवेयर से जांच करता है कि कौन सो सकता है। यदि ब्लूटूथ नियंत्रक पुष्टि करता है कि वह चल रहे संचार को अकेले संभाल सकता है, तो पावर एचएएल कर्नेल को मुख्य प्रोसेसर के हिस्सों को बंद करना शुरू करने का संकेत देता है।

<पी> कर्नेल , बदले में, अपने पावर डोमेन के माध्यम से इस संक्रमण का प्रबंधन करता है और क्लॉक गेटिंग सिस्टम. चिप में प्रत्येक हार्डवेयर ब्लॉक एक विशिष्ट पावर डोमेन से संबंधित है। कर्नेल को पता है कि कौन से डोमेन को पूरी तरह से बंद किया जा सकता है और कौन से को आंशिक रूप से सक्रिय रहना चाहिए।

<पी> ब्लूटूथ नियंत्रक आमतौर पर एक डोमेन से संबंधित होता है जो रिटेंशन मोड का समर्थन करता है , जिसका अर्थ है कि इसकी कुछ स्मृति और तर्क स्थिति को संरक्षित करने के लिए पर्याप्त रूप से संचालित रहते हैं।

<पी> जब डिवाइस एलपीआई मोड में प्रवेश करना शुरू करता है तो कर्नेल लॉग के अंदर एक सामान्य प्रवाह कुछ इस तरह दिखता है:

PM: suspend entry (deep)
controller-bluetooth 0001:00:00.0: entering controller sleep
PM: suspend devices complete
PM: suspend exit
controller-bluetooth 0001:10:00.0: waking host
<पी> इस संक्षिप्त आदान-प्रदान में, आप देख सकते हैं कि एंड्रॉइड का पावर मैनेजर पूरी नींद-जागने की प्रक्रिया को कैसे व्यवस्थित करता है। ब्लूटूथ ड्राइवर रिपोर्ट करता है कि वह नियंत्रक नींद में प्रवेश कर रहा है, कर्नेल पुष्टि करता है कि सभी डिवाइस निलंबित हो गए हैं, और फिर बाद में रुकावट आने पर सब कुछ जगा देता है।

<पी> हार्डवेयर स्तर पर, यह व्यवहार वोल्टेज द्वीप पर निर्भर करता है और क्लॉक डोमेन SoC निर्माता द्वारा परिभाषित। शब्द "द्वीप" यहां रूपक नहीं है - यह वस्तुतः चिप पर एक विद्युत पृथक क्षेत्र का प्रतिनिधित्व करता है जिसे स्वतंत्र रूप से संचालित किया जा सकता है। जब कर्नेल मुख्य सीपीयू को निष्क्रिय कर देता है, तो उस द्वीप की बिजली कम हो जाती है या बंद हो जाती है, जबकि ब्लूटूथ नियंत्रक वाला दूसरा द्वीप एक छोटे स्वतंत्र ऑसिलेटर का उपयोग करके काम करना जारी रखता है।

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

<पी> जब कोई ऐसी घटना घटती है जिस पर उच्च-स्तरीय ध्यान देने की आवश्यकता होती है, जैसे कि उपयोगकर्ता अपने हेडसेट पर एक बटन दबाता है, तो नियंत्रक एक होस्ट वेक सिग्नल उठाता है। UART या साझा मेमोरी ट्रांसपोर्ट पर। कर्नेल इस व्यवधान को प्राप्त करता है, सीपीयू घड़ी को पुनर्स्थापित करता है, और एंड्रॉइड के पावर मैनेजर को फिर से शुरू करता है। होस्ट स्टैक पुन:सक्रिय हो जाता है, ईवेंट को संसाधित करता है, और उसके फिर से निष्क्रिय होने पर हाथों से नियंत्रित किया जाता है।

<पी> पावर एचएएल, कर्नेल और फर्मवेयर के बीच यह नृत्य जटिल लग सकता है, लेकिन यह एंड्रॉइड के अंदर सबसे खूबसूरत डिजाइनों में से एक है। प्रत्येक परत अपनी भूमिका सटीक ढंग से निभाती है। पावर एचएएल नीतियों पर बातचीत करता है, कर्नेल उन्हें लागू करता है, और फर्मवेयर चुपचाप उन्हें पृष्ठभूमि में निष्पादित करता है। साथ में, वे यह सुनिश्चित करते हैं कि आपका फ़ोन घंटों आराम करने के बाद भी तुरंत सक्रिय महसूस करे।

<पी> अगली बार जब आपका फोन आपकी जेब में सो गया हो तो आपका ईयरबड बिना किसी देरी के दोबारा कनेक्ट हो जाए, तो जान लें कि सॉफ्टवेयर और सिलिकॉन की एक पूरी श्रृंखला ने ऐसा करने में त्रुटिहीन रूप से सहयोग किया है। लो पावर आइलैंड सिर्फ बिजली की बचत नहीं कर रहा था - यह आपकी उंगलियों के नीचे एक मूक ऑर्केस्ट्रा का संचालन कर रहा था।

ब्लूटूथ में लो पावर आइलैंड को डिबग करना और सत्यापित करना

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

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

<पी> इस प्रक्रिया को देखने का एक सरल तरीका है:

adb logcat -b all | grep -i "btif_pm"
<पी> आपको कुछ ऐसा दिखाई दे सकता है:

08-05 12:23:44.732 1712 1725 I bt_btif_pm: entering low power mode
08-05 12:23:44.733 1712 1725 I bt_btif_pm: controller idle, suspending host threads
08-05 12:23:46.008 1712 1725 I bt_btif_pm: exiting low power mode
<पी> प्रत्येक पंक्ति कहानी का कुछ भाग बताती है। पहला संदेश पुष्टि करता है कि एंड्रॉइड के ब्लूटूथ स्टैक ने कम पावर स्थिति में प्रवेश का अनुरोध किया है। दूसरा दिखाता है कि होस्ट-साइड थ्रेड रुक गए हैं, और अंतिम संदेश दिखाता है कि नियंत्रक ने होस्ट को फिर से जगा दिया है।

<पी> यह देखने के लिए कि नीचे क्या हो रहा है, आप कर्नेल लॉग जाँच सकते हैं:

adb shell dmesg | grep -i bluetooth
<पी> आपको ऐसी प्रविष्टियाँ मिल सकती हैं:

[ 1423.347102] controller-bluetooth 0001:00:00.0: entering controller sleep
[ 1423.347117] PM: suspend entry (deep)
[ 1425.105993] controller-bluetooth 0001:00:00.0: host wake received
[ 1425.106005] PM: resume complete
<पी> ये पंक्तियाँ पुष्टि करती हैं कि ब्लूटूथ ड्राइवर और पावर प्रबंधन प्रणाली सही ढंग से काम कर रहे हैं। नियंत्रक सो गया, कर्नेल ने सीपीयू क्लस्टर को निलंबित कर दिया, और ब्लूटूथ नियंत्रक से एक वेक सिग्नल आने पर सब कुछ वापस जाग गया।

<पी> यदि आपने कभी मेज़बान को बार-बार जागते हुए देखा है, तो आमतौर पर इसका मतलब है कि कुछ घटक नींद की सीमाओं का सम्मान नहीं कर रहे हैं। सामान्य दोषियों में दुर्व्यवहार करने वाले वेक लॉक, लगातार स्कैनिंग का अनुरोध करने वाले शोर करने वाले ऐप्स या कभी समाप्त न होने वाले टाइमर शामिल हैं। ऐसे मामलों में, एंड्रॉइड का पॉवरस्टैट्स HAL और बैटरीस्टेट्स फ्रेमवर्क यह पता लगाने में मदद कर सकता है कि गहरी नींद में कौन बाधा डाल रहा है।

<पी> आप इसका उपयोग करके समग्र निम्न-शक्ति आँकड़े जाँच सकते हैं:

adb shell dumpsys batterystats | grep "bluetooth"
<पी> इससे पता चलता है कि ब्लूटूथ सबसिस्टम कितने समय तक सक्रिय रहा, इसकी तुलना में सिस्टम कितने समय तक कम पावर मोड में था। आदर्श रूप से, संख्याओं को यह दिखाना चाहिए कि संक्षिप्त वेक अवधि को छोड़कर ब्लूटूथ अधिकतर निष्क्रिय रहता है।

<पी> सिस्टम सुधार पर काम करने वाले इंजीनियर अक्सर systrace जैसे विशेष ट्रेसिंग टूल का उपयोग करते हैं , ftrace , या perfetto सत्ता परिवर्तन की कल्पना करना। पावर ट्रेस एक लय दिखाता है:नींद का प्रतिनिधित्व करने वाली एक लंबी सपाट रेखा, गतिविधि के तेज स्पाइक्स से बाधित होती है जब नियंत्रक एक सार्थक घटना के लिए मेजबान को जगाता है। यदि वे स्पाइक्स बहुत बार-बार होते हैं, तो आप जानते हैं कि सिस्टम लो पावर आइलैंड में कुशलता से प्रवेश नहीं कर रहा है।

<पी> यहां एक विशिष्ट पर्फ़ेट्टो ट्रेस स्निपेट का एक अंश दिया गया है:

bluetooth_host_state: IDLE → SUSPENDED
bluetooth_controller_state: ACTIVE → SLEEP
kernel_cpu_cluster_0: ACTIVE → RETENTION
kernel_cpu_cluster_1: ACTIVE → POWER_OFF
<पी> यह सरल अनुक्रम एक सशक्त कहानी कहता है। होस्ट स्टैक निलंबित हो गया, नियंत्रक सो गया, और सीपीयू क्लस्टर शानदार ढंग से संचालित हो गए। जब अगली घटना घटती है, तो परिवर्तन उलट जाते हैं, और डिवाइस लगभग तुरंत सक्रिय हो जाता है।

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

<पी> इस सिस्टम को डीबग करना कुछ हद तक बर्डवॉचिंग जैसा लगता है। आपको धैर्यवान, शांत और चौकस रहना होगा। अधिकांश समय, लॉग में कुछ भी नाटकीय नहीं होता है। लेकिन जब आप अंततः एक संपूर्ण नींद-जागने के चक्र को पकड़ लेते हैं, तो ऐसा महसूस होता है कि आप प्रकृति को सद्भाव में देख रहे हैं। यह ब्लूटूथ के साथ काम करने वाले एंड्रॉइड के लो पावर आइलैंड की खूबसूरती है।

<पी> इसलिए जब आपका ईयरबड आधे सेकंड में फिर से कनेक्ट हो जाता है या जब आपका फोन टेबल पर रहता है तो आपकी स्मार्टवॉच चुपचाप डेटा सिंक करती है, तो पर्दे के पीछे के इस शांत ऑर्केस्ट्रा को याद रखें। यह क्रूर शक्ति नहीं बल्कि स्मार्ट शक्ति प्रबंधन है जो अनुभव को सहज बनाता है। लो पावर आइलैंड वह अदृश्य शिल्पकार है जो आपके एंड्रॉइड ब्लूटूथ को एक समय में एक स्लीपी पैकेट की बैटरी बचाते हुए इसकी शांत परिशुद्धता प्रदान करता है।

नेप स्मार्टर को ब्लूटूथ सिखाना

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

<पी> लो पावर आइलैंड के लिए अनुकूलन का लक्ष्य आपके ब्लूटूथ लॉजिक को कम काम करना नहीं है। इसेसमझदारी से काम करानाहै , ताकि नियंत्रक छोटे पृष्ठभूमि आदान-प्रदान को संभाल सके जबकि मुख्य सीपीयू शांति से सोता है। एंड्रॉइड के ब्लूटूथ स्टैक और विक्रेता ड्राइवर पहले से ही अधिकांश भारी सामान उठाने का काम संभाल लेते हैं, लेकिन डेवलपर्स उन सीमाओं का सम्मान करने वाले ऊर्जा-सचेत कोड लिखकर एक बड़ा बदलाव ला सकते हैं।

<पी> पहला नियम सरल है:जिम्मेदारी से स्कैन करें . ब्लूटूथ पावर प्रोफाइल में निरंतर स्कैनिंग नंबर एक खलनायक है। प्रत्येक स्कैन रेडियो, नियंत्रक और अक्सर होस्ट प्रोसेसर को जगाता है। यदि आपका ऐप लगातार BluetoothLeScanner.startScan() पर कॉल करता है स्पष्ट रुकने की स्थिति के बिना, आप प्रभावी ढंग से हर कुछ सेकंड में लो पावर द्वीप में टॉर्च चमका रहे हैं।

<पी> इसके बजाय, अपने स्कैन को बैच करें और फ़िल्टर का उपयोग करें। सिस्टम का ScanSettings.SCAN_MODE_LOW_POWER मोड विशेष रूप से स्कैनिंग की अनुमति देने के लिए डिज़ाइन किया गया है जो एलपीआई संक्रमण के साथ सहयोग करता है।

<पी> यहां AOSP का एक उदाहरण दिया गया है जो दिखाता है कि आप पावर-फ्रेंडली तरीके से स्कैन को कैसे ट्रिगर कर सकते हैं:

ScanSettings settings = new ScanSettings.Builder()
 .setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)
 .setReportDelay(5000) // batch results every 5 seconds
 .build();
bluetoothLeScanner.startScan(filters, settings, scanCallback);
<पी> परिणामों को बैच करके और हार्डवेयर को आंतरिक रूप से स्कैनिंग करने की अनुमति देकर, आप होस्ट वेकअप को नाटकीय रूप से कम कर देते हैं। ब्लूटूथ नियंत्रक अपने आप विज्ञापन एकत्र कर सकता है, परिणाम देने के लिए सीपीयू को हर कुछ सेकंड में केवल एक बार सक्रिय करता है।

<पी> दूसरा नियम हैस्टैक को सोने देना . कई डेवलपर अनजाने में वेक लॉक पकड़कर या अनावश्यक कॉलबैक चलाकर ब्लूटूथ थ्रेड को ब्लॉक कर देते हैं। एंड्रॉइड ब्लूटूथ स्टैक संदेश लूप के माध्यम से आंतरिक सिंक्रनाइज़ेशन बनाए रखता है जो निष्क्रिय अवधि के दौरान सुरक्षित रूप से रुक सकता है।

<पी> BluetoothGattCallback.onCharacteristicChanged() जैसे कॉलबैक में लंबे समय तक चलने वाले ऑपरेशन से बचें . इसके बजाय, एंड्रॉइड की डोज़ और ऐप स्टैंडबाय नीतियों का सम्मान करने वाले पृष्ठभूमि निष्पादकों को काम सौंपें।

<पी> एक अन्य अनुकूलन कनेक्शन अंतराल और विलंबता का बुद्धिमानी से उपयोग करने में निहित है . BLE कनेक्शन आपको यह कॉन्फ़िगर करने की अनुमति देता है कि डिवाइस कितनी बार पैकेट का आदान-प्रदान करते हैं। एक छोटा अंतराल प्रतिक्रियाशीलता में सुधार करता है लेकिन ऊर्जा जलाता है। लंबा अंतराल नियंत्रक को घटनाओं के बीच आराम करने के अधिक अवसर देता है। यदि आपका उपयोग मामला इसकी अनुमति देता है, तो कनेक्शन प्रारंभ करते समय उच्च कनेक्शन अंतराल और परिधीय विलंबता मान चुनें।

// Example: Requesting a higher connection interval in GATT
bluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_LOW_POWER);
<पी> हुड के तहत, यह ब्लूटूथ नियंत्रक को अपने सूंघने के अंतराल को लंबा करने के लिए कहता है, जिससे लिंक के दोनों छोर कम पावर मोड में अधिक समय बिताते हैं। इसका परिणाम यह होता है कि बैटरी की लाइफ लंबी हो जाती है और बैकग्राउंड अपडेट या सेंसर रीड के लिए उपयोगकर्ता के अनुभव पर लगभग कोई प्रभाव नहीं पड़ता है।

<पी> सिस्टम स्तर पर, प्लेटफ़ॉर्म व्यवहार को ट्यून करने वाले इंजीनियर पावर एचएएल और कर्नेल कॉन्फ़िगरेशन में मापदंडों को भी समायोजित कर सकते हैं। /sys/power निर्देशिका में सीपीयू प्रतिधारण और नियंत्रक वेक थ्रेशोल्ड के लिए ट्यूनेबल्स शामिल हैं। पर्फ़ेटो, सिस्ट्रेस और btsnooz.py जैसे उपकरण ब्लूटूथ पावर घटनाओं की कल्पना कर सकते हैं, जिससे यह सत्यापित करने में मदद मिलती है कि नींद चक्र उम्मीद के मुताबिक हो रहा है।

<पी> उदाहरण के लिए, प्रति सेकंड बहुत अधिक वेकअप दिखाने वाला ट्रेस इस तरह दिख सकता है:

bluetooth_host_state: SUSPENDED → ACTIVE
reason: controller wake (LL control packet)
interval: 150 ms
<पी> यदि आप कम समय में ऐसे दर्जनों वेकअप देखते हैं, तो यह अत्यधिक आक्रामक कनेक्शन अंतराल या किसी परिधीय से निरंतर GATT सूचनाओं का संकेत दे सकता है। उन मापदंडों को समायोजित करने से वेक अंतराल को मिलीसेकंड के बजाय सेकंड तक कम किया जा सकता है, जिससे बिजली दक्षता में काफी सुधार होता है।

<पी> तीसरा और शायद सबसे महत्वपूर्ण नियम हैजानना कि कब जाने देना है . जब आपका ऐप ब्लूटूथ ऑपरेशन पूरा कर ले, तो हमेशा GATT कनेक्शन बंद करें, स्कैनिंग बंद करें और संदर्भ जारी करें। कई डेवलपर इस चरण को भूल जाते हैं, जिससे भूत कनेक्शन या स्कैन पृष्ठभूमि में चुपचाप चलते रहते हैं। हर एक सर्दी के दौरान एक खिड़की खुली छोड़ने जैसा है:हीटर अधिक काम करता है, और बैटरी जीवन प्रभावित होता है।

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

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

<पी> जब आप इसे सही तरीके से करते हैं, तो आपके उपयोगकर्ता कभी भी किसी चीज़ पर ध्यान नहीं देंगे। उनके ईयरबड तुरंत फिर से कनेक्ट हो जाएंगे, उनके फिटनेस ट्रैकर चुपचाप सिंक हो जाएंगे, और उनके फोन हर दिन कुछ अतिरिक्त घंटों तक चलेंगे। पर्दे के पीछे, नींद और जागने की वह शांत लय जारी रहती है, जो लो पावर आइलैंड द्वारा एंड्रॉइड ब्लूटूथ पर लाए गए शानदार संतुलन से संचालित होती है।

निष्कर्ष:आपके फोन के अंदर की शांत प्रतिभा

<पी> यदि आपका फोन एक संगीतकार होता, तो लो पावर आइलैंड उसका मूक मेट्रोनोम होता, जो समय का ध्यान रखता, लय पकड़ता और यह सुनिश्चित करता कि राग कभी भी छूटे नहीं। यह ध्यान की मांग नहीं करता है या अपने काम के बारे में घमंड नहीं करता है। यह बस पृष्ठभूमि में मौजूद है, इस तरह से बिजली की बचत होती है जिसका अधिकांश लोगों को कभी एहसास नहीं होता।

<पी> इस पूरी यात्रा के दौरान, हमने देखा है कि कैसे लो पावर आइलैंड हार्डवेयर और सॉफ्टवेयर के बीच मिलन बिंदु के रूप में कार्य करता है, जहां मौन रणनीति बन जाती है। हमने इस विचार के साथ शुरुआत की कि आपके सीपीयू को, एक बेचैन दोस्त की तरह, सांस लेने के लिए जगह की जरूरत है। फिर हमने देखा कि जब बाकी सिस्टम सो जाता है तो ब्लूटूथ, जो कि सभी रेडियो में से सबसे सामाजिक है, चिल्लाने की बजाय फुसफुसाहट करना सीखता है। साथ में, वे Android के डिज़ाइन में सबसे नाजुक लेकिन शक्तिशाली तंत्रों में से एक बनाते हैं।

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

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

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

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

<पी> और यदि आप इसके बारे में सोचते हैं, तो यह फोन और इंसान दोनों के लिए समान रूप से याद रखने योग्य सबक है।

<पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें


  1. समस्या निवारण मार्गदर्शिका:खराब पूल हैडर Windows 10 त्रुटि को ठीक करें समस्या निवारण मार्गदर्शिका:खराब पूल हैडर Windows 10 त्रुटि को ठीक करें

    BAD_POOL_HEADER (0x00000019 त्रुटि कोड) एक कष्टप्रद Windows समस्या है जो तब होती है जब सिस्टम की हार्ड ड्राइव या RAM में कोई समस्या होती है . स्टॉप कोड बिना किसी पूर्व चेतावनी के संकेत के प्रकट हो सकता है और उन कार्यों को संसाधित करने में पीसी की अक्षमता से संबंधित है जो भौतिक मेमोरी के माध्यम से उप

  1. WinZip सिस्टम यूटिलिटी सूट:आपके पीसी की सभी जरूरतों के लिए एक स्थान पर समाधान WinZip सिस्टम यूटिलिटी सूट:आपके पीसी की सभी जरूरतों के लिए एक स्थान पर समाधान

    अपडेटेड ड्राइवर्स, ऑप्टिमाइज्ड मेमोरी, ऑप्टिमाइज्ड डिस्क स्पेस, बैक-अप डेटा, एरर फ्री डिस्क और रजिस्ट्री के साथ एक तेज़ पीसी एक मिथक नहीं है! हां, यह ऑल-इन-वन WinZip सिस्टम यूटिलिटी सूट के साथ संभव है। WinZip सिस्टम यूटिलिटीज सूट आपके पीसी को गति देने, आपकी गोपनीयता की रक्षा करने और सिस्टम के प्रदर

  1. हर बार जब आप इसे खोलते हैं तो विंडोज 10 को स्काइप इंस्टॉल करने से कैसे रोकें हर बार जब आप इसे खोलते हैं तो विंडोज 10 को स्काइप इंस्टॉल करने से कैसे रोकें

    यदि हर बार जब आप इसे अपने विंडोज 10 कंप्यूटर पर खोलते हैं तो स्काइप इंस्टॉल हो जाता है, तो आपको पता चल जाएगा कि यह कितना कष्टप्रद हो सकता है। ऐसा करना न केवल पूरी तरह से अनावश्यक लगता है, बल्कि इससे आपको अपनी ऑनलाइन मीटिंग के लिए देर हो सकती है। इस लेख में, हम इस बात पर एक नज़र डालेंगे कि जब भी आप