ตลอดปีที่ผ่านมา Intel ได้ทํางานร่วมกับ Google และบุคคลอื่นๆ ใน Compute Pressure API ใน Chrome 115 คุณสามารถลงทะเบียนเข้าร่วมช่วงทดลองใช้จากต้นทางเพื่อช่วยทดสอบ API ใหม่นี้ได้ และโพสต์นี้จะอธิบายปัญหาที่ API นี้ออกแบบมาเพื่อแก้ปัญหา รวมถึงแสดงวิธีใช้
ปัญหา
เว็บกำลังกลายเป็นแพลตฟอร์มแอปพลิเคชันหลักด้วยความสามารถใหม่ๆ ที่ทำให้แอปพลิเคชันต่างๆ เช่น การประชุมทางวิดีโอไม่เพียงเป็นไปได้ แต่ยังมอบประสบการณ์การใช้งานที่ยอดเยี่ยมให้แก่ผู้ใช้ ประสบการณ์การใช้งานบนเว็บจะโหลดทันที เข้าถึงได้จากทุกที่ และไม่ต้องติดตั้งล่วงหน้า
ผู้ใช้ต้องการแอปพลิเคชันที่โหลดเร็วและตอบสนองได้อย่างรวดเร็ว นอกจากนี้ ยังต้องการยืดอายุการใช้งานแบตเตอรี่ให้ได้มากที่สุด รวมถึงใช้อุปกรณ์ที่เงียบและไม่ร้อน บางครั้งอาจทำได้ยากเมื่อต้องสร้างประสบการณ์ขั้นสูงด้วย เนื่องจากภาพเคลื่อนไหวที่ราบรื่นและการเบลอวิดีโอพื้นหลังต้องใช้กำลังประมวลผลจำนวนมาก ซึ่งจะทําให้ฮาร์ดแวร์ทำงานอย่างหนักและแบตเตอรี่หมดเร็ว
นอกจากนี้ ยังมีอุปกรณ์ที่หลากหลายใช้ในการเข้าถึงแอปพลิเคชันบนเว็บ แล็ปท็อป 5 ปีเก่าๆ จะมีความสามารถแตกต่างจากคอมพิวเตอร์เดสก์ท็อปเครื่องใหม่มาก แม้ว่าจะใช้เบราว์เซอร์เวอร์ชันเดียวกันก็ตาม
นักพัฒนาแอปมักเลือกที่จะพัฒนาแอปสำหรับอุปกรณ์ที่รองรับได้มากที่สุด เพื่อหลีกเลี่ยงการใช้ฟีเจอร์บางอย่างที่อาจทำให้อุปกรณ์รุ่นเก่าหรือมีประสิทธิภาพต่ำทำงานหนัก อย่างไรก็ตาม หากเพิ่มประสิทธิภาพประสบการณ์การใช้งานให้กับผู้ใช้ที่มีอุปกรณ์ที่มีประสิทธิภาพและอยู่ในสภาพแวดล้อมที่เหมาะสมเพื่อรับประโยชน์จากประสบการณ์การใช้งานได้ ก็ควรทำ ตัวอย่างเช่น เมื่อเข้าร่วมวิดีโอคอลจากโทรศัพท์ การเห็นเฉพาะผู้พูดคนปัจจุบันน่าจะเป็นประสบการณ์การใช้งานที่ดีที่สุด อย่างไรก็ตาม ในเดสก์ท็อป คุณจะเห็นทุกคนที่โทรเข้ามา และฮาร์ดแวร์ก็มักจะทำงานได้ดี คุณต้องใช้การวัดผลฮาร์ดแวร์แบบเรียลไทม์โดยไม่ละเมิดความเป็นส่วนตัวของผู้ใช้ ซึ่งสามารถใช้กำหนดเวลางานและเปิด/ปิดฟีเจอร์ต่างๆ ทีละรายการเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่น ในกรณีนี้ 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 แต่คุณทดลองใช้ API นี้ได้ใน Chrome 115 โดยเปิดใช้ฟังก์ชันการทำงานอย่างชัดเจน
คุณสามารถเปิดใช้งานในเครื่องได้โดยเปิดใช้Flag enable-experimental-web-platform-features
หากต้องการเปิดใช้ฟีเจอร์นี้สำหรับผู้เข้าชมแอปทุกคน ขณะนี้เรากําลังมีช่วงทดลองใช้เวอร์ชันต้นทางซึ่งกําหนดให้สิ้นสุดใน Chrome 118 ( 18 กรกฎาคม 2023) หากต้องการเข้าร่วมการทดลองใช้ ให้ลงชื่อสมัครใช้และใส่องค์ประกอบเมตาที่มีโทเค็นทดลองใช้จากต้นทางในส่วนหัว HTML หรือ HTTP ดูข้อมูลเพิ่มเติมได้ที่โพสต์เริ่มต้นใช้งานการทดสอบต้นทาง
สังเกตภาระงานของ Compute
ข้อมูลโค้ดต่อไปนี้แสดงวิธีตรวจสอบและดำเนินการกับการเปลี่ยนแปลงของแรงดันการประมวลผล
// 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 พร้อมคำแนะนำและคำถาม
ลิงก์ที่มีประโยชน์
- คำอธิบายแบบสาธารณะ
- ข้อกำหนดเฉพาะ
- ข้อบกพร่องการติดตามของ Chromium
- รายการ ChromeStatus.com
- การตรวจสอบแท็ก
- ความตั้งใจที่จะทดสอบ
- Compute Pressure API Demo | Compute Pressure API Demo source
ขอขอบคุณ
รูปภาพหลักนี้สร้างโดย Robert Anasch ใน Unsplash บทความนี้ได้รับการตรวจสอบโดย Rachel Andrew และ Thomas Steiner