אתחול פרופילי תמונה

אנדרואיד 11 ומעלה תומך ביצירת פרופילי תמונת אתחול, המקיפים מידע על הקוד של רכיבים שונים ברמת המערכת, כגון שרת מערכת ומסלול אתחול. Android Runtime (ART) משתמש במידע זה כדי לבצע אופטימיזציות כלל-מערכתיות, שחלקן קריטיות לביצועים של אנדרואיד ומשפיעות על ביצוע כל הקוד הלא מקורי (ברמת המערכת או האפליקציה). במקרים מסוימים, פרופילי תמונת אתחול יכולים להשפיע על ביצועי הביצוע וצריכת הזיכרון באחוזים דו ספרתיים.

קבל מידע על פרופיל האתחול

פרופילי תמונת אתחול נגזרים מהפרופילים של אפליקציות המופעלות במהלך מסעות משתמש קריטיים (CUJs). בתצורת מכשיר ספציפית, ART לוכד (כחלק מפרופילי JIT) את שיטות האתחול והמחלקות המשמשות את האפליקציות, ולאחר מכן מתעד מידע זה בפרופיל האפליקציה (לדוגמה, /data/misc/profiles/cur/0/com.android.chrome/primary.prof ), שבו הוא מתווסף לאינדקס על ידי קובץ האתחול בכיתה Dalvik EXEcutable (DEX) (ראה פורמט פרופיל ART ).

סקור את פרופילי האפליקציה שנרשמו במהלך CUJs כדי לקבוע איזה חלק ממסלול האתחול משמש הכי הרבה והכי חשוב לבצע אופטימיזציה (לדוגמה, ראה פורמט פרופיל ART ). הכללת כל השיטות או המחלקות משפיעה לרעה על הביצועים, לכן התמקד בנתיבי הקוד הנפוצים ביותר. לדוגמה, אם שיטה ממסלול האתחול משמשת אפליקציה בודדת, היא לא אמורה להיות חלק מפרופילי האתחול. כל מכשיר צריך להגדיר את בחירת השיטה/מחלקה בהתבסס על בחירת ה-CUJ וכמות הנתונים שהופקו על ידי בדיקה.

כדי לצבור מידע classpath אתחול מכל פרופילי האפליקציה הבודדים במכשיר, הפעל את פקודת adb shell cmd package snapshot-profile android . אתה יכול להשתמש במידע המצטבר כבסיס לעיבוד ולבחירת שיטה/מעמד מבלי לצבור פרופילים בודדים באופן ידני (אם כי אתה יכול לעשות זאת אם תרצה).

פרופיל תמונת אתחול

איור 1. תהליך לקבלת פרופילי תמונת אתחול

נתוני פרופיל תמונת אתחול

פרופילי תמונת אתחול כוללים את הקבצים והנתונים הבאים.

  • פרופיל עבור כיתת האתחול ( frameworks/base/config/boot-image-profile.txt ). קובע אילו שיטות ממסלול האתחול עוברות אופטימיזציה, איזו מחלקה נכללת בתמונת האתחול .art וכיצד קובצי DEX התואמים מונחים.

  • רשימה של שיעורים טעונים מראש . קובע אילו מחלקות נטענות מראש ב-Zygote.

  • פרופיל עבור רכיבי שרת המערכת ( frameworks/base/services/art-profile ). קובע אילו שיטות משרת המערכת עוברות אופטימיזציה/קומפילציה, איזו מחלקה נכללת בתמונת האתחול .art , וכיצד קובצי DEX המתאימים מונחים.

פורמט פרופיל ART

פרופיל ART לוכד מידע מכל אחד מקבצי ה-DEX הטעונים, כולל מידע על שיטות שכדאי לבצע אופטימיזציה ומחלקות בשימוש במהלך ההפעלה. כאשר פרופיל תמונת אתחול מופעל, ART כולל גם את קבצי האתחול של classpath ו-JAR של שרת המערכת בפרופיל ומציין כל קובץ DEX בשם החבילה שמשתמשת בו.

לדוגמה, זרוק את פרופיל תמונת האתחול הגולמית עם הפקודה הבאה:

adb shell profman --dump-only --profile-file=/data/misc/profman/android.prof

זה מייצר פלט דומה ל:

=== Dex files  ===
=== profile ===
ProfileInfo [012]

core-oj.jar:com.google.android.ext.services [index=0] [checksum=e4e3979a]
        hot methods: 520[], 611[] …
        startup methods: …
        classes: …
...
core-oj.jar:com.android.systemui [index=94] [checksum=e4e3979a]
        hot methods: 520[], 521[]…
        startup methods: …
        classes: …

בדוגמה לעיל:

  • core-oj.jar משמש את com.google.android.ext.services ו- com.android.systemui . כל ערך מפרט את שתי החבילות שבהן נעשה שימוש מ- core-oj.jar .

  • שני התהליכים משתמשים בשיטה עם אינדקס DEX 520, אך רק תהליך systemui משתמש בשיטה עם אינדקס DEX 521. אותו רציונל חל על מקטעי הפרופיל האחרים (לדוגמה, מחלקות ההפעלה).

