نحن فريق سلسلة أدوات 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، نضمن تحسين الأساس الذي يستند إليه نظام التشغيل بما يتناسب مع طريقة استخدامك لجهازك كل يوم.
-
أخبار المنتجاتأصبح الإصدار 2 من استوديو Android Quail مستقرًا وجاهزًا للاستخدام في الإصدار العلني، ما يتيح لك الاستفادة من بيئة تطوير متكاملة (IDE) مع سير عمل متزامن يستند إلى الذكاء الاصطناعي الوكيل، وإمكانية تحليل أسباب تسرُّب الذاكرة مدمجة، وإصلاح الأعطال المستند إلى السياق.
Amman Asfaw • يستغرق الاطِّلاع على المقال 3 دقائق -
أخبار المنتجاتفي آذار (مارس) الماضي، أطلقنا Android Bench، وهي قائمة ترتيب للنماذج اللغوية الكبيرة في مهام تطوير تطبيقات Android في العالم الحقيقي. ومنذ ذلك الحين، حسّنّا معيار الأداء استنادًا إلى ملاحظاتكم، بما في ذلك تقييم نماذج الوزن المفتوح وإضافة سمات التكلفة والكفاءة إلى قائمة الصدارة.
Zoe Lopez-Latorre • يستغرق الاطِّلاع على المقال 3 دقائق -
أخبار المنتجاتنحن ملتزمون في Google Play بتقديم أفضل تجربة ممكنة للمستخدمين، مع ضمان توفّر الأدوات والإمكانات اللازمة لنجاح المطوّرين.
Paul Feng • يستغرق الاطّلاع على المقال 3 دقائق
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.