ประกาศเกี่ยวกับช่วงทดลองใช้ Compute Pressure ครั้งที่ 2 จากต้นทาง

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

ตลอดปีที่ผ่านมา 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 พร้อมคำแนะนำและคำถาม

ขอขอบคุณ

รูปภาพหลักนี้สร้างโดย Robert Anasch ใน Unsplash บทความนี้ได้รับการตรวจสอบโดย Rachel Andrew และ Thomas Steiner