Chrome เพิ่มการจำกัดทรัพยากรหน้าต่างเบราว์เซอร์ที่ถูกบัง ทำงานเร็วขึ้นสูงสุด 25.8%

by mk
20 December 2021 - 08:40

Chrome มีระบบจำกัดทรัพยากรของแท็บที่ทำงานเบื้องหลังมานานพอสมควร (นับตั้งแต่ Chrome 57 ในปี 2017) ช่วยลดทั้งซีพียู จีพียู แรม ปัญหาคือระบบจำกัดทรัพยากรนี้ทำงานเฉพาะแท็บที่อยู่เบื้องหลังเท่านั้น ไม่ครอบคลุมถึงหน้าต่างที่ไม่ถูกโฟกัส ถูกย่อลง หรือถูกหน้าต่างอื่นบังอยู่

ทีมงาน Chrome พบว่ามีหน้าต่างประมาณ 20% เป็นหน้าต่างที่ถูกบัง การอนุญาตให้แท็บในหน้าต่างเหล่านี้ทำงานจึงเสียทรัพยากรเปล่า ทีมงานจึงพยายามแก้ปัญหานี้ด้วยเช่นกัน แต่อุปสรรคสำคัญคือตัวระบบปฏิบัติการ (Windows) ไม่มีวิธีการบอกว่าหน้าต่างถูกบังหรือไม่

ทางออกของ Chrome คือการคำนวณหาสถานะของหน้าต่างเอาเอง ซึ่งต้องคำนวณหน้าต่างทุกอันที่เปิดอยู่บนหน้าจอ (ไม่ใช่เฉพาะหน้าต่างของ Chrome) โครงการนี้ชื่อว่า Native Window Occlusion มีความยากเพราะเดสก์ท็อปมีความซับซ้อนสูง มีปัจจัยเรื่องการต่อมอนิเตอร์หลายตัว, เดสก์ท็อปเสมือน, หน้าต่างที่ไม่โปร่งแสง ฯลฯ มาเกี่ยวข้องด้วยมากมาย

แนวทางของ Chrome คือคำนวณหาหน้าต่างทั้งหมดในตอนแรก เพื่อดูว่ามีหน้าต่าง Chrome เปิดและถูกบังหรือไม่ แต่หลังจากนั้นจะไม่คำนวณหน้าต่างทั้งหมดอีกเพราะมีผลต่อประสิทธิภาพ จึงใช้วิธีดู system event แทนว่ามีหน้าต่างใดถูกย้าย-ย่อ-เปลี่ยนขนาดบ้าง เพื่อปรับสถานะของหน้าต่างที่ถูกบังให้เป็นปัจจุบัน

ฟีเจอร์นี้ถูกเริ่มใช้งานแบบทดลองตั้งแต่ Chrome 86 ซึ่งให้ผลออกมาดี สามารถลดการใช้แรมจีพียูลงได้ 3.1%, ลดการวาดเฟรมลงได้ 20.4%, การวาดหน้าจอคอนเทนต์ทำได้เร็วขึ้น และส่งผลให้ Chrome ทำงานเร็วขึ้น 8.5-25.8%

ที่มา - Chromium Blog

Blognone Jobs Premium