اعلام دومین آزمایش اولیه فشار محاسباتی

کنت کریستینسن
Kenneth Christiansen
Arnaud (Arno) Mandy

در طول سال گذشته، اینتل با گوگل و سایر طرف‌ها در زمینه Compute Pressure API همکاری کرده است. در Chrome 115، می‌توانید برای کمک به آزمایش این API جدید برای آزمایش اولیه ثبت نام کنید، و این پست مشکلاتی را که API برای حل آن طراحی شده است توضیح می‌دهد و نحوه استفاده از آن را نشان می‌دهد.

مشکل

وب در حال تبدیل شدن به یک پلت فرم برنامه کلیدی است، با قابلیت های جدید، برنامه هایی مانند کنفرانس ویدیویی نه تنها امکان پذیر است، بلکه تجربه ای لذت بخش برای کاربران است. تجربیات مبتنی بر وب فورا بارگیری می شوند، از هر کجا قابل دسترسی هستند و نیازی به نصب اولیه ندارند.

کاربران برنامه هایی با بارگذاری سریع و پاسخگو می خواهند. آنها همچنین می‌خواهند تا حد امکان از عمر باتری و دستگاه‌های بی‌صدا که برای لمس آن‌ها داغ نیستند استفاده کنند. دستیابی به این چیزها گاهی اوقات ممکن است دشوار باشد، زمانی که همچنین ایجاد تجربیات پیشرفته می‌شود، زیرا انیمیشن‌های صاف و محو کردن ویدیوهای پس‌زمینه از قدرت پردازش زیادی استفاده می‌کنند، سخت‌افزار را به حد خود رسانده و باتری‌ها را خالی می‌کند.

علاوه بر این، دستگاه‌های بسیار متنوعی برای دسترسی به برنامه‌های کاربردی وب استفاده می‌شوند. یک لپ‌تاپ پنج‌ساله قابلیت‌های بسیار متفاوتی با یک کامپیوتر رومیزی جدید دارد، حتی زمانی که نسخه مرورگر مشابهی را اجرا می‌کند.

توسعه‌دهندگان اغلب ترجیح می‌دهند کمترین مخرج مشترک را توسعه دهند و از برخی ویژگی‌هایی که بر دستگاه‌های قدیمی‌تر یا کم‌توان‌تر مالیات می‌دهند اجتناب می‌کنند. با این حال، اگر امکان بهینه سازی تجربه برای کاربرانی که تجهیزات توانمندی دارند و در محیط مناسبی هستند تا از آن بهره مند شوند، ممکن بود، چرا این کار را انجام ندهید؟ به عنوان مثال، هنگام ملحق شدن به یک تماس ویدیویی از طریق تلفن، تنها دیدن بلندگوی فعلی احتمالا بهترین تجربه است. با این حال، در دسکتاپ، دیدن همه افراد در تماس خوب است، و سخت افزار معمولاً کار را انجام می دهد. برای رسیدن به این هدف، به تله‌متری سخت‌افزاری زنده، بدون به خطر انداختن حریم خصوصی کاربران، نیاز دارید که می‌تواند برای زمان‌بندی وظایف و روشن و خاموش کردن تدریجی ویژگی‌ها برای اطمینان از تجربه کاربری روان استفاده شود. اینجاست که Compute Pressure API می تواند کمک کند.

Compute Pressure API چیست؟

Compute Pressure API حالت های سطح بالایی را ارائه می دهد که نشان دهنده فشار روی سیستم است. این حالت های سطح بالا تعادل خوبی بین حریم خصوصی (به اشتراک گذاشتن اطلاعات خیلی خاص که می تواند کاربر را شناسایی کند) و اطلاعاتی که توسعه دهندگان می توانند به راحتی درباره آن استدلال کنند، تضمین می کنند. علاوه بر این، به پیاده‌سازی اجازه می‌دهد تا از معیارهای سخت‌افزاری زیربنایی درست استفاده کند تا اطمینان حاصل شود که کاربران می‌توانند تا زمانی که سیستم تحت فشار غیرقابل کنترلی قرار نگیرد، از تمام قدرت پردازشی در دسترس خود استفاده کنند.

برای مثال، CPUهای مدرن به گونه‌ای طراحی شده‌اند که در اکثر موقعیت‌ها، در یک هسته یا در همه هسته‌ها، با 100 درصد استفاده خوب کار کنند، بنابراین API که استفاده از 80 درصد هاردکد را حیاتی می‌داند، می‌تواند منجر به عدم استفاده توسعه‌دهندگان از قابلیت‌های سخت‌افزار شود. ارائه یک تجربه کاربری غیربهینه از سوی دیگر، ممکن است یک سیستم خنک‌کننده مناسبی نداشته باشد، یا دمای محیط ممکن است مانند تابستان بسیار بالا باشد، و حتی قبل از رسیدن به بهره‌برداری بالای CPU، سیستم ممکن است درگیر باشد. API فعلی روی فشار جهانی CPU کار می کند، اما ما قصد داریم با فعال کردن فشار CPU در هر صفحه در سراسر رشته اصلی و کارگران آزمایش کنیم.

فشار محاسباتی دارای حالات زیر است:

  • اسمی: بارهای کاری فعلی باعث ایجاد حداقل فشار می شود و به سیستم اجازه می دهد تا با فرکانس ساعت پایین تر برای حفظ توان کار کند.
  • منصفانه: سیستم به خوبی کار می کند. همه چیز صاف است و می تواند بدون مشکل کار اضافی را انجام دهد.
  • جدی: فشار جدی روی سیستم وجود دارد، اما قابل مدیریت است، و سیستم به خوبی کار می کند، اما ممکن است به محدودیت های خود نزدیک شود:
    • سرعت ساعت (بسته به توان AC یا DC) به طور مداوم بالا است.
    • حرارت زیاد است اما هنوز قابل کنترل است و باعث ایجاد گاز نمی شود.

در این مرحله اگر کار بیشتری اضافه کنید، سیستم ممکن است به حالت بحرانی حرکت کند.

  • بحرانی: این سیستم اکنون در آستانه رسیدن به محدودیت های خود است، اما هنوز به حد نهایی نرسیده است. بحرانی به این معنی نیست که سیستم به طور فعال در حال خنثی شدن است، اما این حالت برای درازمدت پایدار نیست و در صورت ثابت ماندن حجم کار ممکن است منجر به انقباض شود. این سیگنال آخرین تماس برای برنامه وب برای کاهش حجم کاری است.

Compute Pressure API را فعال کنید

به‌طور پیش‌فرض، 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 موجود است.

نسخه ی نمایشی

نسخه ی نمایشی تعبیه شده در زیر را امتحان کنید تا ببینید چگونه حالت فشار محاسبه شده بر اساس مقداری فشار مصنوعی تغییر می کند.

در صورتی که مرورگر شما از API پشتیبانی نمی‌کند، ویدیوی زیر ضبط نسخه نمایشی را نشان می‌دهد.

بازخورد

بازخورد برنامه‌نویس در این مرحله بسیار مهم است، بنابراین لطفاً مشکلات را با پیشنهادات و سؤالات در GitHub ارسال کنید .

سپاسگزاریها

تصویر قهرمان توسط رابرت آناش در Unsplash ایجاد شده است. این مقاله توسط ریچل اندرو و توماس اشتاینر بررسی شده است.