الإعلان عن مرحلة التجربة والتقييم الثانية في Compute Pressure

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

خلال العام الماضي، تعاونت شركة Intel مع Google وجهات أخرى في استخدام Compute Pressure API. في الإصدار 115 من Chrome، يمكنك التسجيل في تجربة المصدر للمساعدة في اختبار واجهة برمجة التطبيقات الجديدة هذه، وتشرح هذه المشاركة المشاكل التي صُمّمت واجهة برمجة التطبيقات لحلّها، وتعرض كيفية استخدامها.

المشكلة

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

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

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

غالبًا ما يختار المطورون التطوير للوصول إلى القاسم المشترك الأدنى، مع تجنب استخدام بعض الميزات التي قد تفرض ضرائب على الأجهزة القديمة أو الأقل أداءً. ومع ذلك، إذا كان من الممكن تحسين التجربة للمستخدمين الذين لديهم معدات قادرة ويتواجدون في البيئة المناسبة للاستفادة منها، فلماذا لا تفعل ذلك؟ على سبيل المثال، عند الانضمام إلى مكالمة فيديو من هاتفك، فإن مجرد رؤية مكبّر الصوت الحالي هو على الأرجح أفضل تجربة. ومع ذلك، سيكون من اللطيف أن ترى الجميع في المكالمة على سطح المكتب، وعادة ما تكون الأجهزة على مستوى مهمة. ولتحقيق ذلك، تحتاج إلى قياس مباشر للأجهزة عن بُعد، بدون التضحية بخصوصية المستخدمين، والتي يمكن استخدامها لجدولة المهام وتفعيل الميزات وإيقافها تدريجيًا لضمان تجربة مستخدم سلسة. وهنا يمكن أن تساعدك واجهة برمجة تطبيقات Compute Pressure.

ما هي واجهة برمجة التطبيقات Compute Pressure؟

تقدم واجهة برمجة تطبيقات Compute Pressure حالات عالية المستوى تمثِّل الضغط الواقع على النظام. تضمن هذه الحالات عالية المستوى تحقيق توازن جيد بين الخصوصية (وليس مشاركة الكثير من المعلومات المحددة التي قد تحدد هوية المستخدم) والمعلومات التي يمكن للمطورين التفكير فيها بسهولة. بالإضافة إلى ذلك، تسمح هذه العملية للتنفيذ باستخدام مقاييس الأجهزة الأساسية المناسبة لضمان استفادة المستخدمين من جميع إمكانيات المعالجة المتاحة لهم طالما أنّ النظام لا يخضع لضغوط لا يمكن إدارتها.

على سبيل المثال، تم تصميم وحدات المعالجة المركزية الحديثة لتعمل بشكل جيد عند استخدامها بنسبة% 100 في معظم الحالات، سواء على نواة واحدة أو على مستوى جميع النوى، لذا فإنّ استخدام واجهة برمجة تطبيقات يستخدم ترميزًا ثابتًا بنسبة 80% باعتبارها بالغة الأهمية قد يؤدي إلى عدم استفادة المطوّرين من قدرات الأجهزة وتقديم تجربة مستخدم سيئة. من ناحية أخرى، قد لا تكون هناك تبريد مناسب في النظام، أو قد تكون درجة الحرارة المحيطة مرتفعة جدًا كما في فصل الصيف، وقد يتوقف النظام حتى قبل الوصول إلى معدل استخدام مرتفع لوحدة المعالجة المركزية (CPU). تعمل واجهة برمجة التطبيقات الحالية مع الضغط العالمي لوحدة المعالجة المركزية (CPU)، لكننا نخطط لتجربة إتاحة ضغط وحدة المعالجة المركزية (CPU) في كل صفحة عبر سلسلة التعليمات الرئيسية والعمال.

