אופטימיזציה מכוונת משוב אוטומטית (12 ומעלה)

הוצגה באנדרואיד 12, מערכת ה-build של אנדרואיד תומכת באופטימיזציה של מודולי אנדרואיד מקוריים שיש להם כללי בניית תוכנית באמצעות אופטימיזציה מכוונת משוב אוטומטי (AutoFDO) . AutoFDO היא טכניקת אופטימיזציה מבוססת דגימה. AutoFDO לוכדת את התנהגות זמן הריצה של קבצים בינאריים של המערכת, ומאפשרת למהדרים לבצע אופטימיזציות טובות יותר של ביצועים תוך הפחתת הגודל הבינארי. AutoFDO תומך באיסוף נתונים מארכיטקטורות AArch32 ו- AArch64, אם כי ניתן להשתמש בפרופילים על פני ארכיטקטורות.

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.