الملفات الشخصية لصور التشغيل

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

الحصول على معلومات ملف التشغيل

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

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

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

ملف تعريف صورة التشغيل

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

بيانات ملف صورة التشغيل

تتضمّن ملفات تعريف صورة التشغيل الملفات والبيانات التالية.

  • الملف الشخصي لمسار فئة التشغيل (frameworks/base/config/boot-image-profile.txt. يحدّد هذا الملف الطرق التي يتم تحسينها من مسار فئة التشغيل والفئة التي يتم تضمينها في صورة .art للتشغيل.

  • قائمة الفئات المحمَّلة مسبقًا تحدِّد هذه السمة الفئات التي يتم تحميلها مسبقًا في 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) أو للطرق التي قد لا يتم استخدامها بشكل شائع ولكنها لا تزال مهمة (مثل الطرق التي يستخدمها تطبيق الكاميرا).

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

الاقتراحات

اتّبِع الإرشادات التالية للحصول على أفضل النتائج.

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

  • منح الأولوية في الاختيار للطُرق/الفئات التي تستخدمها عمليات النظام. قد تستخدم هذه الطرق/الفئات رمزًا برمجيًا لا تستخدمه التطبيقات الأخرى غالبًا، ولكنّه يظل مهمًا لتحسين الأداء.

  • يختلف شكل البيانات من عملية تشغيل واحدة على جهاز واحد بشكل كبير مقارنةً بأجهزة الاختبار التي تنفّذ سيناريوهات استخدام شائعة. إذا لم يكن لديك مجموعة كبيرة من أجهزة الاختبار، استخدِم الجهاز نفسه لتنفيذ عدة رحلات مستخدم شائعة (CUJ) لزيادة الثقة في أنّ تحسينات ملف صورة التشغيل ستعمل بشكل جيد في مرحلة الإنتاج (يتم وصف هذا السيناريو أدناه).

ضبط الأجهزة

لتفعيل إعداد ملف التشغيل من خلال خصائص النظام، استخدِم إحدى الطريقتَين التاليتَين.

  • الخيار 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: استخدِم إعدادات الجهاز لضبط السمات التالية من جهة الخادم:

    adb shell device_config put runtime_native_boot profilebootclasspath true
    adb shell device_config put runtime_native_boot profilesystemserver true
    

إنشاء ملفات تعريف صور التمهيد

استخدِم التعليمات التالية لإنشاء ملف تعريف أساسي لصورة التمهيد باستخدام الاختبار على جهاز واحد.

  1. اضبط إعدادات الجهاز.

    1. اضبط الجهاز على النحو الموضّح في ضبط الأجهزة.

    2. (اختياري) يستغرق تنسيق الملف الشخصي الجديد بعض الوقت لتنظيف الملفات الشخصية الأخرى واستبدالها. لتسريع عملية جمع الملفات الشخصية، أعِد ضبط جميع الملفات الشخصية على الجهاز.

      adb shell stop
      adb shell find "/data/misc/profiles -name *.prof -exec truncate -s 0 {} \;"
      adb shell start
    3. تشغيل حالات الاستخدام الشائعة على الجهاز

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