कैसे EAS Google Pixel को सबसे तेज़ Android फ़ोन बनाने में मदद करता है

Google Pixel स्मार्टफ़ोन बाज़ार में सबसे तेज़ Android फ़ोन में से एक हैं। एनर्जी अवेयर शेड्यूलिंग (ईएएस) के कारण ही फोन इतना स्मूथ है।

बहुत पहले जब लिनस टोरवाल्ड्स के दिमाग में लिनक्स सिर्फ एक विचार था, सीपीयू सिंगल-कोर इकाइयाँ थीं जिन्हें कम शक्ति के लिए भारी मात्रा में ऊर्जा की आवश्यकता होती थी। पहला व्यावसायिक रूप से उपलब्ध प्रोसेसर, इंटेल 4004, एकल कोर पर 740kHz की क्लॉक-रेट पर चलता था। उस समय, लोड शेड्यूलर की कोई आवश्यकता नहीं थी। लोड शेड्यूलिंग को आईबीएम पावर 4 जैसे दोहरे कोर "बीहमोथ्स" के लिए आरक्षित किया गया था जो कुछ दशकों बाद सामने आया था। ये अत्यंत 1.1GHz से 1.9GHz पर चलते थे और इन कोर का सही ढंग से उपयोग करने के लिए प्रोग्राम और सिस्टम की आवश्यकता होती थी। हम इन मशीनों से सॉफ्टवेयर एल्गोरिदम तक कैसे पहुंचे जो कई कोर का उपयोग करते हैं? आपने पहले हमारे मंचों पर एनर्जी अवेयर शेड्यूलिंग (ईएएस) के बारे में सुना होगा। यही कारण है कि Google Pixel स्मार्टफ़ोन इतना अच्छा प्रदर्शन करते हैं। ईएएस के बारे में इतना बढ़िया क्या है और हम इस मुकाम तक कैसे पहुंचे? इससे पहले कि हम इसे समझा सकें, हमें लिनक्स लोड शेड्यूलर्स के बारे में बात करनी होगी।


लिनक्स लोड शेड्यूलर्स का विकास

राउंड-रॉबिन शेड्यूलिंग

राउंड रॉबिन प्रोसेसिंग. स्रोत: विकिपीडिया

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

  • प्रक्रिया ए
  • प्रक्रिया बी
  • प्रक्रिया सी
  • प्रक्रिया डी

अब, आइए राउंड-रॉबिन शेड्यूलर का काम करें। हम अगली प्रक्रिया पर जाने से पहले प्रत्येक प्रक्रिया के लिए 100 मिलीसेकंड (टाइम-स्लाइसिंग) आवंटित करेंगे। इसका मतलब है कि प्रोसेस ए को अपनी प्रोसेसिंग करने में 100 मिलीसेकंड लग सकते हैं, फिर यह प्रोसेस बी में चला जाता है और इसी तरह। यदि किसी एप्लिकेशन के कार्य को करने में 250 मिलीसेकंड लगते हैं, तो उसे अपना कार्य पूरा करने के लिए इस प्रक्रिया से 3 बार गुजरना होगा! अब इसे अलग-अलग कोर में स्केल करें, ताकि प्रोसेस ए और प्रोसेस बी को कोर 1 में आवंटित किया जा सके, और प्रोसेस सी और प्रोसेस डी को कोर 2 में आवंटित किया जा सके। इसे O(n) शेड्यूलिंग द्वारा प्रतिस्थापित किया गया था (जो राउंड-रॉबिन की तरह था, लेकिन युगों का उपयोग करता था और गतिशील आवंटन की अनुमति देता था) समय), फिर O(1) शेड्यूलिंग (न्यूनतम ओवरहेड, असीमित प्रक्रिया समर्थन), फिर अंत में पूरी तरह से निष्पक्ष शेड्यूलर (सीएफएस)। सीएफएस को अक्टूबर 2007 में लिनक्स कर्नेल संस्करण 2.6.23 में विलय कर दिया गया था। तब से इसमें सुधार किया गया है और अभी भी लिनक्स सिस्टम में यह डिफ़ॉल्ट शेड्यूलर है।

पूर्णतया निष्पक्ष अनुसूचक

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

विषम बहु-प्रसंस्करण

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

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

एनर्जी अवेयर शेड्यूलिंग

एनर्जी अवेयर शेड्यूलिंग (ईएएस) अगली बड़ी चीज है जिसके बारे में हमारे मंचों पर उपयोगकर्ता बात कर रहे हैं। यदि आप वनप्लस 3 (या स्पष्ट रूप से Google Pixel) का उपयोग करते हैं, तो आपने निश्चित रूप से इसके बारे में मंचों पर सुना होगा। इसे क्वालकॉम स्नैपड्रैगन 845 के साथ मुख्यधारा में लॉन्च किया गया, इसलिए यदि आपके पास इनमें से एक डिवाइस है तो आपके पास पहले से ही ईएएस-सक्षम स्मार्टफोन है। कर्नेल के रूप में ईएएस जैसे रेंडरजेनिथ और ROM जैसे वर्टेक्सओएस और प्योरफ्यूजन वनप्लस 3 मंचों पर अपने चरम पर तूफान मचा रहा था। बेशक, Google Pixel भी EAS के साथ आता है। बेहतर बैटरी जीवन और बेहतर प्रदर्शन के वादों के साथ, आखिर क्या दिक्कत है?

