كيف تساعد EAS في جعل Google Pixel أسرع هاتف يعمل بنظام Android

ماذا يعني ذلك لهاتفك الذكي القادم

في الماضي البعيد عندما كان Linux مجرد فكرة في ذهن Linus Torvalds ، كانت وحدات المعالجة المركزية (CPU) بمثابة كيانات أحادية النواة تتطلب قدراً هائلاً من الطاقة مقابل القليل من الطاقة. أول معالج متاح تجارياً على الإطلاق ، وهو Intel 4004 ، تم تشغيله بسرعة 740 كيلو هرتز على كور واحد. في ذلك الوقت ، لم تكن هناك حاجة لجدولة التحميل. تم حجز جدولة التحميل لـ "behemoths" ثنائية النواة مثل IBM Power 4 الذي خرج بعد عدة عقود. ركضت هذه بسرعة 1.1 غيغاهرتز إلى 1.9 غيغاهرتز والبرامج المطلوبة والنظام لاستخدام هذه النوى بشكل صحيح. كيف وصلنا من هذه الأجهزة إلى خوارزميات البرامج التي تستفيد من النوى المتعددة؟ ربما تكون قد سمعت عن Energy Aware Scheduling (EAS) في منتدياتنا من قبل. يعد هذا جزءًا من السبب وراء أداء هواتف Google Pixel الذكية بشكل جيد. ما هو عظيم حول EAS وكيف وصلنا إلى هذه النقطة؟ قبل أن نتمكن من شرح ذلك ، نحتاج إلى التحدث عن برامج جدولة تحميل Linux.


تطور جدولة تحميل Linux

جولة روبن الجدولة

جولة روبن تجهيز. المصدر: ويكيبيديا

إن المعالجة المستديرة لروبن هي مفهوم بسيط للشرح والفهم ، وهي طريقة أكثر بساطة لفهم عيوبها. يستخدم Round-robin تقطيع الوقت لتخصيص الوقت لكل عملية. لنفترض أن لدينا أربع عمليات تعمل على جهاز الكمبيوتر الخاص بنا.

  • عملية أ
  • العملية ب
  • العملية ج
  • العملية د

الآن ، دعونا نقوم بمهمة برنامج جدولة الجولة. سنخصص 100 مللي ثانية (تقطيع الوقت) لكل عملية قبل الانتقال إلى التالي. هذا يعني أن العملية A يمكن أن تستغرق 100 مللي ثانية للقيام بمعالجتها ، ثم تنتقل إلى Process B وما إلى ذلك. إذا استغرقت مهمة التطبيق 250 مللي ثانية للقيام بها ، فسوف تحتاج إلى متابعة هذه العملية 3 مرات فقط لإنهاء عملها! قم الآن بتوسيع نطاق ذلك عبر النوى المختلفة ، بحيث يتم تخصيص العملية A والعملية B للنواة 1 ، ويتم تخصيص العملية C والعملية D للنواة 2. تم استبدال ذلك بجدولة O (n) (والتي كانت مثل round-robin ، لكن باستخدام الحقبة والسماح بالتخصيص الديناميكي للوقت) ، ثم جدولة O (1) (تقليل الحمل إلى الحد الأدنى ، ودعم عملية غير محدود) ، ثم في النهاية برنامج الجدولة العادلة تمامًا (CFS). تم دمج CFS في إصدار Linux kernel 2.6.23 في أكتوبر 2007. وقد تم إصلاحه منذ ذلك الحين ولا يزال المجدول الافتراضي في أنظمة Linux.

جدولة عادلة تماما

