Kromoptimeringsresultat implementerade av RenderingNG-projektet

Chromium-utvecklare har sammanfattat de första resultaten av RenderingNG-projektet, som lanserades för 8 år sedan, som syftar till pågående arbete för att öka prestandan, tillförlitligheten och utbyggbarheten för Chrome.

Till exempel resulterade optimeringar som lades till i Chrome 94 jämfört med Chrome 93 i en 8 % minskning av sidrenderingsfördröjningen och en 0.5 % ökning av batteritiden. Baserat på storleken på Chromes användarbas, innebär detta en global besparing på över 1400 150 år av CPU-tid varje dag. Jämfört med tidigare versioner, renderar modern Chrome grafik mer än 6 % snabbare och är XNUMX gånger mindre känsligt för GPU-drivrutinskrascher på problematisk hårdvara.

Bland de implementerade metoderna för att uppnå prestandavinster noterade vi parallelliseringen av rasteriseringsoperationer av olika pixlar på GPU-sidan och en mer aktiv distribution av processorer över olika CPU-kärnor (exekvera JavaScript, bearbeta sidrullning, avkoda videor och bilder, proaktiv rendering av innehåll). Den begränsande faktorn för aktiv parallellisering är den ökande belastningen på CPU:n, vilket återspeglas av stigande temperaturer och ökad strömförbrukning, så det är viktigt att uppnå en optimal balans mellan prestanda och strömförbrukning. Till exempel, när du kör på batteri kan du offra renderingshastigheten, men du kan inte offra rullningsbearbetning i en separat tråd, eftersom minskningen i gränssnittsrespons kommer att märkas för användaren.

Tekniker implementerade inom ramen för RenderingNG-projektet förändrar helt tillvägagångssättet för kompositering och låter dig adaptivt använda olika tekniker för att optimera beräkningar på GPU och CPU i förhållande till enskilda delar av sidor, med hänsyn till funktioner som skärmupplösning och uppdateringsfrekvens , såväl som närvaron i systemet för stöd för avancerade grafik-API:er, såsom Vulkan, D3D12 och Metal. Exempel på optimeringar inkluderar aktiv användning av cachelagrade GPU-texturer och renderingsresultat av delar av webbsidor, samt att endast ta hänsyn till det område av sidan som är synligt för användaren vid rendering (det är ingen idé att rendera delar av sida som täcks av annat innehåll).

En viktig del av RenderingNG är också att isolera prestanda vid bearbetning av olika delar av sidor, till exempel för att isolera beräkningen förknippad med att visa annonser i iframes, visa animationer, spela upp ljud och video, rulla innehåll och köra JavaScript.

Kromoptimeringsresultat implementerade av RenderingNG-projektet

Implementerade optimeringstekniker:

  • Chrome 94 erbjuder CompositeAfterPaint-mekanismen, som ger sammansättning av separat renderade delar av webbsidor och låter dig skala belastningen på GPU:n dynamiskt. Enligt användartelemetridata minskade det nya sammansättningssystemet rullningsfördröjningen med 8 %, ökade användarupplevelsens respons med 3 %, ökade renderingshastigheten med 3 %, minskade GPU-minnesförbrukningen med 3 % och förlängde batteritiden med 0.5 %.
  • GPU Raster, en rastreringsmotor på GPU-sidan, introducerades på alla plattformar 2020 och har accelererat MotionMark-riktmärken med i genomsnitt 37 % och HTML-relaterade benchmarks med 150 %. I år förbättrades GPU Raster med möjligheten att använda GPU-sideacceleration för att rendera Canvas-element, vilket resulterade i 1000 % snabbare konturrendering och 1.2 % snabbare MotionMark 130-riktmärken.
  • LayoutNG är en komplett omdesign av layoutalgoritmer för sidelement som syftar till att öka tillförlitligheten och förutsägbarheten. Projektet planeras att tas ut till användarna i år.
  • BlinkNG - omstrukturering och rengöring av Blink-motorn, uppdelning av renderingsoperationer i separat körda faser för att förbättra cachningseffektiviteten och förenkla lat rendering, med hänsyn till synligheten av objekt i fönstret. Arbetet är planerat att slutföras i år.
  • Flytta rullnings-, animations- och bildavkodningshanterare till separata trådar. Projektet har utvecklats sedan 2011 och i år uppnådde det möjligheten att exportera animerade CSS-transformationer och SVG-animationer till separata trådar.
  • VideoNG är en effektiv och pålitlig motor för att spela upp video på webbsidor. I år har möjligheten att visa skyddat innehåll i 4K-upplösning implementerats. HDR-stöd har tidigare lagts till.
  • Viz - separata processer för rasterisering (OOP-R - Out-of-process Raster) och rendering (OOP-D - Out of process display compositor), som skiljer renderingen av webbläsargränssnittet från renderingen av sidinnehåll. Projektet utvecklar också SkiaRenderer-processen, som använder plattformsspecifika grafiska API:er (Vulkan, D3D12, Metal). Förändringen gjorde det möjligt att minska antalet krascher på grund av problem i grafikdrivrutiner med 6 gånger.

Källa: opennet.ru

Lägg en kommentar