Tags:
Topics: 
Node Thumbnail

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

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

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

No Description

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

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

ที่มา - Chromium Blog

Get latest news from Blognone

Comments

By: tom789
Windows Phone
on 20 December 2021 - 15:55 #1235012

น่าสนใจ

By: wichate
Android
on 20 December 2021 - 17:01 #1235020

สรุปคือคนที่เปิด Chrome 1 Tab (งานประเภท Dashboard) กิน CPU และ Ram มากกว่าเดิม (เพราะต้องเอาไปประมวลผลอะไรพวกนี้ทั้งที่ไม่จำเป็น)

อย่าลืมว่าประประมวลผลเพื่อลดการใช้ CPU จำเป็นต้องใช้ CPU เพิ่มเช่นกัน

By: big50000
AndroidSUSEUbuntu
on 20 December 2021 - 18:47 #1235028 Reply to:1235020
big50000's picture

ไม่นับจำนวนหน้าต่างก่อนเหรอ

By: arth
iPhoneWindows PhoneWindows
on 20 December 2021 - 18:50 #1235029

จริงๆควรจะทำที่ระดับ OS เลยนะเนี่ย
มีค่าสถานะให้แต่ละโปรแกรมมาดูว่าโดนบังหรือไม่ ส่วนที่เหลือแต่ละโปรแกรมก็ไปจัดการเองว่าจะทำอะไรถ้าโดนบัง ถ้าไม่ทำก็เขียนเหมือนเดิม

By: big50000
AndroidSUSEUbuntu
on 20 December 2021 - 20:56 #1235036 Reply to:1235029
big50000's picture

พวก API อำนวยความสะดวกแนว ๆ นี้มักนำมาซึ่งช่องโหว่ของระบบ

By: lew
FounderJusci's WriterMEconomicsAndroid
on 21 December 2021 - 00:02 #1235045 Reply to:1235029
lew's picture

ซึ่งยากมากครับ โดยเฉพาะถ้าจะคงความเข้ากันได้กับแอปพลิเคชั่นเก่าๆ ทั้งหมด (ซึ่งเป็นจุดได้เปรียบของ Desktop)

ถ้ากรณีของ mobile OS นี่ทำแบบนี้ได้อยู่แล้ว เกิดใหม่แล้วคิดเรื่องแบบนี้แต่แรกเลย แถมตัด flexibility การแสดงหน้าต่างเหลื่อมกัน ทำให้ง่ายลงมาก


lewcpe.com, @wasonliw

By: arth
iPhoneWindows PhoneWindows
on 21 December 2021 - 01:29 #1235047 Reply to:1235045

ใช้หนะครับ ที่ผมหมายถึงคือไปสอบถามสถานะ(คล้าย ๆ function นึง)กับ OS ว่าโดนบังไหม ซึ่งถ้าโปรแกรมเก่าๆ ก็จะไม่มีการเรียกใช้อยู่แล้ว ก็ทำงานเหมือน ๆ เดิม ส่วนโปรแกรมใหม่ ๆ ก็เหมือนเป็น feature ของ OS นั่นแหละครับ จะเรียกใช้หรือไม่เรียกก็ได้ ถ้าเรียกก็จะรู้ว่าโดนบัง หลังจากรู้แล้ว จะไม่ทำอะไร หรือจะลดงานลงเองก็ได้

By: big50000
AndroidSUSEUbuntu
on 21 December 2021 - 09:10 #1235058 Reply to:1235047
big50000's picture

โปรแกรมจำนวนมากมายมหาศาลไม่ได้จัดการหน้าต่างตามแนวทางที่ window manager ออกแบบมาด้วยซ้ำ ถ้าจะ implement ส่วนของการตรวจสอบนี้มักลงเอยที่การแก้ไขกระบวนการทำงานของ window manager ด้วย ซึ่งมันกระทบแทบทั้งหมด ถ้าจะทำจริง ๆ ก็อย่างที่คุณ lew ว่า มันต้องคิดมาตั้งแต่เริ่มต้น หรืออย่างเบาคือสร้าง application framework/platform ขึ้นมาใหม่

By: arth
iPhoneWindows PhoneWindows
on 21 December 2021 - 10:43 #1235071 Reply to:1235058

อ้อ งั้นคงแก้ยากละครับ ถ้าไม่หักดิบแบบ Apple ประกาศไม่ support application เก่าๆถ้าไม่ทำนั่นทำนี่ตามที่กำหนด

By: crucifier
iPhoneAndroidUbuntu
on 20 December 2021 - 21:15 #1235038

อันนี้ปัญหาชีวิตเลย เพราะปกติจำเป็นต้องเปิดโครมค้างไว้เพื่อรัน javascript บางอย่าง ก็เปิดทิ้งไว้งั้นแล้วเปิดแท็บใหม่ทำงานไปด้วย ปรากฏว่าแทนที่งานจะเสรในหนึ่งชั่วโมง ผ่านไปเป็นวันก็ยังไม่เสร็จเพราะโดนลด performance ลง

By: freeriod on 21 December 2021 - 00:01 #1235044
freeriod's picture

ทำไมรู้ไม่เห็นมันจะเร็วขึ้นเลย

By: peakna
Android
on 21 December 2021 - 09:57 #1235064
peakna's picture

แล้วผู้ใช้มีวิธีเลือกให้หน้าต่างที่ถูกบังอนุญาตให้แท็บในหน้าต่างเหล่านี้ทำงานต่อได้หรือป่าว ทำไมไม่ให้ผู้ใช้งานมีวิธีเลือกเปิดหรือปิดน่าจะดีกว่า

By: mk
FounderAndroid
on 21 December 2021 - 11:11 #1235082 Reply to:1235064
By: peakna
Android
on 21 December 2021 - 11:28 #1235087 Reply to:1235082
peakna's picture

ขอบคุณครับ

By: meejaa on 24 December 2021 - 13:04 #1235389

Chrome ทำงานไวขึ้น 2X% โหหหหหห เร็ว สุดยอด นี่คือระดับโลก ไม่มีที่ไหนที่ดีไปกว่านี้อีกแล้ว เกิดมาไม่เคยพบเคยเจออะไรที่จะดีมากถึงขนาดนี้

Firefox ทำงาน ไวขึ้น 3X% วิศวกร ff มีฝีมิอแค่นี้หรอ