سیستم ساخت اندروید که در اندروید ۱۲ معرفی شد، از بهینهسازی ماژولهای بومی اندروید که دارای قوانین ساخت طرح اولیه هستند، با استفاده از بهینهسازی خودکار بازخورد-محور (AutoFDO) پشتیبانی میکند. AutoFDO یک تکنیک بهینهسازی مبتنی بر نمونهبرداری است. AutoFDO رفتار زمان اجرا فایلهای باینری سیستم را ثبت میکند و به کامپایلرها این امکان را میدهد که بهینهسازیهای عملکرد بهتری انجام دهند و در عین حال اندازه فایلهای باینری را کاهش دهند. اندروید از جمعآوری پروفایلها از دستگاههای X86، X86_64، ARM و ARM64 پشتیبانی میکند، اگرچه این پروفایلها میتوانند در معماریهای مختلف استفاده شوند.
AutoFDO جانشین بهینهسازی هدایتشده با پروفایل (PGO) مبتنی بر ابزار دقیق است.
در مقایسه با سایر پروفایلهای مبتنی بر ابزار دقیق، AutoFDO مزایای اضافی زیر را دارد:
جمعآوری دادههای نامحسوس: پروفایلهای AutoFDO را میتوان بدون هیچ گونه تغییری برای ساخت قوانین، از دستگاههای توسعهدهنده یا کاربر جمعآوری کرد.
نمایش استفاده در دنیای واقعی: AutoFDO رفتار استفاده در دنیای واقعی را با فرض اینکه پروفایلها از دستگاههای کاربر جمعآوری شدهاند، نشان میدهد، در حالی که Instrumentation PGO فقط نماینده حجم کار جمعآوری مصنوعی است. ایجاد یک حجم کار جمعآوری که کاملاً با استفاده در دنیای واقعی مطابقت داشته باشد، معمولاً ساده نیست.
AOSP برای اکثر پروژههای حساس به عملکرد، پروفایلهای AutoFDO را ارائه میدهد. این پروفایلها از دستگاههای تلفن و تبلت جمعآوری شدهاند و نمایانگر الگوهای کلی استفاده آنها هستند. این پروفایلها در مسیر toolchain/pgo-profiles/sampling قرار دارند. AFDO به طور پیشفرض در AOSP فعال است.
فعال کردن AutoFDO برای یک قانون ساخت طرح اولیه
برای فعال کردن AutoFDO برای قوانین ساخت طرح اولیه، afdo: true به کتابخانه مشترک یا قانون دودویی اضافه کنید.
جمعآوری پروفایلها
پروفایل از پیش آماده شده همراه با AOSP از این سناریوهای خاص پشتیبانی نمیکند:
- گنجاندن پروژههای اضافی AutoFDO
- وجود کد اصلاحشده محلی
- الگوهای استفاده منحصر به فرد مرتبط با سیستم شما
اگر یکی از این سناریوها را دارید، باید پروفایلها را مستقیماً از دستگاههای توسعهدهنده یا کاربر جمعآوری کنید.
برای دستورالعملهای دقیق در مورد نحوه آمادهسازی دستگاههای ARM برای جمعآوری پروفایلهای AutoFDO، به بخش جمعآوری دادههای ETM برای AutoFDO مراجعه کنید.
برای دستورالعملهای دقیق در مورد نحوه آمادهسازی دستگاههای X86 برای جمعآوری پروفایلهای AutoFDO، به بخش جمعآوری دادههای LBR برای AutoFDO مراجعه کنید.
برای اطلاعات بیشتر در مورد نحوه فعال کردن جمعآوری، پردازش و آپلود خودکار پروفایل پسزمینه، به Profcollect مراجعه کنید.
پروفایلهای AutoFDO را تجزیه و تحلیل کنید
اندروید از پروفایلهای استاندارد LLVM AutoFDO استفاده میکند. پروفایلهای AFDO را میتوان با استفاده از ابزار llvm-profdata در LLVM خواند. اسکریپت afdo_summary.sh ( toolchain/pgo-profiles/scripts/afdo_summary.sh ) به طور خودکار توابعی را که بیشترین اجرا را دارند، طبق پروفایل AutoFDO تولید میکند.