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