يوجد برنامج الجدولة العادلة تمامًا على نظام Android منذ بدايته ويستخدم على الأجهزة غير الكبيرة. يستخدم خوارزمية ذكية لتحديد ترتيب المعالجة ، والوقت المخصص وما إلى ذلك. إنه مثال على التنفيذ العملي لخوارزمية الجدولة المدروسة جيدًا والمعروفة باسم "قائمة الانتظار العادلة الموزونة". ويركز هذا بشكل أساسي على إعطاء الأولوية لعمليات النظام وغيرها من العمليات ذات الأولوية العالية يعمل على الجهاز. إذا تم تشغيله على جهاز big.LITTLE ، فسيتم اعتبار جميع النوى متساوية. هذا أمر سيء ، حيث قد تضطر النوى منخفضة الطاقة لتشغيل تطبيقات مكثفة ، أو ما هو أسوأ ، قد يحدث العكس. قد يتم فك تشفير الاستماع إلى الموسيقى على النواة الكبيرة ، على سبيل المثال ، زيادة استهلاك الطاقة دون داع. هذا هو السبب في أننا بحاجة إلى جدولة جديدة لـ big.LITTLE ، والتي يمكنها بالفعل التعرف على الفرق في النوى واستخدامه بطريقة فعالة من حيث الطاقة. هذا هو المكان الذي يتم فيه تشغيل Hterogeneous Multi-Processing (HMP) ، وهو برنامج جدولة التحميل القياسي الذي تعمل عليه معظم هواتف Android الآن.

غير متجانسة متعدد المعالجة

هذا هو برنامج جدولة التحميل القياسي لأي جهاز كبير. LITTLE تم إصداره في السنوات الأخيرة ، بخلاف Google Pixel. يستخدم HMP الهيكل الكبير. LITTLE ، يفوض أولوية منخفضة ، عمل أقل كثافة إلى النوى الصغيرة التي تستهلك طاقة أقل. HMP هو "آمن" حيث يعرف ما يجب أن يذهب إلى النوى الكبيرة وما يجب أن يذهب إلى النوى الصغيرة ، دون ارتكاب أخطاء. إنه يعمل فقط ويتطلب جهداً أقل في الإعداد في جانب التطوير من شيء مثل EAS ، الذي سنواجهه في لحظة. HMP هو مجرد امتداد ل CFS لجعله على علم بالقوة.

HMP لا يأخذ التخمينات ، ولا يتنبأ بالعمليات المستقبلية. هذا أمر جيد ، لكن السبب في أن الجهاز لا يمكن أن يكون سائلاً مثل تلك التي تعمل بنظام EAS ، كما أنه يستهلك أيضًا بطارية أكثر قليلاً. هذا ، في النهاية ، يقودنا إلى Energy Aware Scheduling (EAS) ، والتي أعتقد اعتقادا راسخا أنها المستقبل في تطوير ROM و kernel مع اعتماد المزيد من مصنعي المعدات الأصلية.

علم الطاقة جدولة

يعد برنامج Energy Aware Scheduling (EAS) هو الشيء الكبير التالي الذي يتحدث عنه المستخدمون في منتدياتنا. إذا كنت تستخدم OnePlus 3 (أو Google Pixel ، من الواضح) فقد سمعت عنه بالتأكيد في المنتديات. تم إطلاقه في الاتجاه السائد باستخدام Qualcomm Snapdragon 845 ، لذلك إذا كان لديك أحد هذه الأجهزة ، فلديك بالفعل هاتف ذكي يدعم EAS. EAS في شكل حبات مثل RenderZenith و ROMs مثل VertexOS و PureFusion كانت تأخذ منتديات OnePlus 3 في العاصفة. بالطبع ، يأتي Google Pixel أيضًا مع EAS. مع وعود تحسين عمر البطارية والأداء الأفضل ، ما الفائدة؟

جدولة الطاقة Aware ليست بسيطة لأنها ليست عالمية لكل جهاز مثل CFS أو HMP. تتطلب EAS فهمًا للمعالج الذي يعمل عليه ، استنادًا إلى نموذج الطاقة. يتم تصنيع هذه النماذج من الطاقة بواسطة فرق من المهندسين الذين يقومون بإجراء الاختبارات والعمل باستمرار لتوفير أفضل أداء. نظرًا لأن Snapdragon 820 و 821 متشابهان بشكل أساسي ، فإن النواة المخصصة في OnePlus 3 تستخدم نموذج طاقة Google Pixel. يمكن للأجهزة المزودة بنظام Snapdragon 845 الاستفادة من EAS ، ويعمل جهاز OnePlus 6 إلى حد ما. لا يتم ضبطه مثل جهاز Google Pixel ، ولكنه ينجز المهمة. فيما يلي مثال على الكيفية ، على الرغم من امتلاك OnePlus 6 لمعالج أفضل مع EAS ، لا يزال Pixel 2 XL يتفوق عليه بسلاسة. تم التقاط كل من هذه الصور من خلال المراجعة الموجهة للسرعة لجهاز OnePlus 6.

