A Chromium optimalizálásának eredményei, amelyeket a RenderingNG projekt valósított meg

A Chromium fejlesztői összefoglalták az 8 éve indított RenderingNG projekt első eredményeit, amelynek célja a Chrome teljesítményének, megbízhatóságának és skálázhatóságának folyamatos növelése.

Például a Chrome 94 kiadásában bevezetett optimalizálások a Chrome 93-hoz képest 8%-kal csökkentették az oldalak feldolgozási késleltetését, és 0,5%-kal növelték az akkumulátor üzemidejét. A Chrome felhasználói bázisának méretét figyelembe véve ez a mutató globálisan napi több mint 1400 évnyi processzori idő megtakarításában nyilvánul meg. A korábbi évek verzióihoz képest a modern Chrome több mint 150%-kal gyorsabban rendereli a grafikát, és 6-szor kevésbé hajlamos a GPU-illesztőprogramok összeomlására problémás hardvereken.

A megvalósított módszerek közül, amelyek lehetővé tették a teljesítmény növelését, kiemelhető a különböző pixelek raszterizálási műveleteinek párhuzamosítása a GPU-n, valamint a feldolgozók aktívabb elosztása a különböző CPU-ytászárok között (JavaScript végrehajtása, az oldalak görgetésének feldolgozása, videók és képek dekódolása, a tartalom előzetes renderelése). A párhuzamosítás aktív alkalmazásának korlátja a CPU terhelésének növekedése, amely a hőmérséklet emelkedésében és az energiafogyasztás növekedésében tükröződik. Ezért fontos, hogy optimális egyensúlyt érjünk el a teljesítmény és az energiafogyasztás között. Például akkumulátorról működve feláldozhatjuk a renderelési sebességet, de nem áldozhatjuk fel a görgetés külön szálon való feldolgozását, mivel a felhasználó számára észlelhetővé válik az interfész reakcióidejének csökkenése.

A RenderingNG projekt keretében megvalósított technológiák teljesen megváltoztatják a kompozícióhoz való hozzáállást, és lehetővé teszik, hogy dinamikusan alkalmazzunk különböző optimalizáló technológiákat GPU-n és CPU-n belül az egyes oldalelemekhez igazítva, figyelembe véve olyan sajátosságokat, mint a felbontás és a frissítési gyakoriság, valamint a rendszer támogatása az előrehaladott grafikai API-k, mint a Vulkan, D3D12 és Metal esetében. Az optimalizációk példái között szerepel a GPU textúrakészletezésének és az egyes weboldalrészek renderelési eredményeinek aktív használata, valamint a renderelés során csak a felhasználó által látható oldalrészek figyelembe vétele (nincs értelme olyan részek renderelésének, amelyeket más tartalom takar el).

A RenderingNG fontos eleme a teljesítmény elszigetelése, amikor az oldal különböző részeit dolgozzuk fel, például a hirdetési számítással kapcsolatos műveletek, az iframe blokkokban, az animációk megjelenítése, a hang- és videolejátszás, a tartalom görgetése és a JavaScript futtatása terén.

A Chromium optimalizálásának eredményei, amelyeket a RenderingNG projekt valósított meg

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

  • A Chrome 94-ben bemutatott CompositeAfterPaint mechanizmus biztosítja a weboldal külön-külön kirajzolt részeinek kompozitálását, lehetővé téve a GPU terhelésének dinamikus skálázását. A felhasználói telemetria szerint az új kompozitálási rendszer alkalmazása 8%-kal csökkentette a görgetési késleltetést, 3%-kal növelte a felhasználói interakciók reakcióidejét, 3%-kal gyorsította a kirajzolást, 3%-kal csökkentette a GPU memóriafogyasztását és 0,5%-kal meghosszabbította az akkumulátor üzemidejét.
  • A GPU Raster — a GPU oldalán történő raszterizáláshoz szükséges mechanizmus, 2020-ban került bevezetésre minden platformra, és átlagosan 37%-kal gyorsította a MotionMark tesztelésének elvégzését, az HTML-hez kapcsolódó kategóriákban pedig 150%-kal. Idén a GPU Raster lehetővé tette a GPU által történő gyorsítást a Canvas elemek kirajzolásánál, ami 1000%-os gyorsulást eredményezett a kontúrok kirajzolásában és a MotionMark 1.2 tesztelésében 130%-os javulást hozott.
  • A LayoutNG — a weboldalak elemeinek elrendezési algoritmusainak teljes újragondolása, amely a megbízhatóság és a kiszámíthatóság növelésére irányul. A projektet idén tervezik a felhasználókhoz eljuttatni.
  • A BlinkNG — a Blink motor átalakítása és megtisztítása, amely a kirajzolási műveleteket külön végrehajtott fázisokra bontja a cache-elés hatékonyságának növelése és a késleltetett kirajzolás egyszerűsítése érdekében, figyelembe véve az objektumok láthatóságát az ablakban. A munkát idén tervezik befejezni.
  • A görgetés, animáció és képkódolás kezelőinek külön szálakba történő kiemelése. A projekt 2011 óta fejlődik, és idén elérte, hogy az animált CSS-transzformációk és SVG animációk külön szálakban fussanak.
  • A VideoNG — hatékony és megbízható motor a videók weboldalakon való lejátszásához. Idén megvalósították a védett tartalom 4K felbontásban történő megjelenítésének lehetőségét. Korábban HDR támogatást is bevezettek.
  • A Viz — külön folyamatok a raszterizálásért (OOP-R — Out-of-process Raster) és a megjelenítésért (OOP-D — Out of process display compositor), amely elválasztja a böngésző interfészének rajzolását a weboldalak tartalmának megjelenítésétől. A projekt keretében egy SkiaRenderer folyamat is fejlődik, amely különböző platformokhoz specifikus grafikus API-kat használ (Vulkan, D3D12, Metal). A változtatás lehetővé tette a grafikus illesztőprogramokkal kapcsolatos problémák miatt bekövetkező összeomlások számának 6-szoros csökkentését.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster