على مدار العام الماضي، تعاونت شركة Intel مع Google وجهات أخرى في تطوير واجهة برمجة التطبيقات Compute Pressure API. في الإصدار 115 من Chrome، يمكنك التسجيل في مرحلة تجربة وتقييم للمساعدة في اختبار واجهة برمجة التطبيقات الجديدة هذه، ويوضّح هذا المنشور المشاكل التي تم تصميم واجهة برمجة التطبيقات لحلّها، ويعرض كيفية استخدامها.
المشكلة
أصبحت الويب منصة تطبيقات رئيسية، مع إمكانات جديدة تجعل استخدام التطبيقات، مثل اجتماعات الفيديو، ممكنًا وتوفر تجربة رائعة للمستخدمين. يتم تحميل التجارب المستندة إلى الويب على الفور، ويمكن الوصول إليها من أي مكان، ولا تتطلّب أي تثبيت مسبق.
يريد المستخدمون تطبيقات سريعة التحميل ومتجاوبة. ويبحثون أيضًا عن أجهزة هادئة لا تُسبب سخونة عند لمسها وتكون قادرة على العمل لأطول مدّة ممكنة. قد يكون من الصعب أحيانًا تحقيق هذه العناصر عند إنشاء تجربتَين متقدمتَين، لأنّ الرسومات المتحركة السلسة ومؤثرات تمويه الفيديو في الخلفية تستهلك الكثير من طاقة المعالجة، ما يؤدي إلى تشغيل الأجهزة بأقصى طاقتها واستنزاف البطاريات.
بالإضافة إلى ذلك، هناك مجموعة كبيرة من الأجهزة التي يتم استخدامها للوصول إلى تطبيقات الويب. سيكون لجهاز الكمبيوتر المحمول الذي يبلغ عمره خمس سنوات إمكانات مختلفة جدًا عن جهاز الكمبيوتر المكتبي الجديد تمامًا، حتى عند تشغيل إصدار المتصفّح نفسه.
غالبًا ما يختار المطوّرون تطوير التطبيقات لتناسب الأجهزة الأقل قدرة، مع تجنُّب استخدام بعض الميزات التي قد تُثقل الأجهزة القديمة أو الأقل قدرة. ومع ذلك، إذا كان من الممكن تحسين التجربة للمستخدمين الذين لديهم معدّات فعّالة ويستخدمونها في البيئة المناسبة للاستفادة منها، لماذا لا يتم ذلك؟ على سبيل المثال، عند الانضمام إلى مكالمة فيديو من هاتفك، من المرجّح أن تكون رؤية المتحدّث الحالي هي أفضل تجربة. على الكمبيوتر المكتبي، من الجيد رؤية الجميع في المكالمة، وعادةً ما تكون الأجهزة قادرة على تنفيذ هذه المهمة. لتحقيق هذا، تحتاج إلى بيانات قياس أداء الأجهزة المباشرة، بدون المساس بخصوصية المستخدمين، التي يمكن استخدامها لجدولة المهام وتفعيل الميزات وإيقافها تدريجيًا لضمان تجربة مستخدم سلسة. وهنا يأتي دور Compute Pressure API.
ما هي Compute Pressure API؟
توفّر Compute Pressure API حالات عالية المستوى تمثّل الضغط على النظام. تضمن هذه الحالات العالية المستوى توازنًا جيدًا بين الخصوصية (عدم مشاركة الكثير من المعلومات المحدّدة التي يمكن أن تؤدي إلى تحديد هوية المستخدم) و المعلومات التي يمكن للمطوّرين الاستدلال عليها بسهولة. بالإضافة إلى ذلك، يسمح الإجراء باستخدام مقاييس الأجهزة الأساسية المناسبة لضمان أن يتمكّن المستخدمون من الاستفادة من كل طاقة المعالجة المتاحة لهم ما دام النظام غير خاضع لضغط لا يمكن إدارته.
على سبيل المثال، تم تصميم وحدات المعالجة المركزية الحديثة بحيث تعمل بشكل جيد عند استخدامها بنسبة% 100 في معظم الحالات، على وحدة معالجة مركزية واحدة أو على جميع وحدات المعالجة المركزية، لذا فإنّ واجهة برمجة التطبيقات التي تُعدّ استخدام %80 من المعالجات المركزية أمرًا بالغ الأهمية قد تؤدي إلى استخدام المطوّرين لقدرات الأجهزة بشكل غير كافٍ وتقديم تجربة مستخدِم دون المستوى المطلوب. من ناحية أخرى، قد لا يتوفّر للنظام نظام تبريد مناسب، أو قد تكون درجة الحرارة المحيطة مرتفعة جدًا كما هو الحال في الصيف، وقد يحدّ النظام من الأداء حتى قبل بلوغ معدل استخدام مرتفع لوحدة المعالجة المركزية. تعمل واجهة برمجة التطبيقات الحالية على ضغط وحدة المعالجة المركزية (CPU) العام، ولكن نخطّط لتجربة تفعيل ضغط وحدة المعالجة المركزية لكل صفحة على مستوى السلسلة الرئيسية وعمليات التشغيل.
تتضمّن حالة احتساب الضغط الحالات التالية:
- القيمة الاسمية: تتسبب أعباء العمل الحالية في حدوث الحد الأدنى من الضغط، ما يسمح للنظام بالعمل بمعدّل ساعة أقل للحفاظ على الطاقة.
- جيد: يعمل النظام بشكل جيد، وكل شيء سلس، ويمكنه تنفيذ مهام إضافية بدون مشاكل.
- خطير: هناك بعض الضغط الخطير على النظام، ولكن يمكن التعامل معه، ويعمل النظام بشكل جيد، ولكن قد يقترب من حدوده:
- تكون سرعة الساعة (استنادًا إلى طاقة التيار المتردّد أو الثابت) مرتفعة باستمرار.
- تكون القيم الحرارية مرتفعة ولكن لا تزال قابلة للإدارة ولا تؤدي إلى خفض الأداء.
في هذه المرحلة، إذا أضفت المزيد من العمل، قد ينتقل النظام إلى حالة خطيرة.
- خطير: النظام على وشك بلوغ حدوده، ولكنّه لم يتمهّل الحدود حتى الآن. لا تعني الحالة "حرجة" أنّه يتم الحد من أداء النظام بشكل نشط، ولكن هذه الحالة غير مستدامة على المدى الطويل وقد تؤدي إلى الحد من الأداء إذا ظلت حمولة العمل كما هي. هذه الإشارة هي الطلب الأخير على تطبيق الويب لتخفيف عبء العمل.
تفعيل Compute Pressure API
لا تكون Compute Pressure API مفعّلة تلقائيًا في Chrome، ولكن يمكن تجربتها في الإصدار 115 من Chrome من خلال تفعيل الوظيفة صراحةً.
ويمكنك تفعيلها محليًا من خلال تفعيل العلامة
enable-experimental-web-platform-features
.
لتفعيل هذه الميزة لجميع زوّار تطبيقك، يجري حاليًا إصدار تجريبي ومن المقرر أن ينتهي في الإصدار 118 من Chrome ( 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 في الإصدار 115 من Chrome على Linux وChromeOS وmacOS وWindows.
عرض توضيحي
جرِّب العرض الترويجي المضمّن أدناه لمعرفة كيفية تغيُّر حالة الضغط الحسابي استنادًا إلى بعض الضغط الاصطناعي.
إذا كان المتصفّح لا يتيح استخدام واجهة برمجة التطبيقات، يعرض الفيديو أدناه تسجيلًا للعرض التقديمي.
ملاحظات
إنّ ملاحظات المطوّرين مهمة جدًا في هذه المرحلة، لذا يُرجى الإبلاغ عن المشاكل على GitHub مع ذكر الاقتراحات والأسئلة.
روابط مفيدة
- شرح موجز للجمهور العام
- المواصفات
- خطأ في تتبُّع Chromium
- إدخال ChromeStatus.com
- مراجعة العلامة
- الهدف من التجربة
- Compute Pressure API Demo | Compute Pressure API Demo source
الشكر والتقدير
تم إنشاء صورة العرض الرئيسية بواسطة "روبرت أناش" على Unsplash. راجعت راشيل أندرو وتوماس شتاينر هذه المقالة.