जब प्रोसेसर के पास करने के लिए कुछ न हो तो क्या करें?

यह मान लेना उचित होगा कि कर्नेल के लिए कुछ भी नहीं करना काफी आसान होगा - लेकिन ऐसा नहीं है। कर्नेल रेसिपीज 2018 सम्मेलन में, राफेल वायसोस्की ने बात की कि प्रोसेसर क्या करते हैं, जब उनके पास करने के लिए कुछ नहीं होता है, तो कर्नेल इसे कैसे संसाधित करता है, इसकी वर्तमान रणनीति क्या है, और निष्क्रिय चक्र पर इसके हाल के काम ने सिस्टम की ऊर्जा स्थिति में सुधार किया है जो कुछ भी नहीं करते हैं। ।

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

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

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

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

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

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

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

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

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


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

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


बिजली की खपत में 20% की गिरावट जब निष्क्रिय लग सकता है एक महत्वहीन उपलब्धि है, लेकिन वास्तव में ऐसा नहीं है। जो भी सिस्टम पीक लोड के साथ काफी अच्छी तरह से सामना करना चाहता है, उसके पास सामान्य मोड में एक पावर रिजर्व होना चाहिए, जो निष्क्रियता के दौरान खुद को प्रकट करेगा। ऊपर दिया गया ग्राफ मेरे सर्वर पर वर्ष के लिए प्रोसेसर के उपयोग को दर्शाता है, जो मेल, फाइल ट्रांसफर, वीपीएन, एनटीपी आदि से संबंधित है। पीले रंग का मतलब है सरल समय। इस ऊर्जा का 20% बचाना मेरे प्रदाता द्वारा पसंद किया जाएगा, और ग्रह के लिए यह बेहतर होगा।

Source: https://habr.com/ru/post/hi427419/


All Articles