ในช่วงปีที่ผ่านมา 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 ได้โดยเปิดใช้ฟังก์ชันการทำงานอย่างชัดเจน
คุณเปิดใช้งานในเครื่องได้โดยการเปิดใช้แฟล็ก 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 พร้อมคำแนะนำและคำถาม
ลิงก์ที่มีประโยชน์
- คำอธิบายแบบสาธารณะ
- ข้อกำหนดเฉพาะ
- ข้อบกพร่องในการติดตาม Chromium
- รายการ ChromeStatus.com
- ตรวจสอบแท็ก
- ความตั้งใจในการทดสอบ
- การสาธิต Compute Pressure API | แหล่งที่มาสาธิตสำหรับ Compute Pressure API
ข้อความแสดงการยอมรับ
รูปภาพหลักนี้สร้างขึ้นโดย Robert Anasch ใน Unsplash บทความนี้ได้รับการตรวจสอบโดย Rachel Andrew และ Thomas Steiner