إذا كنت تواجه مشكلة في فهم الرسوم البيانية ، يمكنك إلقاء نظرة على الصورة أدناه للحصول على إرشادات. أي شيء يتجاوز الخط الأخضر يشير إلى الإطارات المتساقطة ، وفي أسوأ الحالات ، التأتأة الملحوظة.

يعد تطبيق OnePlus 6 لنظام EAS أمرًا مثيرًا للاهتمام ، حيث لا يبدو أنه تطبيق كامل كما لو كنت تجده على Google Pixel بنفس SoC. كذلك فإن أنفاق جدولة المواعيد لا يكون لها معنى كبير ، لذلك ربما يفسر سبب عدم كفاءتها في الأداء كما تتوقع. إنه متحفظ للغاية في استهلاك الطاقة ، مع إعطاء النظام الأولوية لنوط الطاقة المنخفضة لغالبية العمل.

تعد Tunables مجرد مجموعة من المعلمات التي يتم تمريرها إلى حاكم وحدة المعالجة المركزية ، والتي تغير كيفية تفاعل المحافظ مع مواقف معينة من حيث التردد. يقرر المجدول أين يضع المهام على معالجات مختلفة. تم ضبط أنفاق OnePlus 6 على ترتيب أولويات العمل على النوى منخفضة الطاقة. كما أنه لا يساعد على أن يحتوي Google Pixel 2 على قدر كبير من زيادة المدخلات ، مع الحفاظ على جميع المراكز الثمانية على الإنترنت طوال الوقت. تستخدم Google أيضًا موازن المقاطعة الذي يساعد على إزالة قطرات الإطار وتحسين الأداء.

فكيف يعمل EAS؟ لماذا هو فعال جدا فقط في ظروف معينة؟

يقدم تطبيق Aware Energy جدولة الحاجة إلى استخدام نموذج للطاقة ، وكما ذكر أعلاه يتطلب الكثير من الاختبارات والعمل لجعله مثاليًا. تحاول EAS توحيد ثلاثة أجزاء أساسية مختلفة من النواة تعمل جميعها بشكل مستقل ، ويساعد نموذج الطاقة على توحيدها.

  • جدولة Linux (CFS ، المذكورة أعلاه)
  • لينكس cpuidle
  • Linux cpufreq

يوفر توحيد جميع الأجزاء الثلاثة ضمن المجدول وحسابها معًا إمكانية لتوفير الطاقة ، حيث إن حسابها معًا يتيح لها أن تكون فعالة قدر الإمكان. يحاول CPUIdle أن يقرر متى يجب أن تذهب وحدة المعالجة المركزية إلى وضع الخمول ، بينما يحاول CPUFreq تحديد متى يتم رفع وحدة المعالجة المركزية لأعلى أو لأسفل. كل من هذه الوحدات لديها الهدف الرئيسي لتوفير الطاقة. ليس ذلك فحسب ، بل يُصنّف العمليات في أربع مجموعات ، وهي التطبيق الأعلى وخلفية النظام والمقدمة والخلفية. يتم وضع المهام المقرر معالجتها في واحدة من هذه الفئات ، ثم يتم منح الفئة طاقة وحدة المعالجة المركزية ويتم تفويض العمل عبر نوى وحدة المعالجة المركزية المختلفة. يمثل التطبيق الأعلى أولوية قصوى للإنجاز ، يليه المقدمة والخلفية ثم خلفية النظام. الخلفية تقنيًا لها نفس أولوية خلفية النظام ، لكن خلفية النظام عادةً ما يكون لها أيضًا الوصول إلى عدد أكبر من النوى. في الواقع ، تأخذ Energy Aware Scheduling أجزاء أساسية من نواة Linux وتوحيدها كلها في عملية واحدة.

