يتيح الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث إنشاء ملفات تعريف لصورة التمهيد، وهي تتضمّن معلومات حول رمز مختلف المكوّنات على مستوى النظام، مثل خادم النظام ومسار فئة التمهيد. يستخدم وقت تشغيل Android (ART) هذه المعلومات لإجراء عمليات تحسين على مستوى النظام، وبعضها ضروري لأداء Android ويؤثر في تنفيذ جميع الرموز غير الأصلية (على مستوى النظام أو التطبيق). في بعض الحالات، يمكن أن تؤثر ملفات تعريف صورة التشغيل في أداء التنفيذ واستهلاك الذاكرة بنسب مئوية تتألف من رقمَين.
الحصول على معلومات ملف التشغيل
يتم استخلاص ملفات صور التشغيل من ملفات التطبيقات التي يتم تنفيذها أثناء رحلات المستخدمين الرئيسية (CUJ). في إعدادات جهاز معيّنة، تسجّل ART (كجزء من ملفات JIT) طرق وفئات مسار فئة التمهيد التي تستخدمها التطبيقات، ثم تسجّل هذه المعلومات في ملف تعريف التطبيق (على سبيل المثال، /data/misc/profiles/cur/0/com.android.chrome/primary.prof)، حيث يتم فهرسته حسب ملف Dalvik EXecutable (DEX) لمسار فئة التمهيد (راجِع تنسيق ملف تعريف ART).
راجِع ملفات تعريف التطبيق التي تم تسجيلها أثناء رحلات المستخدمين الشائعة لتحديد الجزء الأكثر استخدامًا والأكثر أهمية من مسار فئة التمهيد الذي يجب تحسينه (للاطّلاع على مثال، راجِع تنسيق ملف تعريف ART). يؤثر تضمين جميع الطرق أو الفئات سلبًا في الأداء، لذا ركِّز على مسارات الرموز الأكثر استخدامًا. على سبيل المثال، إذا كان تطبيق واحد يستخدم طريقة من مسار فئة التمهيد، يجب ألا تكون هذه الطريقة جزءًا من ملفات تعريف التمهيد. يجب أن يضبط كل جهاز طريقة/فئة الاختيار استنادًا إلى اختيار رحلة المستخدم الأساسية (CUJ) ومقدار البيانات التي ينتجها الاختبار.
لتجميع معلومات مسار فئة التمهيد من جميع ملفات التطبيقات الفردية على الجهاز، شغِّل الأمر 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تجميع واختيار ملفات شخصية متعددة لصورة التشغيل، ولكنّها لا تعمل إلا مع الإصدار نفسه من صورة التشغيل (مسار فئة التشغيل نفسه).منح الأولوية في الاختيار للطُرق/الفئات التي تستخدمها عمليات النظام قد تستخدم هذه الطرق/الفئات رمزًا برمجيًا لا تستخدمه التطبيقات الأخرى غالبًا، ولكنّه يظل مهمًا لتحسين الأداء.
يختلف شكل البيانات من عملية تشغيل واحدة على جهاز واحد بشكل كبير مقارنةً بأجهزة الاختبار التي تنفّذ سيناريوهات استخدام شائعة. إذا لم يكن لديك مجموعة كبيرة من أجهزة الاختبار، استخدِم الجهاز نفسه لتنفيذ عدة رحلات مستخدم شائعة لزيادة الثقة في أنّ تحسينات ملف تعريف صورة التمهيد ستعمل بشكل جيد في مرحلة الإنتاج (يتم وصف هذا السيناريو أدناه).
ضبط الأجهزة
لتفعيل إعداد ملف التشغيل من خلال خصائص النظام، استخدِم إحدى الطريقتَين التاليتَين.
الخيار 1: إعداد الخصائص يدويًا (يعمل حتى إعادة التشغيل):
adb rootadb shell stopadb shell setprop dalvik.vm.profilebootclasspath trueadb shell setprop dalvik.vm.profilesystemserver trueadb shell startالخيار 2: استخدام
local.prop(تأثير دائم إلى أن يتم حذف الملف) لإجراء ذلك:أنشئ ملف
local.propيتضمّن المحتوى التالي:dalvik.vm.profilebootclasspath=true dalvik.vm.profilesystemserver=trueنفِّذ الأوامر التالية:
adb push local.prop /data/adb shell chmod 0750 /data/local.propadb reboot
الخيار 3: استخدام إعدادات الجهاز لضبط السمات التالية من جهة الخادم:
adb shell device_config put runtime_native_boot profilebootclasspath true adb shell device_config put runtime_native_boot profilesystemserver true
إنشاء ملفات تعريف صور التمهيد
استخدِم التعليمات التالية لإنشاء ملف تعريف أساسي لصورة التمهيد باستخدام الاختبار على جهاز واحد.
اضبط إعدادات الجهاز.
اضبط الجهاز كما هو موضّح في ضبط الأجهزة.
(اختياري) يستغرق تنسيق الملف الشخصي الجديد بعض الوقت لتنظيف الملفات الشخصية الأخرى واستبدالها. لتسريع عملية جمع الملفات الشخصية، أعِد ضبط جميع الملفات الشخصية على الجهاز.
adb shell stopadb shell find "/data/misc/profiles -name *.prof -exec truncate -s 0 {} \;"adb shell startتشغيل سيناريوهات رحلات المستخدمين الشائعة على الجهاز
التقط الملف الشخصي باستخدام الأمر التالي:
adb shell cmd package snapshot-profile androidاستخرِج الملف الشخصي باستخدام الأمر التالي:
adb pull /data/misc/profman/android.profانتقِل إلى ملفات JAR الخاصة بمسار فئة التمهيد باستخدام الأوامر التالية:
m distls $ANDROID_PRODUCT_OUT/boot.zipأنشئ ملف تعريف صورة التشغيل باستخدام الأمر
profmanالتالي.profman --generate-boot-image-profile --profile-file=android.prof --out-profile-path=... --out-preloaded-classes-path=...باستخدام البيانات، عدِّل الأمر
profmanباستخدام علامات الحد المتاحة.--method-threshold--class-threshold--clean-class-threshold--preloaded-class-threshold--upgrade-startup-to-hot--special-package
للاطّلاع على القائمة الكاملة، يُرجى الرجوع إلى صفحة المساعدة
profmanأو رمز المصدر.