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