عند استيقاظ الجهاز ، ستختار EAS النواة في حالة الخمول الضحلة ، مما يقلل من الطاقة اللازمة لتنبيه الجهاز. يساعد هذا في تقليل الطاقة المطلوبة في استخدام الجهاز ، لأنه لن يستيقظ الكتلة الكبيرة إذا لم يكن في حاجة إليها. يعد تتبع الحمل جزءًا مهمًا للغاية من EAS ، وهناك خياران. يستخدم "تتبع الحمل لكل كيان" (PELT) عادةً لتتبع الحمل ، ثم تُستخدم المعلومات لتحديد الترددات وكيفية تفويض المهام عبر وحدة المعالجة المركزية. يمكن أيضًا استخدام "تتبع الحمل بمساعدة النوافذ" (WALT) وهو ما يتم استخدامه على Google Pixel. تختار العديد من مدخلات EAS على منتدياتنا ، مثل VertexOS ، استخدام WALT. ستقوم العديد من ROM بإصدار نسختين من kernel مع WALT أو PELT ، لذلك فإن الأمر متروك للمستخدم لاتخاذ القرار. WALT أكثر انفجارًا ، مع وجود قمم عالية في تردد وحدة المعالجة المركزية بينما يحاول PELT أن يبقى أكثر اتساقًا. لا يؤثر "تعقب الحمل" فعليًا على تردد وحدة المعالجة المركزية ، بل يخبر النظام فقط بماهية استخدام وحدة المعالجة المركزية. يتطلب استخدام وحدة المعالجة المركزية (CPU) العالي ترددًا أعلى وبالتالي فإن خاصية PELT الثابتة هي أنها تجعل تردد وحدة المعالجة المركزية يتجه لأعلى أو لأسفل ببطء. تميل PELT إلى الانهيار نحو رفع تقارير تحميل وحدة المعالجة المركزية ، لذلك قد توفر أداءً أعلى بتكلفة بطارية أعلى. لا أحد يستطيع حقاً أن يقول في هذه المرحلة من الزمن نظام تتبع الحملات الأفضل ، مع ذلك ، فإن كلا من أساليب تتبع الحملات يتم ترقيتها باستمرار وتحسينها.

في كلتا الحالتين ، من الواضح أنه ، بغض النظر عن طريقة تتبع الحمل المستخدمة ، هناك زيادة في الكفاءة. بدلاً من مجرد معالجة المهام على أي معالج ، يتم تحليل المهمة وتقدير كمية الطاقة اللازمة لتشغيلها. هذا الموضع الذكي للمهام يعني أنه يتم إنجاز المهام بطريقة أكثر فاعلية مع جعل النظام أسرع بشكل عام. EAS هو كل شيء عن الحصول على أسلس واجهة المستخدم ممكن مع الحد الأدنى من استخدام الطاقة. هذا هو المكان الذي تدخل فيه المكونات الخارجية الأخرى مثل الجدول الزمني.

يتم تعريف Schedtune في كل مجموعة cgroup بواسطة اثنين من tunables والتي تضمن سيطرة أدق على المهام المراد إكمالها. لا يتحكم فقط في انتشار المهام على وحدات المعالجة المركزية المتعددة ، ولكن أيضًا في حالة زيادة التحميل المتوقع من أجل ضمان إكمال المهام الحساسة للوقت بشكل أسرع. وبهذه الطريقة ، لن تتباطأ التطبيقات والخدمات المتقدمة التي يستفيد منها المستخدم وتتسبب في مشاكل أداء غير ضرورية.

في حين أن جدولة الطاقة Aware هي الشيء الكبير التالي ، إلا أنه يمكن القول إنه موجود بالفعل هنا منذ فترة. مع وجود المزيد والمزيد من الأجهزة التي تصل إلى التيار الرئيسي باستخدام Energy Aware Scheduling ، يوجد عصر جديد من كفاءة معالجة الأجهزة المحمولة.

إيجابيات وسلبيات Round-Robin و CFS و HMP و EAS

على الرغم من أن مهاراتي في الرسومات غير متكافئة ، فقد جمعت صورة يجب أن تلخص ما هي إيجابيات وسلبيات كل من هذه المجدولين.


أود أن أتقدم بالشكر الخاص إلى المساهم المعترف به مصطفى وائل الذي ساعدت تفسيراته لمختلف جوانب EAS في جعل هذه المقالة ممكنة. أود أيضًا أن أشكر مطور البرامج المعترف به ، والمطور المعترف به RenderBroken و Mostafa Wael على كتابته على EAS. لأولئك منكم الذين وجدوا اهتمامًا بالأجزاء المتعلقة بـ EAS ، لدى Linaro الكثير من الوثائق حول EAS والتي يمكنك قراءتها.