Android उपकरणों की शक्ति और प्रदर्शन को प्रबंधित करने से यह सुनिश्चित करने में मदद मिल सकती है कि एप्लिकेशन हार्डवेयर की एक विस्तृत श्रृंखला पर लगातार और सुचारू रूप से चल रहे हैं। एंड्रॉइड 7.0 और बाद में, ओईएम निरंतर प्रदर्शन संकेतों के लिए समर्थन लागू कर सकते हैं जो ऐप्स को एक सुसंगत डिवाइस प्रदर्शन बनाए रखने में सक्षम बनाता है और सीपीयू-गहन, अग्रभूमि अनुप्रयोगों के प्रदर्शन को बेहतर बनाने के लिए एक विशेष कोर निर्दिष्ट करता है।
निरंतर प्रदर्शन
लंबे समय तक चलने वाले अनुप्रयोगों (गेम, कैमरा, रेंडरस्क्रिप्ट , ऑडियो प्रोसेसिंग) के लिए, प्रदर्शन नाटकीय रूप से भिन्न हो सकता है क्योंकि डिवाइस तापमान सीमा तक पहुंच जाता है और चिप (एसओसी) इंजन पर सिस्टम थ्रॉटल हो जाता है। उच्च-प्रदर्शन, लंबे समय तक चलने वाले ऐप बनाने वाले ऐप डेवलपर्स सीमित हैं क्योंकि अंतर्निहित प्लेटफॉर्म की क्षमताएं एक चलती लक्ष्य हैं जब डिवाइस गर्म होना शुरू होता है।
इन सीमाओं को दूर करने के लिए, एंड्रॉइड 7.0 ने निरंतर प्रदर्शन के लिए समर्थन पेश किया, जिससे ओईएम लंबे समय तक चलने वाले अनुप्रयोगों के लिए डिवाइस प्रदर्शन क्षमताओं पर संकेत प्रदान कर सके। ऐप डेवलपर इन संकेतों का उपयोग लंबे समय तक डिवाइस के प्रदर्शन के अनुमानित, सुसंगत स्तर के लिए एप्लिकेशन को ट्यून करने के लिए कर सकते हैं।
आर्किटेक्चर
एक एंड्रॉइड एप्लिकेशन प्लेटफॉर्म को एक निरंतर प्रदर्शन मोड में प्रवेश करने का अनुरोध कर सकता है जहां एंड्रॉइड डिवाइस लंबे समय तक प्रदर्शन का एक सुसंगत स्तर रख सकता है।
चित्रा 1. सतत प्रदर्शन मोड वास्तुकला
कार्यान्वयन
Android 7.0 और बाद के संस्करणों में निरंतर प्रदर्शन का समर्थन करने के लिए, OEM को:
- अधिकतम CPU/GPU आवृत्तियों को लॉक करने या थर्मल थ्रॉटलिंग को रोकने के लिए अन्य अनुकूलन करने के लिए पावर एचएएल में डिवाइस-विशिष्ट परिवर्तन करें।
- पावर एचएएल में नया संकेत
POWER_HINT_SUSTAINED_PERFORMANCE
लागू करें। -
isSustainedPerformanceModeSupported()
API के माध्यम से TRUE लौटाकर समर्थन की घोषणा करें। -
Window.setSustainedPerformanceMode
लागू करें।
नेक्सस संदर्भ कार्यान्वयन में, पावर संकेत उच्चतम टिकाऊ स्तरों पर सीपीयू और जीपीयू की अधिकतम आवृत्तियों को कैप करता है। ध्यान रखें कि CPU/GPU फ़्रीक्वेंसी में MAX बार को कम करने से फ़्रेम दर कम हो जाएगी, लेकिन इसकी स्थिरता के कारण इस मोड में इस कम दर को प्राथमिकता दी जाती है। उदाहरण के लिए, सामान्य अधिकतम घड़ियों का उपयोग करने वाला उपकरण कुछ मिनटों के लिए 60 FPS पर रेंडर करने में सक्षम हो सकता है, लेकिन डिवाइस के गर्म होने के बाद, यह 30 मिनट के अंत तक 30 FPS तक सीमित हो सकता है। निरंतर मोड का उपयोग करते समय, उदाहरण के लिए, डिवाइस पूरे 30 मिनट के लिए लगातार 45 एफपीएस पर प्रस्तुत कर सकता है। लक्ष्य एक फ्रेम दर है जब मोड का उपयोग नहीं करते समय फ्रेम दर की तुलना में उच्च (या अधिक) मोड का उपयोग किया जाता है, और समय के साथ संगत होता है ताकि डेवलपर्स को चलती लक्ष्य का पीछा न करना पड़े।
हम निरंतर मोड को लागू करने की दृढ़ता से अनुशंसा करते हैं जैसे कि डिवाइस उच्चतम संभव निरंतर प्रदर्शन प्राप्त करता है-न केवल परीक्षण पास करने के लिए आवश्यक न्यूनतम मान (उदाहरण के लिए उच्चतम संभव MAX फ़्रीक्वेंसी कैप चुनें जो डिवाइस को समय के साथ थर्मली थ्रॉटल का कारण नहीं बनाते हैं)।
नोट : निरंतर मोड को लागू करने के लिए मैक्स घड़ी दरों को कैपिंग करने की आवश्यकता नहीं है।
मान्यकरण
ओईएम निरंतर प्रदर्शन एपीआई के अपने कार्यान्वयन को सत्यापित करने के लिए सीटीएस परीक्षण (एंड्रॉइड 7.0 और बाद के संस्करण) का उपयोग कर सकते हैं। परीक्षण लगभग 30 मिनट के लिए एक कार्यभार चलाता है और निरंतर मोड सक्षम के साथ और बिना प्रदर्शन को बेंचमार्क करता है:
- निरंतर मोड सक्षम होने के साथ, फ़्रेम दर अपेक्षाकृत स्थिर रहनी चाहिए (परीक्षण समय के साथ फ़्रेम दर में परिवर्तन के प्रतिशत को मापता है और इसके लिए <5% परिवर्तन की आवश्यकता होती है)।
- निरंतर मोड सक्षम होने के साथ, फ़्रेम दर 30 मिनट के अंत में अक्षम मोड के साथ फ़्रेम दर से कम नहीं होनी चाहिए।
इसके अलावा, आप यह सुनिश्चित करने के लिए कि 30 मिनट के उपयोग के बाद डिवाइस थर्मली रूप से थ्रॉटल नहीं करता है, आप कई सीपीयू- और जीपीयू-गहन वर्कलोड के साथ मैन्युअल रूप से अपने कार्यान्वयन का परीक्षण कर सकते हैं। आंतरिक परीक्षण में, हमने गेम और बेंचमार्किंग ऐप्स (जैसे gfxbench ) सहित नमूना वर्कलोड का उपयोग किया।
विशेष कोर
सीपीयू-गहन, समय-संवेदी कार्यभार के लिए, किसी अन्य थ्रेड द्वारा छूट प्राप्त करना फ्रेम की समय सीमा बनाने या नहीं करने के बीच का अंतर हो सकता है। उन ऐप्स के लिए जिनमें सख्त विलंबता और फ्रेम दर की आवश्यकताएं हैं (जैसे ऑडियो या वर्चुअल रियलिटी ऐप), एक विशेष CPU कोर होने से प्रदर्शन के स्वीकार्य स्तर की गारंटी हो सकती है।
एंड्रॉइड 7.0 या बाद के संस्करण चलाने वाले डिवाइस अब शीर्ष अग्रभूमि एप्लिकेशन के लिए स्पष्ट रूप से एक कोर आरक्षित कर सकते हैं, सभी अग्रभूमि ऐप्स के प्रदर्शन में सुधार कर सकते हैं और उच्च तीव्रता वाले वर्कलोड वाले ऐप्स को सीपीयू कोर में उनके काम को आवंटित करने के तरीके पर अधिक नियंत्रण दे सकते हैं।
किसी डिवाइस पर विशेष कोर का समर्थन करने के लिए:
-
cpusets
सक्षम करें और एकcpuset
कॉन्फ़िगर करें जिसमें केवल शीर्ष अग्रभूमि अनुप्रयोग हो। - सुनिश्चित करें कि एक कोर (यह एक्सक्लूसिव कोर है) इस
cpuset
से थ्रेड्स के लिए आरक्षित है। - अनन्य कोर की मूल संख्या वापस करने के लिए getExclusiveCores API लागू करें।
यह निर्धारित करने के लिए कि कौन सी प्रक्रियाएँ किस कोर पर निर्धारित हैं, किसी भी कार्यभार को चलाते समय systrace
का उपयोग करें और सत्यापित करें कि शीर्ष अग्रभूमि अनुप्रयोग के अलावा अन्य अनुप्रयोगों से कोई उपयोगकर्ता स्थान थ्रेड अनन्य कोर पर निर्धारित नहीं है।
Nexus 6P के संदर्भ कार्यान्वयन को देखने के लिए, android//device/huawei/angler/power/power.c
।