على مدار العام الماضي، تعاونت شركة Intel مع Google وجهات أخرى في تطوير واجهة برمجة التطبيقات Compute Pressure API. في الإصدار 115 من Chrome، يمكنك التسجيل في مرحلة التجربة والتقييم للمساعدة في اختبار واجهة برمجة التطبيقات الجديدة هذه، وتوضّح هذه المشاركة المشاكل التي تم تصميم واجهة برمجة التطبيقات لحلّها، وتشرح كيفية استخدامها.
المشكلة
أصبحت الويب منصة تطبيقات رئيسية، مع إمكانات جديدة تجعل استخدام التطبيقات، مثل اجتماعات الفيديو، ممكنًا وتوفر تجربة رائعة للمستخدمين. يتم تحميل التجارب المستندة إلى الويب على الفور، ويمكن الوصول إليها من أي مكان، ولا تتطلّب أي تثبيت مسبق.
يريد المستخدمون تطبيقات سريعة التحميل وسهلة الاستخدام. ويبحثون أيضًا عن أجهزة صامتة لا تُسبب سخونة عند لمسها وتكون قادرة على العمل لفترة أطول ما أمكن. وقد يصعب أحيانًا تحقيق هذه الأمور عند إنشاء تجارب متقدّمة، مثل استخدام الرسوم المتحركة السلسة وتمويه الفيديوهات في الخلفية باستخدام قدر كبير من إمكانيات المعالجة، ما يؤدي إلى تشغيل الأجهزة لأقصى حد ممكن واستنزاف البطارية.
بالإضافة إلى ذلك، هناك مجموعة كبيرة من الأجهزة المستخدَمة للوصول إلى تطبيقات الويب. سيكون لجهاز الكمبيوتر المحمول الذي يبلغ عمره خمس سنوات إمكانات مختلفة جدًا عن جهاز الكمبيوتر المكتبي الجديد تمامًا، حتى عند تشغيل إصدار المتصفّح نفسه.
غالبًا ما يختار المطوّرون تطوير التطبيقات لتناسب الأجهزة الأقل قدرة، مع تجنُّب استخدام بعض الميزات التي قد تُثقل الأجهزة القديمة أو الأقل قدرة. ومع ذلك، إذا كان من الممكن تحسين التجربة للمستخدمين الذين لديهم معدّات فعّالة ويستخدمونها في البيئة المناسبة للاستفادة منها، لماذا لا يتم ذلك؟ على سبيل المثال، عند الانضمام إلى مكالمة فيديو من هاتفك، من المرجّح أن تكون رؤية المتحدّث الحالي هي أفضل تجربة. على الكمبيوتر المكتبي، من الجيد أن تتمكّن من رؤية جميع المشاركين في المكالمة، وعادةً ما تكون الأجهزة قادرة على تنفيذ ذلك. لتحقيق هذا، تحتاج إلى بيانات قياس أداء الأجهزة المباشرة، بدون التأثير سلبًا في خصوصية المستخدمين، والتي يمكن استخدامها لجدولة المهام وتفعيل ميزات وإيقافها تدريجيًا لضمان تجربة مستخدم سلسة. هذا هو المكان الذي يمكن أن تساعدك فيه واجهة برمجة تطبيقات Compute Pressure.
ما هي Compute Pressure API؟
توفر واجهة برمجة التطبيقات Compute Pressure حالات عالية المستوى تمثل الضغط على النظام. تضمن هذه الحالات العالية المستوى توازنًا جيدًا بين الخصوصية (عدم مشاركة الكثير من المعلومات المحدّدة التي يمكن أن تؤدي إلى تحديد هوية المستخدم) و المعلومات التي يمكن للمطوّرين الاستدلال عليها بسهولة. بالإضافة إلى ذلك، يسمح الإجراء بالاستفادة من مقاييس الأجهزة الأساسية المناسبة لضمان استفادة المستخدمين من كل طاقة المعالجة المتاحة لهم ما دام النظام غير خاضع لضغط لا يمكن إدارته.
فعلى سبيل المثال، تم تصميم وحدات المعالجة المركزية الحديثة لتعمل بشكل جيد بنسبة 100% في معظم الحالات أو على نواة واحدة أو على جميع النوى، لذا فإنّ واجهة برمجة التطبيقات التي تضيف ترميزًا ثابتًا بنسبة 80% على أنّها بالغة الأهمية قد تؤدي إلى عدم استفادة المطوّرين من إمكانيات الأجهزة وتقديم تجربة مستخدم دون المستوى الأمثل. من ناحية أخرى، قد لا يتوفّر للنظام نظام تبريد مناسب، أو قد تكون درجة الحرارة المحيطة مرتفعة جدًا كما هو الحال في الصيف، وقد يحدّ النظام من الأداء حتى قبل بلوغ معدل استخدام مرتفع لوحدة المعالجة المركزية. تعمل واجهة برمجة التطبيقات الحالية على ضغط وحدة المعالجة المركزية العالمية، ولكننا نخطط لتجربة تمكين ضغط وحدة المعالجة المركزية في كل صفحة عبر سلسلة التعليمات الرئيسية والعاملين.
تتضمّن حالة احتساب الضغط الحالات التالية:
- القيمة الاسمية: تتسبب أعباء العمل الحالية في حدوث الحد الأدنى من الضغط، ما يسمح للنظام بالعمل بمعدّل ساعة أقل للحفاظ على الطاقة.
- جيد: يعمل النظام بشكل جيد، وكل شيء سلس، ويمكنه تنفيذ مهام إضافية بدون مشاكل.
- خطير: هناك بعض الضغط الخطير على النظام، ولكن يمكن التعامل معه، ويعمل النظام بشكل جيد، ولكن قد يقترب من حدوده:
- تكون سرعة الساعة (استنادًا إلى طاقة التيار المتردّد أو الثابت) مرتفعة باستمرار.
- تكون القيم الحرارية مرتفعة ولكن لا تزال قابلة للإدارة ولا تؤدي إلى خفض الأداء.
في هذه المرحلة، إذا أضفت المزيد من العمل، فقد ينتقل النظام إلى حالة حرجة.
- خطير: النظام على وشك بلوغ حدوده، ولكنّه لم يتمهّل الحدود حتى الآن. لا يعني "الحرج" أنه يتم تقييد النظام بنشاط، ولكن هذه الحالة ليست مستدامة على المدى الطويل وقد تؤدي إلى تقييد إذا بقي أعباء العمل كما هي. هذه الإشارة هي الطلب الأخير على تطبيق الويب لتخفيف عبء العمل.
تفعيل Compute Pressure API
لا تكون Compute Pressure API مفعّلة تلقائيًا في Chrome، ولكن يمكن تجربتها في Chrome 115 من خلال تفعيل الوظيفة صراحةً.
ويمكنك تفعيلها محليًا من خلال تفعيل العلامة
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
- مراجعة TAG
- الهدف من التجربة
- العرض التوضيحي لواجهة برمجة تطبيقات الضغط في ضغط البيانات | المصدر التجريبي لواجهة برمجة تطبيقات الضغط في ضغط البيانات
شكر وتقدير
تم إنشاء صورة العرض الرئيسية بواسطة "روبرت أناش" على Unsplash. راجعت راشيل أندرو وتوماس شتاينر هذه المقالة.