← नवीनतम पेपर
💻 संगणक विज्ञान

From Code-Level Change to CI/CD Feedback: Empirical Validation of an Energy-Aware Software Framework

यह अध्ययन यह प्रदर्शित करके एक एकीकृत ऊर्जा-जागरूक सॉफ्टवेयर ढांचे को अनुभवजन्य रूप से मान्य करता है कि कोड-स्तरीय हस्तक्षेप, CI/CD ऊर्जा माप और रिग्रेशन डिटेक्शन वास्तविक दुनिया के स्प्रिंग बूट (Spring Boot) अनुप्रयोगों में ऊर्जा अक्षमताओं को पहचानने और उन्हें स्थानीयकृत करने के लिए एक सुसंगत फीडबैक लूप के रूप में एक साथ कार्य कर सकते हैं।

मूल लेखक: Muhammad Asif Khan, Mbanyick Joof, Shola Oyedeji, Jari Porras

प्रकाशित 2026-11-12
📖 7 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Muhammad Asif Khan, Mbanyick Joof, Shola Oyedeji, Jari Porras

मूल पेपर CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। ✨ नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

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

लैप्पेनरांटा-लाथी यूनिवर्सिटी ऑफ टेक्नोलॉजी, फिनलैंड की शोधकर्ताओं की एक टीम ने इस अदृश्य ऊर्जा को उन उपकरणों के भीतर दृश्यमान बनाने का निर्णय लिया जिनका उपयोग डेवलपर्स प्रतिदिन करते हैं। उन्होंने एक ऐसी प्रणाली का परीक्षण किया जिसे एक फीडबैक लूप के रूप में कार्य करने के लिए डिज़ाइन किया गया था, जो तीन अलग-अलग चरणों को जोड़ता है: कोड में बदलाव करना, उस बदलाव की ऊर्जा को स्वचालित रूप से मापना, और ऊर्जा के किसी भी उछाल को विफलता के रूप में चिह्नित करना, ठीक वैसे ही जैसे एक टेस्ट जो बग्स की जाँच करता है। यह देखने के लिए कि क्या यह वास्तविक दुनिया में काम करता है, उन्होंने अपनी प्रणाली को दो ओपन-सोर्स सॉफ्टवेयर अनुप्रयोगों और एक मानक स्वचालित परीक्षण पाइपलाइन पर लागू किया। उन्होंने केवल एक नया विचार प्रस्तावित नहीं किया; उन्होंने इसे बनाया, चलाया और इसके परिणामों को मापा। उनका कार्य यह प्रदर्शित करता है कि डेवलपर द्वारा कोड सबमिट करते ही ऊर्जा की बर्बादी को पकड़ना संभव है, जिससे कोड में वास्तविक समस्या और साझा बुनियादी ढांचे (इंफ्रास्ट्रक्चर) पर चलने वाले कंप्यूटरों में होने वाले सामान्य, हानिरहित उतार-चढ़ाव के बीच अंतर किया जा सके।

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

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

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

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

अंततः, यह शोध एक 'प्रूफ ऑफ कॉन्सेप्ट' प्रदान करता है कि ऊर्जा दक्षता को बग्स या प्रदर्शन की गति की जाँच की तरह ही एक नियमित गुणवत्ता जाँच के रूप में माना जा सकता है। ऊर्जा खपत को विकास वर्कफ़्लो के भीतर दृश्यमान और कार्रवाई योग्य बनाकर, यह प्रणाली डेवलपर्स को कोड रिलीज़ होने से पहले सूचित निर्णय लेने के लिए सशक्त बनाती है। अध्ययन पुष्टि करता है कि तीन तकनीकी घटक—कोड को मापना, पाइपलाइन में डेटा को एकीकृत करना, और रिग्रेशन का पता लगाना—एकल लूप के रूप में मिलकर काम कर सकते हैं। हालांकि शोधकर्ता स्वीकार करते हैं कि व्यापक रूप से अपनाने के लिए डेवलपर्स की इन संकेतों के प्रति प्रतिक्रिया के मूल्यांकन की आवश्यकता होगी, लेकिन मुख्य निष्कर्ष ठोस है: यह संभव है कि एक ऐसा सिस्टम बनाया जाए जो वास्तविक समय में ऊर्जा की बर्बादी को पकड़े, जिससे एक अदृश्य समस्या को सॉफ्टवेयर निर्माण प्रक्रिया के एक प्रबंधनीय हिस्से में बदला जा सके।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →