نحن فريق سلسلة أدوات 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، نضمن تحسين الأساس الذي يستند إليه نظام التشغيل بما يتناسب مع طريقة استخدامك لجهازك كل يوم.
-
أخبار المنتجاتيسرّنا اليوم الإعلان عن الإصدار الثابت من مكتبتَي AndroidX Security State 1.1.0 وSecurity State Provider 1.0.0.
Maunik Shah, Alec Garcia, Joseph Yong • مدة القراءة: 4 دقائق -
أخبار المنتجاتنطرح اليوم المجموعة الأولى من المهام الطويلة الأمد (LHT)، وهي مهام معقّدة جدًا يستغرق إكمالها عدة أيام أو حتى أسبوع من المهندس. نقدّم أيضًا ميزة التقييم المستند إلى الوكيل، بدءًا من الوكلاء من مقدّمي النماذج المعنيين.
Matthew McCullough • يستغرق الاطِّلاع على المقال 3 دقائق -
أخبار المنتجاتأصبحت ميزة تصحيح الأخطاء لاسلكيًا على Android أسرع وأكثر موثوقية وأسهل في الإعداد من أي وقت مضى. في الإصدار 2.0 من ميزة "تصحيح الأخطاء عبر Wi-Fi" في "جسر تصحيح الأخطاء لنظام Android"، قدّمنا حزمة خادم جديدة وطريقة أكثر ذكاءً للتعامل مع الشبكة بهدف معالجة ملاحظات المطوّرين بشأن الثغرات في سهولة الاستخدام.
Steven Jenkins, Sherif Eid, Fabien Sanglard • يستغرق الاطّلاع على المقال دقيقة واحدة
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.