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

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

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

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

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

لتجميع معلومات مسار التمهيد من جميع الملفات الشخصية للتطبيقات الفردية على على جهازك، شغِّل الأمر 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: …

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

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

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

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

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

الاقتراحات

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

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

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

  • يبدو شكل البيانات من جهاز واحد تم تشغيله مختلفًا جدًا مقارنةً بالاختبار الأجهزة التي تنفّذ موجّهات CUJ في العالم الحقيقي. إذا لم يكن لديك مجموعة كبيرة من الاختبارات الأجهزة نفسها لتشغيل عدة طلبات 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: استخدام إعداد الجهاز لضبط ما يلي من جهة الخادم المواقع:

    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.