نحن فريق سلسلة أدوات Android LLVM. من أهم أولوياتنا تحسين أداء Android من خلال تقنيات التحسين في نظام LLVM. نبحث باستمرار عن طرق لجعل Android أسرع وأكثر سلاسة وفعالية. مع أنّ معظم أعمال التحسين تتم في مساحة المستخدم، تظل النواة هي أساس النظام. يسرّنا اليوم أن نشاركك كيف نقدّم ميزة التحسين التلقائي المستند إلى الملاحظات (AutoFDO) إلى نواة Android لتحقيق تحسينات كبيرة في الأداء للمستخدمين.
ما هي ميزة AutoFDO؟
أثناء إنشاء برامج عادية، يتّخذ برنامج التجميع آلاف القرارات الصغيرة، مثل ما إذا كان سيضمّن دالة في سطر واحد أو سيستخدم فرعًا من عبارة شرطية، وذلك استنادًا إلى تلميحات الرمز الثابت.ومع أنّ هذه الإرشادات التجريبية مفيدة، إلا أنّها لا تتوقّع دائمًا بدقة تطبيق الرموز البرمجية أثناء استخدام الهاتف في الحياة اليومية.
تغيّر ميزة AutoFDO ذلك من خلال استخدام أنماط التنفيذ في الحياة اليومية لتوجيه برنامج التجميع. تمثّل هذه الأنماط مسارات تنفيذ التعليمات الأكثر شيوعًا التي يتّخذها الرمز البرمجي أثناء الاستخدام الفعلي، ويتم تسجيلها من خلال تسجيل سجلّ التفرّع لوحدة المعالجة المركزية. على الرغم من إمكانية جمع هذه البيانات من أجهزة الأسطول، فإنّنا نركّبها في النواة في بيئة مختبرية باستخدام أحمال عمل تمثيلية، مثل تشغيل أهم 100 تطبيق رائج. نستخدم أداة تحليل الأداء المستندة إلى أخذ العيّنات لتسجيل هذه البيانات، وتحديد أجزاء الرمز البرمجي التي يتم استخدامها بشكل متكرر (الأجزاء "النشطة") والأجزاء التي لا يتم استخدامها كثيرًا (الأجزاء "غير النشطة"). عند إعادة إنشاء النواة باستخدام هذه الملفات الشخصية، يمكن للمترجم اتّخاذ قرارات تحسين أكثر ذكاءً ومصمّمة خصيصًا لأحمال عمل Android الفعلية.
لفهم تأثير هذا التحسين، ضع في اعتبارك الحقائق الأساسية التالية:
- على Android، تمثّل النواة حوالي% 40 من وقت وحدة المعالجة المركزية.
- نستخدم حاليًا AutoFDO لتحسين الملفات التنفيذية والمكتبات الأصلية في مساحة المستخدم، ما يحقّق تحسّنًا بنسبة% 4 تقريبًا في وقت تشغيل التطبيق البارد وانخفاضًا بنسبة% 1 في وقت بدء التشغيل.
تحسين الأداء في الاستخدام اليومي
لقد شهدنا تحسّنًا ملحوظًا في مقاييس Android الرئيسية من خلال الاستفادة من الملفات الشخصية من بيئات المختبرات الخاضعة للرقابة. تم جمع هذه الملفات الشخصية باستخدام الزحف إلى التطبيقات وتشغيلها، وتم قياسها على أجهزة Pixel التي تعمل بإصدارات النواة 6.1 و6.6 و6.12.
في ما يلي التحسينات الأكثر وضوحًا. يمكنك العثور على تفاصيل حول ملفات AutoFDO الشخصية لإصدارات النواة هذه في مستودعات نواة Android المعنية لنواة android16-6.12 ونواة android15-6.6.
وهذه ليست مجرد أرقام نظرية. ويؤدي ذلك إلى توفير واجهة أسرع، وتبديل أسرع بين التطبيقات، وعمر بطارية أطول، وجهاز أكثر استجابةً للمستخدم النهائي.
طريقة العمل: مسار التعلّم
تتضمّن استراتيجية النشر لدينا مسارًا معقّدًا لضمان بقاء الملفات الشخصية ذات صلة واستقرار الأداء.
الخطوة 1: جمع الملفات الشخصية
في حين أنّنا نعتمد على مجموعة الاختبارات الداخلية لإنشاء ملفات تعريف ثنائية لمساحة المستخدم، انتقلنا إلى بيئة مختبر خاضعة للرقابة من أجل صورة النواة العامة (GKI). يسمح فصل إنشاء الملفات الشخصية عن دورة إصدار الجهاز بإجراء تحديثات مرنة وفورية بغض النظر عن إصدارات النواة التي تم نشرها. والأهم من ذلك، تؤكّد الاختبارات أنّ هذه البيانات المستندة إلى المختبرات تحقّق تحسينات في الأداء مماثلة لتلك التي تحقّقها أساطيل المركبات على أرض الواقع.
- الأدوات والبيئة: نُثبّت ذاكرة ROM في الأجهزة الاختبارية باستخدام أحدث صورة لنواة النظام، ونستخدم simpleperf لتسجيل عمليات تنفيذ التعليمات. تعتمد هذه العملية على إمكانات الأجهزة لتسجيل سجلّ التفرّع، وتستخدم تحديدًا إضافة ARM Embedded Trace Extension (ETE) وإضافة ARM Trace Buffer Extension (TRBE) على أجهزة Pixel.
- أحمال العمل: ننشئ حمل عمل تمثيليًا باستخدام أهم 100 تطبيق من حيث الشهرة من مجموعة أدوات اختبار توافق تطبيقات Android (C-Suite). للحصول على البيانات الأكثر دقة، نركّز على ما يلي:
- تشغيل التطبيق: تحسين الأداء للحدّ من تأخيرات المستخدم الأكثر وضوحًا
- الزحف إلى التطبيقات المستند إلى الذكاء الاصطناعي: محاكاة تفاعلات المستخدمين المتجاورة والمتطوّرة
- المراقبة على مستوى النظام: تسجيل أنشطة التطبيقات في المقدّمة، بالإضافة إلى أحمال العمل الأساسية في الخلفية وعمليات الاتصال بين العمليات
- التحقّق من الصحة: يوضّح عبء العمل المركّب هذا تشابهًا بنسبة% 85 مع أنماط التنفيذ التي تم جمعها من أسطولنا الداخلي.
- البيانات المستهدَفة: من خلال تكرار هذه الاختبارات بشكل كافٍ، نجمع أنماط تنفيذ عالية الدقة تمثّل بدقة تفاعل المستخدمين في العالم الحقيقي مع التطبيقات الأكثر شيوعًا. علاوةً على ذلك، يتيح لنا إطار العمل القابل للتوسيع هذا دمج أحمال عمل ومقاييس أداء إضافية بسلاسة لتوسيع نطاق تغطيتنا.
الخطوة 2: معالجة الملف الشخصي
نُجري معالجة لاحقة لبيانات التتبُّع الأولية لضمان أنّها نظيفة وفعّالة وجاهزة للمترجم.
- التجميع: ندمج البيانات من عمليات تشغيل واختبار متعددة وأجهزة متعددة في عرض نظام واحد.
- التحويل: نحوّل عمليات التتبُّع الأولية إلى تنسيق ملف AutoFDO، مع فلترة الرموز غير المرغوب فيها حسب الحاجة.
- تقليل حجم الملف الشخصي: نقلّل حجم الملفات الشخصية لإزالة بيانات الدوال "غير النشطة"، ما يسمح لها باستخدام التحسين العادي. يمنع ذلك حدوث تراجعات في الرمز البرمجي الذي نادرًا ما يُستخدَم ويتجنّب الزيادات غير الضرورية في حجم الملف الثنائي.
الخطوة 3: اختبار الملف الشخصي
قبل نشر ملفات التعريف، يتم التحقّق منها بدقة لضمان تحقيق تحسينات متسقة في الأداء بدون مخاطر تتعلّق بالثبات.
- تحليل الملف الشخصي والملف الثنائي: نقارن بدقة محتوى الملف الشخصي الجديد (بما في ذلك الوظائف النشطة وعدد العيّنات وحجم الملف الشخصي) بالإصدارات السابقة. نستخدم الملف الشخصي أيضًا لإنشاء صورة نواة جديدة، وتحليل الملفات الثنائية لضمان أنّ التغييرات في قسم النص تتوافق مع التوقعات.
- التحقّق من الأداء: ننفّذ مقاييس أداء مستهدَفة على صورة النواة الجديدة. ويؤكّد ذلك أنّها تحافظ على التحسينات في الأداء التي تمّ تحديدها من خلال خطوط الأساس السابقة.
التحديثات المستمرة
تتغير الرموز بمرور الوقت، لذا سيفقد الملف الثابت فعاليته في النهاية. للحفاظ على أعلى مستوى من الأداء، نشغّل مسار التعلّم باستمرار لإجراء تعديلات منتظمة:
- إعادة التحميل المنتظمة: نعيد تحميل الملفات الشخصية في فروع LTS لنواة Android قبل كل إصدار من GKI، ما يضمن تضمين كل إصدار لأحدث بيانات الملفات الشخصية.
- التوسيع المستقبلي: نقدّم حاليًا هذه التحديثات للفرعَين
android16-6.12وandroid15-6.6، وسنوسّع نطاق التوافق ليشمل إصدارات أحدث من GKI، مثل الإصدارandroid17-6.18القادم.
ضمان الاستقرار
من الأسئلة الشائعة حول التحسين المستند إلى الملف الشخصي ما إذا كان يؤدي إلى مخاطر عدم الاستقرار. بما أنّ AutoFDO تؤثّر بشكل أساسي في إرشادات المترجم، مثل تضمين الدوال وتنسيق الرموز البرمجية، بدلاً من تغيير منطق الرمز المصدر، فإنّها تحافظ على السلامة الوظيفية للنواة. وقد أثبتت هذه التكنولوجيا فعاليتها على نطاق واسع، إذ تم استخدامها كأداة تحسين عادية لمكتبات نظام Android الأساسية وChromeOS والبنية الأساسية لخوادم Google لسنوات.
لضمان سلوك متّسق بشكل أكبر، نطبّق استراتيجية "المحافظة على الأداء الجيد تلقائيًا". يتم تحسين الوظائف التي لا يتم تسجيلها في الملفات الشخصية العالية الدقة باستخدام طرق التجميع العادية. يضمن ذلك أن تتصرف الأجزاء "غير النشطة" أو التي يتم تنفيذها نادرًا من النواة تمامًا كما تتصرف في الإصدار العادي، ما يمنع حدوث تراجع في الأداء أو سلوكيات غير متوقعة في الحالات الحدية.
العمل للمستقبل
نعمل حاليًا على نشر AutoFDO في الفروع android16-6.12 وandroid15-6.6. بالإضافة إلى هذا الطرح الأولي، نرى عدة طرق واعدة لتعزيز التكنولوجيا بشكل أكبر:
- توسيع نطاق الوصول: نتطلّع إلى نشر ملفات AutoFDO على إصدارات أحدث من نواة GKI واستهداف المزيد من إصدارات البناء بالإضافة إلى إصدارات
aarch64الحالية. - تحسين وحدات GKI: يركّز التحسين حاليًا على ملف kernel الثنائي الرئيسي (
vmlinux). وقد يؤدي توسيع نطاق AutoFDO ليشمل وحدات GKI إلى تحقيق مزايا الأداء لجزء أكبر من النظام الفرعي لنواة النظام. - توافق وحدة المورّد: يهمّنا أيضًا توفير AutoFDO لوحدات المورّد التي تم إنشاؤها باستخدام حزمة تطوير برامج التشغيل (DDK). وبما أنّ هذه الميزة متاحة حاليًا في نظام الإنشاء (Kleaf) وأدوات إنشاء الملفات الشخصية (simpleperf)، يمكن للمورّدين تطبيق تقنيات التحسين نفسها على برامج تشغيل الأجهزة المحدّدة.
- تغطية أوسع للملفات الشخصية: يمكن جمع الملفات الشخصية من مجموعة أكبر من رحلات المستخدمين الرئيسية (CUJ) لتحسينها.
من خلال توفير AutoFDO في نواة Android، نضمن تحسين الأساس الذي يستند إليه نظام التشغيل بما يتناسب مع طريقة استخدامك لجهازك كل يوم.
-
أخبار المنتجاتأصبحت ميزة تصحيح الأخطاء لاسلكيًا على Android أسرع وأكثر موثوقية وأسهل في الإعداد من أي وقت مضى. في الإصدار 2.0 من ميزة "تصحيح الأخطاء عبر Wi-Fi باستخدام ADB"، طرحنا حزمة خادم جديدة وطريقة أكثر ذكاءً للتعامل مع الشبكة بهدف معالجة ملاحظات المطوّرين حول المشاكل المتعلّقة بسهولة الاستخدام.
Steven Jenkins, Sherif Eid, Fabien Sanglard • يستغرق الاطّلاع على المقال دقيقة واحدة -
أخبار المنتجاتهذا هو الإصدار الثابت النهائي من Android Studio Quail. تتيح لك الميزات الجديدة في Android Studio إنشاء تطبيقات مميّزة باستخدام الذكاء الاصطناعي بكفاءة وفعالية.
Amman Asfaw • يستغرق الاطِّلاع على المقال 5 دقائق -
أخبار المنتجاتالحفاظ على منظومة Android المتكاملة الصحية هو التزام مشترك يضطلع فيه كل تطبيق ولعبة بدور مهم.
Raghavendra Hareesh Pottamsetty • مدة القراءة: 4 دقائق
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.