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

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

الحصول على معلومات حول ملف البدء

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

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

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

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

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

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

تتضمّن الملفات الشخصية لصور التمهيد الملفات والبيانات التالية:

  • الملف الشخصي لمسار تجميع boot classpath (frameworks/base/config/boot-image-profile.txt): يحدِّد الطرق التي يتم تحسينها من مسار تجميع boot classpath والفئة التي يتم تضمينها في صورة .art لبدء التشغيل وكيفية تنسيق ملفات DEX المقابلة.

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

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

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

يُسجِّل ملف تعريف ART معلومات من كل ملف من ملفات DEX المحمَّلة، بما في ذلك معلومات عن الطرق التي تستحق التحسين والفئات المستخدَمة أثناء التشغيل. عند تفعيل ميزة تحليل أداء صورة التمهيد، يُدرِج ART أيضًا ملف JAR الخاص بمسار تحميل boot وملف 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: …

في المثال أعلاه:

  • يستخدم com.google.android.ext.services وcom.android.systemui core-oj.jar. يسرد كل إدخال الحزمتَين المستخدَمتَين من core-oj.jar.

  • تستخدم كلتا العمليتين الطريقة مع فهرس DEX 520، ولكن عملية systemui فقط هي التي تستخدم الطريقة مع فهرس DEX 521. ينطبق نفس الأساس على أقسام الملف الشخصي الأخرى (على سبيل المثال، فئات الشركات الناشئة).

أثناء معالجة البيانات، يمكنك فلترة الطرق/الفئات استنادًا إلى الاستخدام، مع إعطاء الأولوية للعمليات على مستوى النظام (على سبيل المثال، خادم النظام أو systemui) أو الطرق التي قد لا يشيع استخدامها ولكنها لا تزال مهمة (مثل الطرق التي يستخدمها تطبيق الكاميرا).

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

الاقتراحات

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

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

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

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

إعداد الأجهزة

لتفعيل إعداد ملف التحميل من خلال خصائص النظام، استخدِم إحدى ال methods التالية.

  • الخيار 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. شغِّل تطبيقات CUJ على الجهاز.

  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.