निष्पादन प्रबंधन

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

सतत प्रदर्शन

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

इन सीमाओं को संबोधित करने के लिए, एंड्रॉइड 7.0 ने निरंतर प्रदर्शन के लिए समर्थन पेश किया, जिससे ओईएम को लंबे समय तक चलने वाले ऐप्स के लिए डिवाइस प्रदर्शन क्षमताओं पर संकेत प्रदान करने में सक्षम बनाया गया। ऐप डेवलपर लंबे समय तक डिवाइस के प्रदर्शन के पूर्वानुमानित, सुसंगत स्तर के लिए ऐप्स को ट्यून करने के लिए इन संकेतों का उपयोग कर सकते हैं।

वास्तुकला

एक एंड्रॉइड ऐप प्लेटफ़ॉर्म से निरंतर प्रदर्शन मोड में प्रवेश करने का अनुरोध कर सकता है जहां एंड्रॉइड डिवाइस लंबे समय तक प्रदर्शन का एक सुसंगत स्तर बनाए रख सकता है।

चित्र 1. सतत प्रदर्शन मोड आर्किटेक्चर।

कार्यान्वयन

Android 7.0 और बाद के संस्करण में निरंतर प्रदर्शन का समर्थन करने के लिए, OEM को यह करना होगा:

  • अधिकतम सीपीयू/जीपीयू आवृत्तियों को लॉक करने या थर्मल थ्रॉटलिंग को रोकने के लिए अन्य अनुकूलन करने के लिए पावर एचएएल में डिवाइस-विशिष्ट परिवर्तन करें।
  • पावर HAL में नया संकेत POWER_HINT_SUSTAINED_PERFORMANCE लागू करें।
  • isSustainedPerformanceModeSupported() API के माध्यम से TRUE लौटाकर समर्थन की घोषणा करें।
  • Window.setSustainedPerformanceMode लागू करें।

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

हम दृढ़तापूर्वक निरंतर मोड को लागू करने की अनुशंसा करते हैं ताकि डिवाइस उच्चतम संभव निरंतर प्रदर्शन प्राप्त कर सके - न कि केवल परीक्षण पास करने के लिए आवश्यक न्यूनतम मान (उदाहरण के लिए उच्चतम संभव मैक्स आवृत्ति कैप चुनें जो डिवाइस को समय के साथ थर्मल रूप से थ्रॉटल करने का कारण नहीं बनता है)।

ध्यान दें : निरंतर मोड को लागू करने के लिए अधिकतम घड़ी दरों को कैप करना आवश्यक नहीं है।

मान्यकरण

OEM निरंतर प्रदर्शन एपीआई के अपने कार्यान्वयन को सत्यापित करने के लिए सीटीएस परीक्षण (एंड्रॉइड 7.0 और बाद के संस्करण) का उपयोग कर सकते हैं। परीक्षण लगभग 30 मिनट तक कार्यभार चलाता है और निरंतर मोड सक्षम होने के साथ और उसके बिना प्रदर्शन को बेंचमार्क करता है:

  • निरंतर मोड सक्षम होने पर, फ्रेम दर अपेक्षाकृत स्थिर रहनी चाहिए (परीक्षण समय के साथ फ्रेम दर में परिवर्तन का प्रतिशत मापता है और <5% परिवर्तन की आवश्यकता होती है)।
  • निरंतर मोड सक्षम होने पर, फ़्रेम दर मोड अक्षम होने पर 30 मिनट के अंत में फ़्रेम दर से कम नहीं होनी चाहिए।

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

विशिष्ट कोर

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

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

किसी डिवाइस पर एक विशेष कोर का समर्थन करने के लिए:

  • cpusets सक्षम करें और एक cpuset कॉन्फ़िगर करें जिसमें केवल शीर्ष अग्रभूमि ऐप हो।
  • सुनिश्चित करें कि एक कोर (यह विशिष्ट कोर है) इस cpuset से थ्रेड के लिए आरक्षित है।
  • एक्सक्लूसिव कोर के कोर नंबर को वापस करने के लिए getExplusCores API को लागू करें।

यह निर्धारित करने के लिए कि कौन सी प्रक्रियाएँ किस कोर पर निर्धारित हैं, किसी भी कार्यभार को चलाने के दौरान systrace उपयोग करें और सत्यापित करें कि शीर्ष अग्रभूमि ऐप के अलावा अन्य ऐप्स से कोई भी यूजरस्पेस थ्रेड विशेष कोर पर निर्धारित नहीं है।

Nexus 6P के लिए संदर्भ कार्यान्वयन देखने के लिए, android//device/huawei/angler/power/power.c देखें।