Google dezactivează SegmentHeap pe Chrome din cauza regresiei performanței

Pictograma timp de citire 3 min. citit


Cititorii ajută la sprijinirea MSpoweruser. Este posibil să primim un comision dacă cumpărați prin link-urile noastre. Pictograma Tooltip

Citiți pagina noastră de dezvăluire pentru a afla cum puteți ajuta MSPoweruser să susțină echipa editorială Află mai multe

Google Chrome

În mai, Microsoft a lansat actualizarea Windows 10 mai 2020 pentru utilizatorii Windows 10. Noua actualizare a venit cu SegmentHeap, care a permis aplicațiilor Win32 să îmbunătățească utilizarea RAM. La scurt timp după lansare, Microsoft a anunțat că a reușit să reducă utilizarea RAM pe Edge folosind noua funcție.

În iunie, Google a sărit și el în treabă și a anunțat va folosi SegmentHeap în manifestul Chrome, care va repara comportamentul de acumulare a memoriei Chrome. Caracteristica a fost mai târziu activat în Chrome v85, dar după teste suplimentare, Google a continuat și a dezactivat funcția pe Chrome. Google notat că funcția a cauzat probleme de performanță și, prin urmare, a fost dezactivată.

Cu commit-ul https://chromium-review.googlesource.com/c/chromium/src/+/2163163 aterizat, Windows >= 10.0.19041.0 (Windows 10 versiunea 2004 și ulterioară) va opta pentru chrome.exe să folosească în schimb grămada de segmente a mormanului moștenit. Dar care a condus la regresia performanței pentru WebXPRT3, Speedometer2 și JetStream2.

Microsoft, pe de altă parte, notat că este obișnuit ca o aplicație să schimbe o resursă cu alta, astfel încât utilizarea redusă a memoriei a însemnat o creștere a utilizării procesorului. Microsoft a mai spus că ar putea fi făcute unele îmbunătățiri pentru a reduce impactul.

Este o practică obișnuită să schimbi o resursă cu alta. Mai des, este o utilizare crescută a memoriei pentru o utilizare redusă a procesorului. În acest caz, este vorba de o utilizare crescută a procesorului pentru o utilizare a memoriei redusă dramatic sau, mai precis, de comitere. Dacă te-ai uita la comiterea făcută de Bruce, ai fi găsit eroarea care l-a determinat să folosească heap-ul de segmente, iar aceasta a fost o suprasarcină de 100% din utilizarea heap-ului cu fragmentare scăzută în procesele browserului.

https://bugs.chromium.org/p/chromium/issues/detail?id=1014701#c9

Acestea fiind spuse, există unele îmbunătățiri care pot fi făcute pentru a reduce impactul. Ele se împart în două zone, dar niciuna nu este ușor.

1) Reduceți cantitatea de alocări tranzitorii de heap pe care browserul le face. Acest lucru va necesita modificări semnificative în întreaga bază de cod al browserului.
2) Îmbunătățiți performanța heap-ului de segmente în sine. Acest lucru poate fi rezolvat doar de echipa Windows și investigăm opțiunile noastre.

Pe termen scurt, acesta este un compromis bun între o resursă și alta, deoarece utilizarea memoriei/commitării este un punct de durere semnificativ pentru utilizatorii de browser.

Din păcate, aseară Google hotărât pentru a continua și a dezactiva SegmentHeap. A fost mutat în spatele unui steag GN, astfel încât echipa să poată continua să experimenteze cu caracteristica, astfel încât să nu fie capătul drumului.

Dezactivați în mod prestabilit heap-ul de segmente și adăugați un steag GN pentru a-l controla.

Există o anumită îngrijorare că costul heap-ului de segmente nu își justifică costul (consultați crbug.com/1102281). Acest CL îl dezactivează în mod implicit și pune această caracteristică în spatele unui steag GN pentru a ne permite să continuăm să experimentăm cu el.

S Techdows

Mai multe despre subiecte: google, Google chrome, Google Chrome Canary, grămada de segmente

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *