A RenderingNG projekt által megvalósított Chromium optimalizálás eredményei

A Chromium fejlesztői összefoglalták a 8 éve elindított RenderingNG projekt első eredményeit, amelynek célja a Chrome teljesítményének, megbízhatóságának és bővíthetőségének növelése érdekében folyamatos munka.

Például a Chrome 94-ben hozzáadott optimalizálások a Chrome 93-hoz képest 8%-kal csökkentették az oldalmegjelenítési késést, és 0.5%-kal növelték az akkumulátor élettartamát. A Chrome felhasználói bázisának mérete alapján ez naponta több mint 1400 évnyi CPU-idő megtakarítást jelent. A korábbi verziókhoz képest a modern Chrome több mint 150%-kal gyorsabban jeleníti meg a grafikát, és hatszor kevésbé érzékeny a GPU-illesztőprogram összeomlására a problémás hardvereken.

A teljesítménynövekedés elérésére alkalmazott módszerek között megjegyeztük a különböző pixelek raszterezési műveleteinek párhuzamosítását a GPU oldalán és a processzorok aktívabb elosztását a különböző CPU magok között (JavaScript futtatása, oldalgörgetés feldolgozása, videók és képek dekódolása, proaktív renderelés tartalom). Az aktív párhuzamosítást korlátozó tényező a CPU növekvő terhelése, amit a hőmérséklet emelkedése és a megnövekedett energiafogyasztás tükröz, ezért fontos a teljesítmény és a fogyasztás közötti optimális egyensúly elérése. Például akkumulátoros üzemben feláldozhatja a renderelési sebességet, de nem szabad feláldoznia a görgetési feldolgozást egy külön szálban, mivel az interfész válaszkészségének csökkenése észrevehető lesz a felhasználó számára.

A RenderingNG projekt keretében megvalósított technológiák teljesen megváltoztatják a kompozíció megközelítését, és lehetővé teszik a különböző technológiák adaptív használatát a számítások optimalizálására a GPU-n és a CPU-n az oldalak egyes részeihez képest, figyelembe véve az olyan jellemzőket, mint a képernyőfelbontás és a frissítési gyakoriság. , valamint a fejlett grafikus API-k, például a Vulkan, a D3D12 és a Metal támogatásának jelenléte a rendszerben. Az optimalizálás például a GPU-textúrák gyorsítótárazásának és a weboldalak egyes részeinek megjelenítési eredményeinek aktív használata, valamint az oldalnak csak a felhasználó számára látható területének figyelembevétele a renderelés során (nincs értelme a oldalak, amelyeket más tartalom fed le).

A RenderingNG fontos eleme a teljesítmény elkülönítése az oldalak különböző részeinek feldolgozása során is, például a hirdetések iframe-ekben való megjelenítéséhez, animációk megjelenítéséhez, hang- és videólejátszáshoz, tartalom görgetéséhez és JavaScript futtatásához kapcsolódó számítások elkülönítése.

A RenderingNG projekt által megvalósított Chromium optimalizálás eredményei

Megvalósított optimalizálási technikák:

  • A Chrome 94 tartalmazza a CompositeAfterPaint mechanizmust, amely lehetővé teszi a weboldalak külön-külön megjelenített részeinek összeállítását, és lehetővé teszi a GPU terhelésének dinamikus skálázását. A felhasználói telemetriai adatok szerint az új kompozitrendszer 8%-kal csökkentette a görgetési késleltetést, 3%-kal növelte a felhasználói élmény válaszkészségét, 3%-kal növelte a renderelési sebességet, 3%-kal csökkentette a GPU-memóriafogyasztást, és 0.5%-kal meghosszabbította az akkumulátor élettartamát.
  • A GPU Raster, egy GPU-oldali raszterizáló motor, 2020-ban minden platformon bemutatásra került, és átlagosan 37%-kal gyorsította fel a MotionMark benchmarkokat és 150%-kal a HTML-hez kapcsolódó benchmarkokat. Ebben az évben a GPU Rastert továbbfejlesztették azzal a lehetőséggel, hogy GPU-oldali gyorsítást használjon a Canvas elemek megjelenítéséhez, ami 1000%-kal gyorsabb körvonal-megjelenítést és 1.2%-kal gyorsabb MotionMark 130 benchmarkot eredményezett.
  • A LayoutNG az oldalelem-elrendezési algoritmusok teljes újratervezése, melynek célja a megbízhatóság és a kiszámíthatóság növelése. A projektet a tervek szerint még ebben az évben eljuttatják a felhasználókhoz.
  • BlinkNG – a Blink motor átalakítása és tisztítása, a renderelési műveletek külön végrehajtott fázisokra osztása a gyorsítótárazás hatékonyságának javítása és a lusta renderelés egyszerűsítése érdekében, figyelembe véve az ablakban lévő objektumok láthatóságát. A munkálatok a tervek szerint még ebben az évben befejeződnek.
  • A görgetés, az animáció és a képdekódoló kezelők külön szálakba helyezése. A projektet 2011 óta fejlesztik, és idén elérte, hogy külön szálakba exportáljon animált CSS-transzformációkat és SVG-animációkat.
  • A VideoNG egy hatékony és megbízható motor a weboldalakon történő videolejátszáshoz. Idén bevezették a védett tartalmak 4K felbontású megjelenítésének lehetőségét. A HDR támogatást korábban hozzáadtuk.
  • Viz - külön folyamatok a raszterizáláshoz (OOP-R - Out-of-process Raster) és a rendereléshez (OOP-D - Out of Process display compositor), elválasztva a böngésző felület renderelését az oldaltartalom megjelenítésétől. A projekt során fejlesztik a SkiaRenderer folyamatot is, amely platform-specifikus grafikus API-kat (Vulkan, D3D12, Metal) használ. A változtatás lehetővé tette a grafikus illesztőprogramok problémái miatti összeomlások számának hatszoros csökkentését.

Forrás: opennet.ru

Hozzászólás