Chromium-optimeringsresultater implementeret af RenderingNG-projektet

Chromium-udviklere har opsummeret de første resultater af RenderingNG-projektet, der blev lanceret for 8 år siden, rettet mod det igangværende arbejde for at øge ydeevnen, pålideligheden og udvidelsesmulighederne af Chrome.

For eksempel resulterede optimeringer tilføjet i Chrome 94 sammenlignet med Chrome 93 i en 8 % reduktion i sidegengivelsesforsinkelse og en 0.5 % stigning i batterilevetid. Baseret på størrelsen af ​​Chromes brugerbase repræsenterer dette en global besparelse på over 1400 års CPU-tid hver dag. Sammenlignet med tidligere versioner, gengiver moderne Chrome grafik mere end 150 % hurtigere og er 6 gange mindre modtagelig for GPU-drivernedbrud på problematisk hardware.

Blandt de implementerede metoder til at opnå præstationsgevinster bemærkede vi paralleliseringen af ​​rasteriseringsoperationer af forskellige pixels på GPU-siden og en mere aktiv distribution af processorer på tværs af forskellige CPU-kerner (udførelse af JavaScript, behandling af siderulning, afkodning af videoer og billeder, proaktiv gengivelse af indhold). Den begrænsende faktor for aktiv parallelisering er den stigende belastning på CPU'en, hvilket afspejles af stigende temperaturer og øget strømforbrug, så det er vigtigt at opnå en optimal balance mellem ydeevne og strømforbrug. For eksempel, når du kører på batteristrøm, kan du ofre gengivelseshastigheden, men du kan ikke ofre rullebehandling i en separat tråd, da faldet i interfacerespons vil være mærkbart for brugeren.

Teknologier implementeret inden for rammerne af RenderingNG-projektet ændrer fuldstændig tilgangen til sammensætning og giver dig mulighed for adaptivt at bruge forskellige teknologier til at optimere beregninger på GPU og CPU i forhold til individuelle dele af sider, under hensyntagen til funktioner som skærmopløsning og opdateringshastighed , samt tilstedeværelsen i systemet med understøttelse af avancerede grafik-API'er, såsom Vulkan, D3D12 og Metal. Eksempler på optimeringer omfatter aktiv brug af caching af GPU-teksturer og gengivelsesresultater af dele af websider, samt kun at tage hensyn til det område af siden, der er synligt for brugeren ved gengivelse (det nytter ikke noget at gengive dele af siden). side, der er dækket af andet indhold).

Et vigtigt element i RenderingNG er også at isolere ydeevne ved behandling af forskellige dele af sider, for eksempel at isolere den beregning, der er forbundet med at vise annoncer i iframes, vise animationer, afspille lyd og video, rulle indhold og udføre JavaScript.

Chromium-optimeringsresultater implementeret af RenderingNG-projektet

Implementerede optimeringsteknikker:

  • Chrome 94 tilbyder CompositeAfterPaint-mekanismen, som giver sammensætning af separat gengivet dele af websider og giver dig mulighed for dynamisk at skalere belastningen på GPU'en. Ifølge brugertelemetridata reducerede det nye sammensætningssystem rulleforsinkelse med 8 %, øgede brugeroplevelsens reaktionsevne med 3 %, øgede gengivelseshastigheden med 3 %, reducerede GPU-hukommelsesforbruget med 3 % og forlængede batterilevetiden med 0.5 %.
  • GPU Raster, en GPU-side rasteriseringsmotor, blev introduceret på tværs af alle platforme i 2020 og har accelereret MotionMark benchmarks med i gennemsnit 37 % og HTML-relaterede benchmarks med 150 %. I år blev GPU Raster forbedret med muligheden for at bruge GPU-sideacceleration til at gengive Canvas-elementer, hvilket resulterede i 1000 % hurtigere konturgengivelse og 1.2 % hurtigere MotionMark 130 benchmarks.
  • LayoutNG er et komplet redesign af sideelementlayoutalgoritmer, der sigter mod at øge pålideligheden og forudsigeligheden. Projektet er planlagt til at blive bragt til brugerne i år.
  • BlinkNG - refactoring og rengøring af Blink-motoren, opdeling af gengivelsesoperationer i separat udførte faser for at forbedre caching-effektiviteten og forenkle doven gengivelse under hensyntagen til synligheden af ​​objekter i vinduet. Arbejdet skal efter planen afsluttes i år.
  • Flytning af rulle-, animations- og billedafkodningshandlere til separate tråde. Projektet har været under udvikling siden 2011 og i år opnåede det evnen til at eksportere animerede CSS-transformationer og SVG-animationer til separate tråde.
  • VideoNG er en effektiv og pålidelig motor til at afspille video på websider. I år er muligheden for at vise beskyttet indhold i 4K-opløsning implementeret. HDR-understøttelse blev tidligere tilføjet.
  • Viz - separate processer til rasterisering (OOP-R - Out-of-proces Raster) og rendering (OOP-D - Out of process display compositor), der adskiller gengivelsen af ​​browsergrænsefladen fra gengivelsen af ​​sideindhold. Projektet udvikler også SkiaRenderer-processen, som bruger platformspecifikke grafiske API'er (Vulkan, D3D12, Metal). Ændringen gjorde det muligt at reducere antallet af nedbrud på grund af problemer i grafikdrivere med 6 gange.

Kilde: opennet.ru

Tilføj en kommentar