يحدث الضغط في الحساب في الحالات التالية:

  • اسمية: تؤدي أعباء العمل الحالية إلى الحد الأدنى من الضغط، ما يسمح للنظام بالعمل بتردد ساعة منخفض للحفاظ على الطاقة.
  • الإنصاف: النظام يعمل بشكل جيد، وكل شيء سهل ويمكن أن يؤدي إلى مزيد من الأعمال بدون أي مشاكل.
  • جاد: هناك بعض الضغطات الخطيرة على النظام، ولكن يمكن إدارته والنظام يعمل بشكل جيد، لكن قد يقترب من نطاقه المحدَّد:
    • وتكون سرعة الساعة (اعتمادًا على طاقة التيار المتردد أو التيار المستمر) عالية باستمرار.
    • درجات الحرارة مرتفعة ولكن لا تزال قابلة للإدارة ولا تسبب التقييد.

في هذه المرحلة، إذا أضفت المزيد من الأعمال، قد ينتقل النظام إلى حالة حرجة.

  • حرج: أوشك النظام على الوصول إلى حدوده القصوى الآن، ولكنه لم يصل إلى الحدّ الأقصى بعد. لا تعني الحالة الحرجة أنه يتم تقييد النظام بشكل فعّال، لكن هذه الحالة غير مستدامة على المدى الطويل وقد تؤدي إلى التقييد إذا ظل عبء العمل كما هو. هذه الإشارة هي المكالمة الأخيرة لتطبيق الويب لتخفيف عبء العمل.

تفعيل واجهة برمجة تطبيقات Compute Pressure

لا يتم تفعيل واجهة برمجة التطبيقات Compute Pressure API في Chrome تلقائيًا، ولكن يمكن تجربتها في Chrome 115 من خلال تفعيل الوظيفة صراحةً. يمكنك تفعيل هذه الميزة محليًا عن طريق تفعيل علامة enable-experimental-web-platform-features.

لتفعيلها لجميع زوّار تطبيقك، تكون نسخة تجريبية من المصدر قيد التنفيذ حاليًا وستنتهي في Chrome 118 ( 18 تموز (يوليو) 2023). للمشاركة في التجربة، اشترِك وضمِّن عنصرًا تعريفيًا مع الرمز المميّز الخاص بفترة التجربة والتقييم في عنوان HTML أو عنوان HTTP. لمزيد من المعلومات، يمكنك الاطّلاع على مشاركت بدء استخدام مراحل التجربة والتقييم.

ملاحظة الضغط الحوسبي

يوضِّح مقتطف الرمز التالي كيفية مراقبة تغييرات الضغط الحوسبي واتخاذ إجراءات بشأنها:

// The `records` parameter is a sequence of records between two
// consecutive callbacks. Currently it contains ten entries, but
// this is an implementation detail.
function callback(records) {
  const lastRecord = records.pop();
  console.log(`Current pressure ${lastRecord.state}`);
  if (lastRecord.state === 'critical') {
    // Reduce workers load by 4.
  } else if (lastRecord.state === 'serious') {
    // Reduce workers load by 2.
  } else {
    // Do not reduce.
  }
}

const observer = new PressureObserver(callback, {
  // Sample rate in Hertz.
  sampleRate: 1,
});
observer.observe('cpu');

يوضِّح مقتطف الرمز التالي كيفية استخدام Compute Pressure API من إطار iframe:

<iframe src="https://mysite.com/" allow="compute-pressure">
  <script>
    // Use Compute Pressure API.
  </script>
</iframe>

دعم النظام الأساسي

تتوفّر واجهة Compute Pressure API في Chrome 115 على أنظمة التشغيل Linux وChromeOS وmacOS وWindows.

الخصائص الديموغرافية

جرب العرض التوضيحي المضمن أدناه لترى كيف تتغير حالة الضغط الحوسبي بناءً على بعض الضغط الصناعي.

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

إضافة ملاحظات

تُعد ملاحظات مطوِّري البرامج مهمة حقًا في هذه المرحلة، لذا يُرجى الإبلاغ عن المشاكل في GitHub مع تضمين الاقتراحات والأسئلة.

شكر وتقدير

تم إنشاء صورة الجزء الرئيسي بواسطة روبرت أناش في Unسبلاش. تمّت مراجعة هذه المقالة من قِبل راشيل أندرو وتوماس شتاينر.