במהלך עיבוד נתונים, סינון שיטות/מחלקות המבוססות על שימוש, תוך מתן עדיפות לתהליכים ברמת המערכת (לדוגמה, שרת המערכת או systemui ) או לשיטות שאולי לא נעשה בהן שימוש נפוץ אך עדיין חשובות (לדוגמה, שיטות בהן משתמש אפליקציית מצלמה).

פורמט הפרופיל מציין באופן פנימי כל שיטה עם מספר דגלים (אתחול, לאחר הפעלה, hotness, abi), וזה יותר ממה שמוצג בפורמט של dump בלבד. כדי לעשות שימוש בכל האותות, שנה את הסקריפטים הזמינים.

המלצות

השתמש בהנחיות הבאות לקבלת התוצאות הטובות ביותר.

  • פרוס את התצורה להפקת פרופילי תמונת אתחול במספר התקני בדיקה וצבור את התוצאות לפני יצירת פרופיל תמונת האתחול הסופי. הכלי profman תומך בצבירה ובחירת פרופילי תמונת אתחול מרובים, אך הוא פועל רק עם אותה גרסה של תמונת האתחול (אותו נתיב אתחול).

  • תן עדיפות לבחירה לשיטות/מחלקות המשמשות את תהליכי המערכת. שיטות/מחלקות אלו עשויות להשתמש בקוד שאינו משמש לעתים קרובות על ידי אפליקציות אחרות, אך עדיין קריטי לביצוע אופטימיזציה.

  • צורת הנתונים מהפעלת מכשיר בודד נראית שונה מאוד בהשוואה למכשירי בדיקה שמבצעים CUJs בעולם האמיתי. אם אין לך צי גדול של התקני בדיקה, השתמש באותו מכשיר כדי להפעיל מספר CUJs כדי להגביר את הביטחון שהאופטימיזציות של פרופיל תמונת האתחול יעבדו היטב בייצור (תרחיש זה מתואר להלן).

הגדר התקנים

כדי לאפשר תצורת פרופיל אתחול דרך מאפייני מערכת, השתמש באחת מהשיטות הבאות.

  • אפשרות 1: הגדרה ידנית של אביזרים (עובד עד לאתחול מחדש):

    adb root
    adb shell stop
    adb shell setprop dalvik.vm.profilebootclasspath true
    adb shell setprop dalvik.vm.profilesystemserver true
    adb shell start
    
  • אפשרות 2: השתמש ב- local.prop (אפקט קבוע עד למחיקת הקובץ). כדי לעשות זאת:

    1. צור קובץ local.prop עם התוכן:

      dalvik.vm.profilebootclasspath=true
      dalvik.vm.profilesystemserver=true
      
    2. הפעל את הפקודות הבאות:

      adb push local.prop /data/
      adb shell chmod 0750 /data/local.prop
      adb reboot
      
  • אפשרות 3: השתמש בתצורת המכשיר כדי להגדיר את המאפיינים הבאים בצד השרת:

    persist.device_config.runtime_native_boot.profilesystemserver
    persist.device_config.runtime_native_boot.profilebootclasspath`
    

צור פרופילי תמונת אתחול

השתמש בהוראות הבאות כדי ליצור פרופיל תמונת אתחול בסיסי באמצעות בדיקה במכשיר בודד.

  1. הגדר את המכשיר.

    1. הגדר את ההתקן כמתואר בהגדרת התקנים .

    2. (אופציונלי) לוקח זמן לפורמט הפרופיל החדש לנקות ולהחליף את הפרופילים האחרים. כדי להאיץ את איסוף הפרופילים, אפס את כל הפרופילים במכשיר.

      adb shell stop
      adb shell find "/data/misc/profiles -name *.prof -exec truncate -s 0 {} \;"
      adb shell start
      
    3. הפעל את ה-CUJs במכשיר.

  2. צלם את הפרופיל באמצעות הפקודה הבאה:

    adb shell cmd package snapshot-profile android
    
  3. חלץ את הפרופיל באמצעות הפקודה הבאה:

    adb pull /data/misc/profman/android.prof
    
  4. נווט אל קבצי JAR של classpath האתחול באמצעות הפקודות הבאות:

    m dist
    ls $ANDROID_PRODUCT_OUT/boot.zip
    
  5. צור את פרופיל תמונת האתחול באמצעות פקודת profman הבאה.

    profman --generate-boot-image-profile --profile-file=android.prof --out-profile-path=... --out-preloaded-classes-path=...
    
  6. באמצעות נתונים, כוונן את פקודת profman באמצעות דגלי סף הבחירה הזמינים.

    • --method-threshold
    • --class-threshold
    • --clean-class-threshold
    • --preloaded-class-threshold
    • --upgrade-startup-to-hot
    • --special-package

    לצפייה ברשימה המלאה, עיין בדף העזרה profman או בקוד המקור.