Resultaterne af optimeringen af Chromium, som har været implementeret af projektet RenderingNG

Udviklerne af Chromium har præsenteret de første resultater af det 8 år gamle projekt RenderingNG, hvis mål er at arbejde kontinuerligt med at forbedre ydeevne, pålidelighed og skalerbarhed af Chrome.

For eksempel har de tilføjede optimeringer i Chrome 94 sammenlignet med Chrome 93 resulteret i en 8% reduktion i forsinkelser ved behandling af sider og en 0,5% stigning i batterilevetid. I betragtning af størrelsen på Chrome-brugerbasen svarer disse resultater til en global besparelse på over 1400 års processortid hver dag. I forhold til tidligere versioner render modern Chrome grafik mere end 150% hurtigere og er 6 gange mindre tilbøjelig til at nedbrud på GPU-drivere på problematisk hardware.

Blandt de implementerede metoder, der har bidraget til performanceforbedringer, er parallelisering af rasteriseringsoperationer af forskellige pixels på GPUs side og en mere aktiv fordeling af behandlere på forskellige CPU-kerner (udførelse af JavaScript, behandling af side-scroll, dekodning af video og billeder, samt forudgående rendering af indhold). En begrænsende faktor ved aktiv parallelisering er den øgede belastning på CPU'en, hvilket resulterer i en stigning i temperatur og energiforbrug, og derfor er det vigtigt at opnå en optimal balance mellem ydeevne og energiforbrug. For eksempel, når man arbejder på batteri, kan man ofre rendering-hastigheden, men man kan ikke ofre scrollbehandlingen i en separat tråd, da en nedsat responsiveness af brugergrænsefladen vil blive bemærket af brugeren.

De teknologier, der er realiseret i projektet RenderingNG, ændrer fuldstændigt tilgangen til sammensætning og muliggør adaptiv anvendelse af forskellige optimeringsteknologier til beregninger på GPU og CPU i relation til specifikke dele af siderne, idet der tages højde for faktorer som opløsning og opdateringshastighed af skærmen, samt tilstedeværelsen af avancerede grafiske API'er i systemet som Vulkan, D3D12 og Metal. Eksempler på optimeringer inkluderer aktiv brug af GPU-teksturkassering og resultaterne af rendering af websidens dele, samt kun at tage højde for de områder af siden, der er synlige for brugeren (det giver ikke mening at udføre rendering af dele af siden, der er dækket af andet indhold).

Et vigtigt element i RenderingNG er også isoleringen af ydeevne ved behandling af forskellige dele af siderne, fx for at isolere beregninger relateret til visning af reklamer i iframe-blokke, animationer, afspilning af lyd og video, scrolling af indhold og udførelse af JavaScript.

Resultaterne af optimeringen af Chromium, som har været implementeret af projektet RenderingNG

Implementerede optimeringsteknikker:

  • I Chrome 94 blev der foreslået en mekanisme kaldet CompositeAfterPaint, der muliggør komposittering af separat renderede dele af websider og giver mulighed for dynamisk at skalere belastningen på GPU'en. I henhold til de data, der er indsamlet fra brugere gennem telemetri, har anvendelsen af det nye kompositystem resulteret i en reduktion af forsinkelsen ved scrolling med 8%, en forbedring af interaktionsresponsen med brugeren på 3%, en stigning i renderinghastigheden på 3%, en reduktion af GPU-mindskingsforbruget på 3% og en forlængelse af batterilevetiden med 0,5%.
  • GPU Raster — en rasteriseringsmekanisme på GPU-siden, blev implementeret for alle platforme i 2020, og gjorde det muligt at fremskynde beståelse af MotionMark-tests med gennemsnitligt 37%, mens kategorier relateret til HTML blev fremskyndet med 150%. I år blev GPU Raster udvidet med muligheden for at bruge GPU-acceleration til rendering af Canvas-elementer, hvilket førte til en acceleration af rendering af konturer med 1000%, og beståelse af MotionMark 1.2 med 130%.
  • LayoutNG — en fuldstændig omarbejdning af algoritmer til layout af sides elementer, der sigter mod at forbedre pålidelighed og forudsigelighed. Projektet planlægges at blive præsenteret for brugerne i år.
  • BlinkNG — refactoring and cleaning of the Blink engine with the separation of rendering operations into distinct phases to improve caching efficiency and simplify deferred rendering, considering the visibility of objects in the viewport. The work is planned to be completed this year.
  • Separation of scroll, animation, and image decoding handlers into individual threads. The project has been evolving since 2011 and this year reached the capability to offload animated CSS transformations and SVG animations into separate threads.
  • VideoNG — an efficient and reliable engine for video playback on web pages. This year, support for displaying protected content at 4K resolution was implemented. Previously, HDR support was added.
  • Viz — separate processes for rasterization (OOP-R — Out-of-process Raster) and rendering (OOP-D — Out of process display compositor), separating the rendering of the browser interface from the rendering of page content. The SkiaRenderer process is also being developed, utilizing graphics APIs specific to different platforms (Vulkan, D3D12, Metal). This change has allowed for a sixfold reduction in crashes due to issues in graphics drivers.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster