نحن فريق سلسلة أدوات 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). يسمح فصل إنشاء الملفات الشخصية عن دورة إصدار الجهاز بإجراء تحديثات مرنة وفورية بشكل مستقل عن إصدارات النواة التي تم نشرها. والأهم من ذلك، تؤكّد الاختبارات أنّ هذه البيانات المستندة إلى المختبرات تحقّق تحسينات في الأداء مماثلة لتلك التي تحقّقها أساطيل المركبات في الواقع الفعلي.
- الأدوات والبيئة: نستخدم أحدث صورة لنواة النظام في الأجهزة الاختبارية، كما نستخدم 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: يركّز التحسين حاليًا على رمز النواة الثنائي الرئيسي (
vmlinux). وقد يؤدي توسيع نطاق AutoFDO ليشمل وحدات GKI إلى تحسين الأداء في جزء أكبر من النظام الفرعي للنواة. - توافق وحدات المورّدين: يهمّنا أيضًا توفير AutoFDO لوحدات المورّدين التي تم إنشاؤها باستخدام حزمة تطوير برامج التشغيل (DDK). وبما أنّ هذه الميزة متاحة حاليًا في نظام الإنشاء (Kleaf) وأدوات تحليل الأداء (simpleperf)، يمكن للمورّدين تطبيق تقنيات التحسين نفسها على برامج تشغيل الأجهزة المحدّدة.
- تغطية أوسع للملفات الشخصية: يمكن جمع الملفات الشخصية من مجموعة أكبر من رحلات المستخدمين المهمة (CUJ) لتحسينها.
من خلال توفير AutoFDO في نواة Android، نضمن تحسين الأساس الذي يستند إليه نظام التشغيل بما يتناسب مع طريقة استخدامك لجهازك كل يوم.
متابعة القراءة
-
أخبار المنتجات
تختلف احتياجات كل مطوّر وسير عمله المرتبط بالذكاء الاصطناعي، ومن المهم أن يتمكّن من اختيار الطريقة التي يساعد بها الذكاء الاصطناعي في عملية التطوير. في يناير، أتحنا إمكانية اختيار أي نموذج ذكاء اصطناعي محلي أو عن بُعد لتشغيل وظائف الذكاء الاصطناعي في استوديو Android
Matthew Warner • مدة القراءة: دقيقتان
-
أخبار المنتجات
أصبح الإصدار 3 من استوديو Android Panda ثابتًا وجاهزًا للاستخدام في الإنتاج. يمنحك هذا الإصدار المزيد من التحكّم والتخصيص في مهام سير العمل المستندة إلى الذكاء الاصطناعي، ما يسهّل عليك إنشاء تطبيقات Android عالية الجودة أكثر من أي وقت مضى.
Matt Dyor • قراءة لمدة 3 دقائق
-
أخبار المنتجات
في Google، نحن ملتزمون بتوفير نماذج الذكاء الاصطناعي الأكثر تطورًا مباشرةً على أجهزة Android التي تحملها في جيبك. يسرّنا اليوم الإعلان عن إطلاق أحدث نماذجنا المفتوحة والمتطورة: Gemma 4.
Caren Chang, David Chou • قراءة لمدة 3 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.