Android 12 में लॉन्च किया गया Android बिल्ड सिस्टम, अपने-आप सुझाव देने वाले ऑप्टिमाइज़ेशन (AutoFDO) का इस्तेमाल करके, उन नेटिव Android मॉड्यूल को ऑप्टिमाइज़ करने की सुविधा देता है जिनमें ब्लूप्रिंट बिल्ड नियम होते हैं. AutoFDO, सैंपलिंग पर आधारित ऑप्टिमाइज़ेशन तकनीक है. AutoFDO, सिस्टम बाइनरी के रनटाइम व्यवहार को कैप्चर करता है. इससे कंपाइलर, परफ़ॉर्मेंस को बेहतर तरीके से ऑप्टिमाइज़ कर पाते हैं. साथ ही, बाइनरी का साइज़ भी कम हो जाता है. Android, X86, X86_64, ARM, और ARM64 डिवाइसों से प्रोफ़ाइलें इकट्ठा करने की सुविधा देता है. हालांकि, इन प्रोफ़ाइलों का इस्तेमाल सभी आर्किटेक्चर पर किया जा सकता है.
AutoFDO, इंस्ट्रूमेंटेशन पर आधारित प्रोफ़ाइल-गाइडेड ऑप्टिमाइज़ेशन (PGO) का नया वर्शन है.
इंस्ट्रूमेंटेशन पर आधारित अन्य प्रोफ़ाइलों की तुलना में, AutoFDO के ये अतिरिक्त फ़ायदे हैं:
बिना किसी रुकावट के डेटा इकट्ठा करना: AutoFDO प्रोफ़ाइलों को डेवलपमेंट या उपयोगकर्ता के डिवाइसों से इकट्ठा किया जा सकता है. इसके लिए, नियम बनाने में कोई बदलाव नहीं करना पड़ता.
असल दुनिया में इस्तेमाल का उदाहरण: AutoFDO, असल दुनिया में इस्तेमाल के व्यवहार को दिखाता है. इसमें यह माना जाता है कि प्रोफ़ाइलें, उपयोगकर्ता के डिवाइसों से इकट्ठा की जाती हैं. वहीं, इंस्ट्रूमेंटेशन PGO, सिर्फ़ सिंथेटिक कलेक्शन वर्कलोड को दिखाता है. आम तौर पर, ऐसा कलेक्शन वर्कलोड बनाना आसान नहीं होता जो असल दुनिया में इस्तेमाल किए जाने वाले डेटा से पूरी तरह मैच करता हो.
AOSP, परफ़ॉर्मेंस के लिहाज़ से अहम ज़्यादातर प्रोजेक्ट के लिए, AutoFDO प्रोफ़ाइलों के साथ शिप होता है. ये प्रोफ़ाइलें, फ़ोन और टैबलेट डिवाइसों से इकट्ठा की गई हैं. ये उनके सामान्य इस्तेमाल के पैटर्न को दिखाती हैं. प्रोफ़ाइलें toolchain/pgo-profiles/sampling
में मौजूद होती हैं. AOSP पर, AFDO डिफ़ॉल्ट रूप से चालू होता है.
ब्लूप्रिंट बनाने के नियम के लिए, अपने-आप फ़ाइलें मिटाने की सुविधा चालू करना
ब्लूप्रिंट के बिल्ड नियमों के लिए, अपने-आप फ़ाइलें मिटाने की सुविधा चालू करने के लिए, शेयर की गई लाइब्रेरी या बाइनरी नियम में afdo: true
जोड़ें.
प्रोफ़ाइलें इकट्ठा करना
AOSP के साथ पहले से बंडल की गई प्रोफ़ाइल, इन खास स्थितियों में काम नहीं करती:
- ऑटो एफ़डीओ प्रोजेक्ट को शामिल करना
- स्थानीय तौर पर बदले गए कोड की मौजूदगी
- आपके सिस्टम के इस्तेमाल के यूनीक पैटर्न
अगर आपके ऐप्लिकेशन में इनमें से कोई एक स्थिति है, तो आपको सीधे तौर पर डेवलपमेंट या उपयोगकर्ता के डिवाइसों से प्रोफ़ाइलें इकट्ठा करनी होंगी.
ARM डिवाइसों को ऑटोएफ़डीओ प्रोफ़ाइलें इकट्ठा करने के लिए तैयार करने का तरीका जानने के लिए, ऑटोएफ़डीओ के लिए ईटीएम डेटा इकट्ठा करना लेख पढ़ें.
AutoFDO प्रोफ़ाइलें इकट्ठा करने के लिए, X86 डिवाइसों को तैयार करने का तरीका जानने के लिए, AutoFDO के लिए LBR डेटा इकट्ठा करना लेख पढ़ें.
बैकग्राउंड में प्रोफ़ाइल अपने-आप इकट्ठा होने, प्रोसेस होने, और अपलोड होने की सुविधा चालू करने का तरीका जानने के लिए, Profcollect देखें.
AutoFDO प्रोफ़ाइलों का विश्लेषण करना
Android, स्टैंडर्ड LLVM AutoFDO प्रोफ़ाइलों का इस्तेमाल करता है. LLVM के llvm-profdata
टूल का इस्तेमाल करके, AFDO प्रोफ़ाइलें पढ़ी जा सकती हैं. afdo_summary.sh
स्क्रिप्ट (toolchain/pgo-profiles/scripts/afdo_summary.sh
), AutoFDO प्रोफ़ाइल के हिसाब से, अक्सर इस्तेमाल होने वाले फ़ंक्शन अपने-आप जनरेट करती है.