Selama setahun terakhir, Intel telah berkolaborasi dengan Google dan pihak lain pada 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 ingin diselesaikan oleh API tersebut, 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 memerlukan penginstalan di muka.
Pengguna menginginkan aplikasi yang cepat dimuat dan responsif. Mereka juga ingin mendapatkan masa pakai baterai sebanyak mungkin, dan perangkat senyap yang tidak panas saat disentuh. Hal-hal ini terkadang sulit dicapai saat juga membuat pengalaman lanjutan karena animasi yang lancar dan pemburaman video latar belakang menggunakan banyak daya pemrosesan, mendorong hardware ke batasnya, dan menghabiskan baterai.
Selain itu, ada banyak sekali perangkat yang digunakan untuk mengakses aplikasi web. Laptop berusia lima tahun akan memiliki kemampuan yang sangat berbeda dengan komputer desktop baru, meskipun menjalankan versi browser yang sama.
Developer sering kali memilih untuk mengembangkan untuk denominator umum terendah, sehingga menghindari penggunaan beberapa fitur yang akan membebani perangkat lama atau yang kurang canggih. Namun, jika memungkinkan untuk mengoptimalkan pengalaman bagi pengguna yang memiliki peralatan yang kompeten dan berada di lingkungan yang tepat untuk mendapatkan manfaat darinya, mengapa tidak melakukannya? Sebagai contoh, saat bergabung ke panggilan video dari ponsel, hanya melihat pembicara saat ini kemungkinan akan menjadi pengalaman terbaik. Namun, di desktop, sebaiknya lihat semua orang dalam panggilan, dan hardware biasanya dapat melakukan tugas tersebut. Untuk mencapai hal ini, 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 yang dimaksud dengan Compute Pressure API?
Compute Pressure API menawarkan status tingkat 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 dipikirkan dengan mudah oleh developer. Selain itu, hal ini memungkinkan implementasi menggunakan metrik hardware pokok yang tepat untuk memastikan bahwa pengguna dapat memanfaatkan semua daya pemrosesan yang tersedia selama sistem tidak mengalami tekanan yang tidak dapat dikelola.
Misalnya, CPU modern didesain untuk berjalan dengan baik pada pemakaian 100% di sebagian besar situasi, pada satu inti atau di semua core, sehingga API yang melakukan hardcode pada pemanfaatan 80% sebagai hal yang penting dapat mengakibatkan developer kurang memanfaatkan kemampuan hardware dan menawarkan pengalaman pengguna yang kurang optimal. Di sisi lain, sistem mungkin tidak memiliki pendinginan yang tepat, atau suhu sekitar mungkin sangat tinggi seperti pada musim panas, dan sistem mungkin mengalami throttling bahkan sebelum mencapai penggunaan CPU yang tinggi. API saat ini berfungsi pada tekanan CPU global, tetapi kami berencana bereksperimen dengan mengaktifkan tekanan CPU per halaman di seluruh thread dan worker utama.
Tekanan komputasi memiliki status berikut:
- Nominal: Beban kerja saat ini menyebabkan tekanan minimal, sehingga sistem dapat berjalan pada frekuensi clock yang lebih rendah untuk menghemat daya.
- Cukup: Sistem berjalan dengan baik; semuanya lancar, dan dapat menerima pekerjaan tambahan tanpa masalah.
- Serius: Ada tekanan serius pada sistem, tetapi dapat dikelola, dan sistem berjalan dengan baik, tetapi mungkin hampir mencapai batasnya:
- Kecepatan clock (bergantung pada daya AC atau DC) selalu tinggi.
- Suhu tinggi, tetapi masih dapat dikelola dan tidak menyebabkan throttling.
Pada tahap ini, jika Anda menambahkan lebih banyak pekerjaan, sistem mungkin akan beralih ke status kritis.
- Kritis: Sistem kini akan mencapai batasnya, tetapi belum mencapai batas. Kritis tidak berarti bahwa sistem sedang secara aktif di-throttle, tetapi status ini tidak berkelanjutan untuk jangka panjang dan dapat menyebabkan throttling jika beban kerja tetap sama. Sinyal ini adalah panggilan terakhir bagi aplikasi web untuk meringankan workload-nya.
Mengaktifkan Compute Pressure API
Secara default, Compute Pressure API tidak diaktifkan di Chrome, tetapi dapat
dieksperimenkan di Chrome 115 dengan mengaktifkan fungsinya secara eksplisit.
Anda dapat mengaktifkannya secara lokal dengan mengaktifkan
flag enable-experimental-web-platform-features
.
Untuk mengaktifkannya bagi semua pengunjung aplikasi Anda, uji coba origin saat ini sedang berlangsung dan ditetapkan untuk berakhir pada Chrome 118 ( 18 Juli 2023). Untuk berpartisipasi dalam uji coba, daftar dan sertakan elemen meta dengan token uji coba asal di header HTML atau HTTP. Untuk 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 menggambarkan 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 untuk melihat bagaimana status tekanan komputasi berubah berdasarkan beberapa tekanan buatan.
Jika browser Anda tidak mendukung API, video di bawah ini menampilkan rekaman demo.
Masukan
Masukan developer sangat penting pada tahap ini, jadi harap laporkan masalah di GitHub dengan saran dan pertanyaan.
Link penting
- Penjelasan publik
- Spesifikasi
- Bug pelacakan Chromium
- Entri ChromeStatus.com
- TAG Review
- Intent to Experiment
- Demo Compute Pressure API | Sumber Demo Compute Pressure API
Ucapan terima kasih
Gambar hero dibuat oleh Robert Anasch di Unsplash. Artikel ini ditinjau oleh Rachel Andrew dan Thomas Steiner.