Mengumumkan uji coba origin Compute Pressure yang kedua

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Selama setahun terakhir, Intel telah berkolaborasi dengan Google dan pihak lain dalam Compute Pressure API. Di Chrome 115, Anda dapat mendaftar ke uji coba origin untuk membantu menguji API baru ini, dan postingan ini menjelaskan masalah yang dirancang untuk diselesaikan oleh API, serta menunjukkan cara menggunakannya.

Permasalahan

Web menjadi platform aplikasi utama, dengan kemampuan baru yang membuat aplikasi seperti konferensi video tidak hanya memungkinkan, tetapi juga memberikan pengalaman yang menyenangkan bagi pengguna. Pengalaman berbasis web dimuat secara instan, dapat diakses dari mana saja, dan tidak perlu diinstal di awal.

Pengguna menginginkan aplikasi yang dimuat dengan cepat dan responsif. Mereka juga ingin menghemat masa pakai baterai sebanyak mungkin, dan perangkat senyap yang tidak panas untuk disentuh. Hal tersebut terkadang sulit dicapai saat membuat pengalaman lanjutan karena animasi yang halus dan pemburaman video latar belakang menggunakan banyak daya pemrosesan, yang mendorong hardware hingga batasnya, dan menguras baterai.

Selain itu, ada berbagai perangkat yang digunakan untuk mengakses aplikasi web. Laptop berusia lima tahun akan memiliki kemampuan yang sangat berbeda dengan komputer desktop baru, bahkan saat menjalankan versi browser yang sama.

Developer sering memilih mengembangkan aplikasi untuk denominator umum terendah, dengan menghindari penggunaan beberapa fitur yang akan mengenakan pajak pada perangkat yang lebih lama atau yang kurang mampu. Namun, jika pengalaman dapat dioptimalkan bagi pengguna yang memiliki peralatan yang mumpuni dan berada di lingkungan yang tepat untuk memanfaatkannya, mengapa tidak melakukannya? Misalnya, saat bergabung ke panggilan video dari ponsel, hanya melihat speaker saat ini kemungkinan akan menjadi pengalaman terbaik. Namun, di desktop, akan lebih baik jika kita dapat melihat semua orang dalam panggilan, dan hardware biasanya dapat melakukan tugas tersebut. Untuk mencapainya, Anda memerlukan telemetri hardware live, tanpa mengorbankan privasi pengguna, yang dapat digunakan untuk menjadwalkan tugas serta mengaktifkan dan menonaktifkan fitur secara bertahap untuk memastikan pengalaman pengguna yang lancar. Di sinilah Compute Pressure API dapat membantu.

Apa itu Compute Pressure API?

Compute Pressure API menawarkan status level tinggi yang mewakili tekanan pada sistem. Status tingkat tinggi ini memastikan keseimbangan yang baik antara privasi (tidak membagikan terlalu banyak informasi spesifik yang dapat mengidentifikasi pengguna) dan informasi yang dapat dijelaskan dengan mudah oleh developer. Selain itu, hal ini memungkinkan implementasi menggunakan metrik hardware dasar yang tepat untuk memastikan pengguna dapat memanfaatkan semua daya pemrosesan yang tersedia bagi mereka selama sistem tidak dalam tekanan yang tidak dapat dikelola.

CPU modern, misalnya, dirancang untuk berjalan dengan baik pada tingkat pemakaian 100% di sebagian besar situasi, pada satu inti atau di semua inti, sehingga API yang melakukan hardcode terhadap penggunaan 80% sebagai penting dapat menyebabkan developer kurang memanfaatkan kemampuan hardware dan menawarkan pengalaman pengguna yang kurang optimal. Di sisi lain, sistem mungkin tidak memiliki pendinginan yang tepat, atau suhu ruangan mungkin sangat tinggi seperti saat musim panas, dan sistem mungkin mengalami throttling bahkan sebelum penggunaan CPU yang tinggi tercapai. API saat ini berfungsi pada tekanan CPU global, tetapi kami berencana bereksperimen dengan mengaktifkan tekanan CPU per halaman di seluruh thread dan pekerja utama.

Tekanan komputasi memiliki status berikut:

  • Nominal: Workload saat ini menyebabkan tekanan minimal, sehingga memungkinkan sistem berjalan pada frekuensi clock yang lebih rendah untuk menghemat daya.
  • Sedang: Sistem baik-baik saja; semuanya lancar, dan dapat melakukan pekerjaan tambahan tanpa masalah.
  • Serius: Ada beberapa tekanan serius pada sistem, tetapi dapat dikelola, dan sistem berjalan dengan baik, tetapi bisa mendekati batasnya:
    • Kecepatan clock (bergantung pada daya AC atau DC) tinggi secara konsisten.
    • Termal tinggi, tetapi masih dapat dikelola dan tidak menyebabkan throttling.

Pada tahap ini, jika Anda menambahkan lebih banyak pekerjaan, sistem dapat beralih ke status kritis.

  • Penting: Sistem kini hampir mencapai batasnya, tetapi belum mencapai batasnya. Penting tidak berarti bahwa sistem sedang di-throttle secara aktif, tetapi status ini tidak berkelanjutan untuk jangka panjang dan dapat mengakibatkan throttling jika beban kerja tetap sama. Sinyal ini adalah panggilan terakhir bagi aplikasi web untuk meringankan beban kerjanya.

Mengaktifkan Compute Pressure API

Secara default, Compute Pressure API tidak diaktifkan di Chrome, tetapi dapat bereksperimen di Chrome 115 dengan mengaktifkan fungsi tersebut secara eksplisit. Anda dapat mengaktifkannya secara lokal dengan mengaktifkan tanda enable-experimental-web-platform-features.

Untuk mengaktifkannya bagi semua pengunjung aplikasi Anda, uji coba origin saat ini sedang berlangsung dan akan berakhir di Chrome 118 ( 18 Juli 2023). Untuk berpartisipasi dalam uji coba, daftar dan sertakan elemen meta dengan token uji coba origin di header HTML atau HTTP. Untuk mengetahui informasi selengkapnya, lihat postingan Memulai uji coba origin.

Mengamati tekanan komputasi

Cuplikan kode berikut mengilustrasikan cara memantau dan menindaklanjuti perubahan tekanan komputasi:

// 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');

Cuplikan kode berikut mengilustrasikan cara menggunakan Compute Pressure API dari iframe:

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

Dukungan platform

Compute Pressure API tersedia di Chrome 115 di Linux, ChromeOS, macOS, dan Windows.

Demo

Coba demo yang disematkan di bawah ini untuk melihat bagaimana status tekanan komputasi berubah berdasarkan beberapa tekanan buatan.

Jika browser Anda tidak mendukung API, video di bawah akan menampilkan rekaman demo.

Masukan

Masukan developer sangat penting pada tahap ini, jadi silakan laporkan masalah di GitHub dengan saran dan pertanyaan.

Ucapan terima kasih

Banner besar dibuat oleh Robert Anasch di Unsplash. Artikel ini ditinjau oleh Rachel Andrew dan Thomas Steiner.