ประกาศเกี่ยวกับช่วงทดลองใช้ 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 แต่ก็สามารถทดสอบใน 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