يتيح نظام التشغيل Android 11 أو الإصدارات الأحدث إنشاء ملفات تعريف صور التمهيد التي تحتوي على معلومات عن رمز المكوّنات المختلفة على مستوى النظام، مثل ملف classpath الخاص بنظام العمل وملف classpath الخاص بالتمهيد. يستخدم نظام Android Runtime (ART) هذه المعلومات للقيام بعمليات تحسين على مستوى النظام، وبعضها مهم لأداء Android ويؤثر في تنفيذ جميع الرموز البرمجية غير الأصلية (على مستوى النظام أو التطبيق). في بعض الحالات، يمكن أن تؤثر الملفات التجارية لصور التمهيد في أداء التنفيذ و استهلاك الذاكرة بنسبة مئوية تزيد عن 10%.
الحصول على معلومات حول ملف البدء
يتم اشتقاق الملفات الشخصية لصور التمهيد من الملفات الشخصية للتطبيقات التي يتم تنفيذها أثناء
رحلات المستخدمين المهمة (CUJ). في إعدادات جهاز معيّنة، تُسجِّل أداة ART (كجزء من ملفات تعريف JIT) ملف مسار تحميل boot classpath وطرق الفصول التي تستخدمها التطبيقات، ثم تسجِّل هذه المعلومات في ملف تعريف التطبيق (على سبيل المثال،
/data/misc/profiles/cur/0/com.android.chrome/primary.prof
)، حيث يتم فهرستها من خلال ملف Dalvik EXecutable (DEX) الخاص بمسار تحميل boot classpath (راجِع تنسيق ملف تعريف ART).
راجِع الملفات الشخصية للتطبيقات المسجّلة أثناء عمليات CUJ لتحديد جزء ملف boot classpath الأكثر استخدامًا والأكثر أهمية لتحسينه (على سبيل المثال، اطّلِع على تنسيق ملف ART الملف الشخصي). إنّ تضمين جميع الطرق أو الفئات يؤدي إلى التأثير سلبًا في الأداء، لذا ركِّز على مسارات الرموز البرمجية الأكثر استخدامًا. على سبيل المثال، إذا كان تطبيق واحد يستخدم طريقة من مسار تجميع boot classpath، يجب ألا تكون هذه الطريقة جزءًا من ملفات تعريف التمهيد. يجب أن يضبط كل جهاز عملية اختيار الطريقة/الفئة استنادًا إلى اختيار CUJ وكمية البيانات التي يتم إنتاجها من خلال الاختبار.
لتجميع معلومات مسار تحميل الحِزم من جميع الملفات الشخصية للتطبيقات الفردية على
الجهاز، يمكنك تنفيذ الأمر 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 أيضًا ملف مسار التجميع 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: …
في المثال أعلاه:
يتم استخدام
core-oj.jar
من قِبلcom.google.android.ext.services
وcom.android.systemui
. ويسرد كل إدخال الحزمتَين المستخدَمتَين منcore-oj.jar
.تستخدم كلتا العمليتَين الطريقة التي تحمل فهرس DEX 520، ولكن لا تستخدم سوى عملية
systemui
الطريقة التي تحمل فهرس DEX 521. وينطبق المنطق نفسه على أقسام الملف الشخصي الأخرى (مثل فئات بدء التشغيل).
أثناء معالجة البيانات، يتم فلترة الطرق أو الفئات استنادًا إلى الاستخدام، مع منح الأولوية
للعمليات على مستوى النظام (مثل خادم النظام أو systemui
) أو methods التي قد لا يتم استخدامها بشكل شائع ولكنها لا تزال مهمة (مثل methods التي يستخدمها تطبيق الكاميرا).
يُضيف تنسيق الملف الشخصي تعليقات توضيحية داخلية لكل طريقة باستخدام علامات متعددة (startup وpost-startup وhotness وabi)، وهي أكثر من العلامات المعروضة في تنسيقملف dump فقط. للاستفادة من جميع الإشارات، عليك تعديل النصوص البرمجية المتاحة.
الاقتراحات
اتّبِع الإرشادات التالية للحصول على أفضل النتائج.
يمكنك نشر الإعدادات لإنشاء ملفات تعريف صور التمهيد على عدة أجهزة اختبار وجمع النتائج قبل إنشاء ملف تعريف ملف التمهيد النهائي. تتيح أداة
profman
تجميع ملفات تعريف متعددة لملف بدء التشغيل واختيارها، ولكنها لا تعمل إلا مع الإصدار نفسه من ملف بدء التشغيل (مسار فئة تحميل بدء التشغيل نفسه).امنح الأولوية للاختيار إلى الطرق/الفئات التي تستخدمها عمليات النظام. قد تستخدم هذه الطرق/الفئات رمزًا لا تستخدمه التطبيقات الأخرى غالبًا، ولكن يظلّ من المهم تحسينه.
يختلف شكل البيانات من عملية تشغيل جهاز واحد كثيرًا مقارنةً بالأجهزة الاختبارية التي تنفِّذ سيناريوهات الاستخدام النموذجية في العالم الواقعي. إذا لم يكن لديك أسطول كبير من الأجهزة المخصّصة للاختبار، استخدِم الجهاز نفسه لتشغيل عدّة مجموعات اختبارية لزيادة الثقة في أنّ تحسينات الملف الشخصي لصورة التمهيد ستؤدي إلى أداء جيد في مرحلة الإنتاج (يتم وصف هذا السيناريو أدناه).
ضبط الأجهزة
لتفعيل إعداد ملف البدء من خلال خصائص النظام، استخدِم إحدى ال 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
(تأثير دائم إلى أن يتم حذف الملف) لإجراء ذلك:أنشئ ملفًا بتنسيق
local.prop
يتضمّن المحتوى التالي:dalvik.vm.profilebootclasspath=true dalvik.vm.profilesystemserver=true
نفِّذ الأوامر التالية:
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`
إنشاء الملفات الشخصية لصور التمهيد
اتّبِع التعليمات التالية لإنشاء ملف شخصي أساسي لصورة التمهيد باستخدام الاختبار على جهاز واحد.
اضبط إعدادات الجهاز.
اضبط الجهاز كما هو موضّح في مقالة ضبط الأجهزة.
(اختياري) يستغرق تنسيق الملف الشخصي الجديد بعض الوقت لتنظيف الملفات الشخصية الأخرى واستبدالها. لتسريع عملية جمع الملفات التجارية، عليك إعادة ضبط جميع الملفات التجارية على الجهاز.
adb shell stop
adb shell find "/data/misc/profiles -name *.prof -exec truncate -s 0 {} \;"
adb shell start
شغِّل تطبيقات CUJ على الجهاز.
يمكنك التقاط الملف التجاري باستخدام الأمر التالي:
adb shell cmd package snapshot-profile android
استخرِج الملف التجاري باستخدام الأمر التالي:
adb pull /data/misc/profman/android.prof
انتقِل إلى ملفات JAR الخاصة بمسار تحميل Java باستخدام الأوامر التالية:
m dist
ls $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
أو رمز المصدر.