Chromium-optimeringsresultater implementert av RenderingNG-prosjektet

Chromium-utviklere har oppsummert de første resultatene av RenderingNG-prosjektet, som ble lansert for 8 år siden, med sikte på pågående arbeid for å øke ytelsen, påliteligheten og utvidbarheten til Chrome.

Optimaliseringer lagt til i Chrome 94 sammenlignet med Chrome 93 resulterte for eksempel i en 8 % reduksjon i forsinkelsen for sidegjengivelse og en 0.5 % økning i batterilevetid. Basert på størrelsen på Chromes brukerbase, representerer dette en global besparelse på over 1400 år med CPU-tid hver dag. Sammenlignet med tidligere versjoner, gjengir moderne Chrome grafikk mer enn 150 % raskere og er 6 ganger mindre utsatt for GPU-driverkrasj på problematisk maskinvare.

Blant de implementerte metodene for å oppnå ytelsesgevinster, bemerket vi parallelliseringen av rasteriseringsoperasjoner av forskjellige piksler på GPU-siden og en mer aktiv distribusjon av prosessorer på tvers av forskjellige CPU-kjerner (utføre JavaScript, behandle siderulling, dekoding av videoer og bilder, proaktiv gjengivelse av innhold). Den begrensende faktoren for aktiv parallellisering er den økende belastningen på CPU, som gjenspeiles av stigende temperaturer og økt strømforbruk, så det er viktig å oppnå en optimal balanse mellom ytelse og strømforbruk. For eksempel, når du kjører på batteristrøm, kan du ofre gjengivelseshastighet, men du kan ikke ofre rullebehandling i en egen tråd, siden reduksjonen i grensesnittrespons vil være merkbar for brukeren.

Teknologier implementert innenfor rammen av RenderingNG-prosjektet endrer helt tilnærmingen til komposisjon og lar deg adaptivt bruke forskjellige teknologier for å optimalisere beregninger på GPU og CPU i forhold til individuelle deler av sidene, med hensyn til funksjoner som skjermoppløsning og oppdateringsfrekvens , samt tilstedeværelsen i systemet for støtte for avanserte grafikk-APIer, som Vulkan, D3D12 og Metal. Eksempler på optimaliseringer inkluderer aktiv bruk av hurtigbufring av GPU-teksturer og gjengivelsesresultater av deler av nettsider, i tillegg til å ta hensyn til bare området av siden som er synlig for brukeren ved gjengivelse (det er ingen vits i å gjengi deler av siden). side som er dekket av annet innhold).

Et viktig element i RenderingNG er også å isolere ytelsen når du behandler ulike deler av sidene, for eksempel for å isolere beregningene knyttet til visning av annonser i iframes, visning av animasjoner, avspilling av lyd og video, rulling av innhold og utføring av JavaScript.

Chromium-optimeringsresultater implementert av RenderingNG-prosjektet

Implementerte optimaliseringsteknikker:

  • Chrome 94 tilbyr CompositeAfterPaint-mekanismen, som gir komposisjon av separat gjengitte deler av nettsider og lar deg dynamisk skalere belastningen på GPU. I følge brukertelemetridata reduserte det nye sammensatte systemet rulleforsinkelsen med 8 %, økte brukeropplevelsens respons med 3 %, økte gjengivelseshastigheten med 3 %, reduserte GPU-minneforbruket med 3 % og forlenget batterilevetiden med 0.5 %.
  • GPU Raster, en GPU-side rasteriseringsmotor, ble introdusert på tvers av alle plattformer i 2020 og har akselerert MotionMark benchmarks med gjennomsnittlig 37 % og HTML-relaterte benchmarks med 150 %. I år ble GPU Raster forbedret med muligheten til å bruke GPU-sideakselerasjon for å gjengi Canvas-elementer, noe som resulterte i 1000 % raskere konturgjengivelse og 1.2 % raskere MotionMark 130-referanser.
  • LayoutNG er en fullstendig redesign av sideelementlayoutalgoritmer rettet mot å øke påliteligheten og forutsigbarheten. Prosjektet er planlagt brakt til brukerne i år.
  • BlinkNG - refactoring og rengjøring av Blink-motoren, deler gjengivelsesoperasjoner inn i separat utførte faser for å forbedre caching-effektiviteten og forenkle lat gjengivelse, tar hensyn til synligheten til objekter i vinduet. Arbeidet skal etter planen være ferdig i år.
  • Flytting av rulle-, animasjons- og bildedekodingshåndterere til separate tråder. Prosjektet har vært under utvikling siden 2011, og i år oppnådde det muligheten til å eksportere animerte CSS-transformasjoner og SVG-animasjoner til separate tråder.
  • VideoNG er en effektiv og pålitelig motor for å spille av video på nettsider. I år er muligheten til å vise beskyttet innhold i 4K-oppløsning implementert. HDR-støtte ble tidligere lagt til.
  • Viz - separate prosesser for rasterisering (OOP-R - Out-of-process Raster) og gjengivelse (OOP-D - Out of process display compositor), som skiller gjengivelsen av nettlesergrensesnittet fra gjengivelsen av sideinnhold. Prosjektet utvikler også SkiaRenderer-prosessen, som bruker plattformspesifikke grafikk-APIer (Vulkan, D3D12, Metal). Endringen gjorde det mulig å redusere antall krasj på grunn av problemer i grafikkdrivere med 6 ganger.

Kilde: opennet.ru

Legg til en kommentar