ملفات تعريف صور التمهيد

يدعم Android 11 أو الإصدارات الأحدث إنشاء ملفات تعريف صور التمهيد، والتي تحتوي على معلومات حول رمز المكونات المختلفة على مستوى النظام مثل خادم النظام ومسار فئة التمهيد. يستخدم Android Runtime (ART) هذه المعلومات لإجراء تحسينات على مستوى النظام، وبعضها مهم لأداء Android ويؤثر على تنفيذ جميع التعليمات البرمجية غير الأصلية (مستوى النظام أو التطبيق). في بعض الحالات، يمكن أن تؤثر ملفات تعريف صورة التمهيد على أداء التنفيذ واستهلاك الذاكرة بنسب مئوية مكونة من رقمين.

الحصول على معلومات ملف تعريف التمهيد

يتم اشتقاق ملفات تعريف صور التمهيد من ملفات تعريف التطبيقات التي يتم تنفيذها أثناء رحلات المستخدم الهامة (CUJs). في تكوين جهاز معين، يلتقط ART (كجزء من ملفات تعريف JIT) أساليب مسار فئة التمهيد والفئات التي تستخدمها التطبيقات، ثم يسجل تلك المعلومات في ملف تعريف التطبيق (على سبيل المثال، /data/misc/profiles/cur/0/com.android.chrome/primary.prof ) ، حيث تتم فهرسته بواسطة ملف Dalvik EXecutable (DEX) الخاص بمسار فئة التمهيد (راجع تنسيق ملف تعريف ART ).

قم بمراجعة ملفات تعريف التطبيق المسجلة أثناء CUJs لتحديد الجزء الأكثر استخدامًا والأكثر أهمية من مسار فئة التمهيد للتحسين (على سبيل المثال، راجع تنسيق ملف تعريف ART ). يؤثر تضمين كافة الأساليب أو الفئات سلبًا على الأداء، لذا ركز على مسارات التعليمات البرمجية الأكثر استخدامًا. على سبيل المثال، إذا تم استخدام طريقة من مسار فئة التمهيد بواسطة تطبيق واحد، فلا ينبغي أن تكون جزءًا من ملفات تعريف التمهيد. يجب على كل جهاز تكوين اختيار الطريقة/الفئة بناءً على تحديد CUJ وكمية البيانات الناتجة عن الاختبار.

لتجميع معلومات مسار فئة التمهيد من جميع ملفات تعريف التطبيقات الفردية على الجهاز، قم بتشغيل الأمر adb shell cmd package snapshot-profile android . يمكنك استخدام المعلومات المجمعة كأساس للمعالجة واختيار الطريقة/الفئة دون تجميع ملفات التعريف الفردية يدويًا (على الرغم من أنه يمكنك القيام بذلك إذا رغبت في ذلك).

ملف تعريف صورة التمهيد

الشكل 1. عملية الحصول على ملفات تعريف صور التمهيد

بيانات ملف تعريف صورة التمهيد

تتضمن ملفات تعريف صور التمهيد الملفات والبيانات التالية.

  • الملف التعريفي لمسار فئة التمهيد ( frameworks/base/config/boot-image-profile.txt ). يحدد الأساليب التي سيتم تحسينها من مسار فئة التمهيد، والفئة المضمنة في صورة boot .art ، وكيفية تخطيط ملفات DEX المقابلة.

  • قائمة الطبقات المحملة مسبقا . تحديد الفئات التي تم تحميلها مسبقًا في Zygote.

  • الملف التعريفي لمكونات خادم النظام ( frameworks/base/services/art-profile ). يحدد الأساليب التي يتم تحسينها/تجميعها من خادم النظام، والفئة المضمنة في صورة التمهيد .art ، وكيفية تخطيط ملفات DEX المقابلة.

تنسيق الملف الشخصي ART

يلتقط ملف تعريف ART المعلومات من كل ملف من ملفات DEX المحملة، بما في ذلك معلومات حول الأساليب التي تستحق التحسين والفئات المستخدمة أثناء بدء التشغيل. عند تمكين ملف تعريف صورة التمهيد، يتضمن ART أيضًا مسار فئة التمهيد وملفات 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 ) أو للطرق التي قد لا تكون شائعة الاستخدام ولكنها لا تزال مهمة (على سبيل المثال، الطرق المستخدمة بواسطة تطبيق الكاميرا).

يعلق تنسيق ملف التعريف داخليًا على كل طريقة بإشارات متعددة (بدء التشغيل، وبعد بدء التشغيل، والسخونة، وabi)، وهو أكثر مما يتم عرضه في تنسيق التفريغ فقط. للاستفادة من كافة الإشارات، قم بتعديل البرامج النصية المتاحة.

التوصيات

استخدم الإرشادات التالية للحصول على أفضل النتائج.

  • انشر التكوين لإنشاء ملفات تعريف صورة التمهيد على العديد من أجهزة الاختبار وقم بتجميع النتائج قبل إنشاء ملف تعريف صورة التمهيد النهائي. تدعم أداة 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 الخاصة بمسار فئة التمهيد باستخدام الأوامر التالية:

    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 أو كود المصدر.