ตลอดปีที่ผ่านมา 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 แต่ก็สามารถทดสอบใน 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