एनर्जी अवेयर शेड्यूलिंग उतनी सरल नहीं है क्योंकि यह सीएफएस या एचएमपी जैसे हर डिवाइस के लिए सार्वभौमिक नहीं है। ईएएस को ऊर्जा मॉडल के आधार पर उस प्रोसेसर की समझ की आवश्यकता होती है जिस पर वह चल रहा है। ये ऊर्जा मॉडल इंजीनियरों की टीमों द्वारा बनाए गए हैं जो इष्टतम प्रदर्शन देने के लिए लगातार परीक्षण और काम कर रहे हैं। चूंकि स्नैपड्रैगन 820 और 821 मूल रूप से एक जैसे हैं, वनप्लस 3 पर कस्टम कर्नेल Google पिक्सेल ऊर्जा मॉडल का उपयोग करता है। स्नैपड्रैगन 845 वाले डिवाइस ईएएस का उपयोग कर सकते हैं, और वनप्लस 6 कुछ हद तक करता है। यह Google Pixel डिवाइस की तरह ट्यून्ड नहीं है, लेकिन यह काम पूरा कर देता है। यहां एक उदाहरण दिया गया है कि कैसे, वनप्लस 6 में ईएएस के साथ बेहतर प्रोसेसर होने के बावजूद, पिक्सेल 2 एक्सएल अभी भी स्मूथनेस में इसे मात देता है। ये दोनों तस्वीरें हमारे यहां से ली गई हैं गति-उन्मुख समीक्षा वनप्लस 6 का.

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

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

ट्यूनेबल्स केवल मापदंडों का एक सेट है जो सीपीयू गवर्नर को भेजा जाता है, जो आवृत्ति के संदर्भ में गवर्नर की कुछ स्थितियों पर प्रतिक्रिया करने के तरीके को बदलता है। शेड्यूलर तब निर्णय लेता है कि वह विभिन्न प्रोसेसरों पर कार्य कहाँ रखता है। वनप्लस 6 के ट्यूनेबल्स कम-शक्ति वाले कोर पर काम को प्राथमिकता देने के लिए तैयार हैं। यह भी मदद नहीं करता है कि Google Pixel 2 में भारी मात्रा में इनपुट बूस्ट है, जो सभी 8 कोर को हर समय ऑनलाइन रखता है। Google भी एक का उपयोग करता है व्यवधान संतुलनकर्ता जो फ़्रेम ड्रॉप्स को हटाने और प्रदर्शन को बेहतर बनाने में मदद करता है।

तो ईएएस कैसे काम करता है? यह केवल कुछ विशेष परिस्थितियों में ही इतना कुशल क्यों है?

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

  • लिनक्स शेड्यूलर (सीएफएस, ऊपर उल्लिखित)
  • लिनक्स सीपीयू
  • लिनक्स सीपीयूफ़्रेक

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

डिवाइस को जगाते समय, ईएएस सबसे उथली निष्क्रिय अवस्था में कोर का चयन करेगा, जिससे डिवाइस को जगाने के लिए आवश्यक ऊर्जा कम हो जाएगी। यह डिवाइस का उपयोग करने में आवश्यक शक्ति को कम करने में मदद करता है, क्योंकि यदि इसकी आवश्यकता नहीं है तो यह बड़े क्लस्टर को नहीं जगाएगा। लोड ट्रैकिंग भी ईएएस का एक अत्यंत महत्वपूर्ण हिस्सा है, और दो विकल्प हैं। "प्रति-इकाई लोड ट्रैकिंग" (पीईएलटी) का उपयोग आमतौर पर लोड ट्रैकिंग के लिए किया जाता है, फिर जानकारी का उपयोग आवृत्तियों को तय करने और सीपीयू में कार्यों को कैसे सौंपना है, यह तय करने के लिए किया जाता है। "विंडो-असिस्टेड लोड ट्रैकिंग" (WALT) का भी उपयोग किया जा सकता है और Google Pixel पर इसका उपयोग किया जाता है। हमारे मंचों पर कई ईएएस रोम, जैसे वर्टेक्सओएस, वॉल्ट का उपयोग करने का विकल्प चुनते हैं। कई ROM WALT या PELT के साथ कर्नेल के दो संस्करण जारी करेंगे, इसलिए यह निर्णय लेना उपयोगकर्ता पर निर्भर है। WALT अधिक तेज़ है, CPU आवृत्ति में उच्च शिखर के साथ, जबकि PELT अधिक सुसंगत बने रहने का प्रयास करता है। लोड ट्रैकर वास्तव में सीपीयू आवृत्ति को प्रभावित नहीं करता है, यह सिर्फ सिस्टम को बताता है कि सीपीयू का उपयोग क्या है। उच्च CPU उपयोग के लिए उच्च आवृत्ति की आवश्यकता होती है और इसलिए PELT का एक सुसंगत गुण यह है कि यह CPU आवृत्ति को धीरे-धीरे ऊपर या नीचे बढ़ने का कारण बनता है। पीईएलटी उच्च सीपीयू लोड रिपोर्टिंग की ओर भटकता है, इसलिए यह उच्च बैटरी लागत पर उच्च प्रदर्शन प्रदान कर सकता है। इस समय कोई भी वास्तव में यह नहीं कह सकता है कि कौन सा लोड ट्रैकिंग सिस्टम बेहतर है, हालाँकि, दोनों लोड ट्रैकिंग विधियों को लगातार पैच और परिष्कृत किया जा रहा है।

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

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

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

राउंड-रॉबिन, सीएफएस, एचएमपी और ईएएस के फायदे और नुकसान

हालाँकि मेरी ग्राफिक्स कुशलताएँ निम्न स्तर की हैं, फिर भी मैंने एक छवि तैयार की है जिसमें संक्षेप में बताया जाएगा कि इनमें से प्रत्येक शेड्यूलर के फायदे और नुकसान क्या हैं।


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