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