Google deaktivuje SegmentHeap v prohlížeči Chrome kvůli regresi výkonu

Ikona času čtení 3 min. číst


Čtenáři pomáhají podporovat MSpoweruser. Pokud nakoupíte prostřednictvím našich odkazů, můžeme získat provizi. Ikona popisku

Přečtěte si naši informační stránku a zjistěte, jak můžete pomoci MSPoweruser udržet redakční tým Dozvědět se více

Google Chrome

V květnu společnost Microsoft vydala aktualizaci Windows 10 May 2020 Update pro uživatele Windows 10. Nová aktualizace přišla s SegmentHeap, který umožnil aplikacím Win32 zlepšit využití RAM. Brzy po vydání Microsoft oznámil, že se mu pomocí nové funkce podařilo snížit využití RAM na Edge.

V červnu naskočil do rozjetého vlaku i Google a oznámila, bude používat SegmentHeap v manifestu prohlížeče Chrome, což opraví chování Chromu zahlcení paměti. Funkce byla později povolen v Chrome v85, ale po dalším testování Google tuto funkci v Chrome zakázal. Google poznamenat, že tato funkce způsobovala problémy s výkonem, a proto byla deaktivována.

Po potvrzení https://chromium-review.googlesource.com/c/chromium/src/+/2163163 se Windows >= 10.0.19041.0 (Windows 10 verze 2004 a novější) rozhodnou pro použití haldy segmentů chrome.exe starší hromady. To však vedlo k regresi výkonu pro WebXPRT3, Speedometer2 a JetStream2.

Microsoft na druhou stranu poznamenat, že je běžné, že aplikace vymění jeden zdroj za jiný, takže snížené využití paměti znamenalo zvýšení využití CPU. Microsoft dále uvedl, že lze provést určitá vylepšení, aby se dopad zmírnil.

Je běžnou praxí vyměnit jeden zdroj za jiný. Častěji je to zvýšené využití paměti pro snížení využití CPU. V tomto případě je to zvýšené využití CPU pro dramaticky snížené využití paměti nebo přesnější potvrzení. Pokud byste se podívali na potvrzení, které Bruce provedl, našli byste chybu, která ho vedla k použití haldy segmentů, a to byla 100% režie z použití haldy nízké fragmentace v procesech prohlížeče.

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

To znamená, že existuje určitá zlepšení, která lze udělat pro snížení dopadu. Spadají do dvou oblastí, ale ani jedna není jednoduchá.

1) Snižte množství přechodných alokací haldy, které prohlížeč provádí. To bude vyžadovat významné změny v celé kódové základně prohlížeče.
2) Zlepšete výkon samotné haldy segmentu. To může vyřešit pouze tým Windows a zjišťujeme naše možnosti.

Z krátkodobého hlediska se jedná o dobrý kompromis jednoho zdroje za jiný, protože využití paměti/závazku představuje pro uživatele prohlížečů významný problém.

Bohužel včera v noci Google rozhodl pokračujte a deaktivujte SegmentHeap. Byl přesunut za vlajku GN, takže tým může pokračovat v experimentování s funkcí, aby to nebyl konec cesty.

Ve výchozím nastavení zakažte haldu segmentů a přidejte příznak GN pro její ovládání.

Existují určité obavy, že náklady na haldu segmentu neospravedlňují její náklady (viz crbug.com/1102281). Tento CL jej ve výchozím nastavení deaktivuje a umístí tuto funkci za příznak GN, abychom s ní mohli dále experimentovat.

Ulice: Techdows

Více o tématech: Google, Google Chrome, Kanál Google Chrome, segmentová halda

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *