بهینه‌سازی خودکار بااستفاده از بازخورد (۱۲ یا بالاتر)

سیستم ساخت Android که در Android 12 معرفی شد، از بهینه‌سازی واحدهای Android بومی که قوانین ساخت طرح اولیه دارند بااستفاده از بهینه‌سازی خودکار با هدایت بازخورد (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 مراجعه کنید.

برای دریافت دستورالعمل‌های دقیق درباره نحوه آماده کردن دستگاه‌های X86 برای جمع‌آوری نمایه‌های AutoFDO، به جمع‌آوری داده‌های LBR برای AutoFDO مراجعه کنید.

برای اطلاعات بیشتر درباره نحوه فعال کردن جمع‌آوری، پردازش، و بارگذاری خودکار نمایه پس‌زمینه، به Profcollect مراجعه کنید.

تجزیه‌وتحلیل نمایه‌های AutoFDO

Android از نمایه‌های استاندارد LLVM AutoFDO استفاده می‌کند. نمایه‌های AFDO را می‌توان بااستفاده از ابزار llvm-profdata LLVM خواند. اسکریپت afdo_summary.sh (toolchain/pgo-profiles/scripts/afdo_summary.sh) به‌طور خودکار توابعی را که بیشتر اجرا می‌شوند براساس نمایه AutoFDO تولید می‌کند.