Optimalisatie resultaten van Chromium, uitgevoerd door het RenderingNG-project

De ontwikkelaars van Chromium hebben de eerste resultaten gepresenteerd van het in 2015 begonnen project RenderingNG, dat is gericht op constante verbetering van de prestaties, betrouwbaarheid en uitbreidbaarheid van Chrome.

Bijvoorbeeld, de optimalisaties die zijn toegevoegd in Chrome 94 vergeleken met Chrome 93 hebben geleid tot een vermindering van de laadtijd met 8% en een toename van de batterijduur met 0,5%. Gezien de grootte van de Chrome-gebruikersbasis, levert dit wereldwijd een besparing op van meer dan 1400 jaar processor tijd per dag. In vergelijking met eerdere versies rendert de moderne Chrome meer dan 150% sneller en crasht hij 6 keer minder in GPU-drivers op problematische hardware.

Onder de toegepaste methoden die prestatieverbeteringen mogelijk maken, valt het paralleliseren van rasterisatie van verschillende pixels aan de GPU-kant en een actiever verspreiden van taken over verschillende CPU-kernen (zoals het uitvoeren van JavaScript, het verwerken van de paginascrolling, en het decoderen van video en afbeeldingen, evenals vooruitlopende content-rendering). Een beperkende factor bij actieve parallelisering is de toenemende belasting van de CPU, wat leidt tot hogere temperaturen en verhoogd energieverbruik. Het is daarom belangrijk om een ​​optimale balans te vinden tussen prestaties en energieverbruik. Bijvoorbeeld, bij het werken op batterij kan men de snelheid van rendering opofferen, maar men kan de paginascrolling in een aparte thread niet opofferen, aangezien de vermindering van de interface-responsiviteit merkbaar zal zijn voor de gebruiker.

De technologieƫn die zijn gerealiseerd binnen het project RenderingNG veranderen volledig de benadering van compositing en stellen ons in staat om adaptief verschillende optimalisatietechnologieƫn voor GPU- en CPU-berekeningen te gebruiken, afhankelijk van afzonderlijke delen van pagina's, rekening houdend met factoren zoals resolutie en verversingssnelheid van het scherm, evenals de aanwezigheid van geavanceerde grafische API-ondersteuning, zoals Vulkan, D3D12 en Metal. Voorbeelden van optimalisaties omvatten het actieve gebruik van GPU-textuurcaching en het opslaan van de renderresultaten van delen van webpagina's, evenals het renderen van alleen het gedeelte van de pagina dat zichtbaar is voor de gebruiker (het heeft geen zin om delen van de pagina te renderen die door andere inhoud worden bedekt).

Een belangrijk element van RenderingNG is ook de isolatie van prestaties bij de verwerking van verschillende delen van pagina's, bijvoorbeeld voor het isoleren van berekeningen die verband houden met de weergave van advertenties in iframe-blokken, het tonen van animaties, het afspelen van geluid en video, het scrollen van inhoud en het uitvoeren van JavaScript.

Optimalisatie resultaten van Chromium, uitgevoerd door het RenderingNG-project

GeĆÆmplementeerde optimalisatietechnieken:

  • In Chrome 94 is een mechanisme CompositeAfterPaint voorgesteld, dat compositing van afzonderlijk gerenderde delen van webpagina's mogelijk maakt en dynamisch de belasting op de GPU kan schalen. Volgens gegevens die van gebruikers zijn verzameld via telemetry, heeft het gebruik van het nieuwe compositiesysteem geleid tot een verlaging van vertragingen tijdens scrollen met 8%, een verhoogde responsiviteit van gebruikersinteracties met 3%, een verhoogde rendering snelheid met 3%, een vermindering van het GPU-geheugenverbruik met 3% en een verlenging van de accuduur met 0,5%.
  • GPU Raster — een rasterisatie-mechanisme aan de GPU-zijde, is in 2020 geĆÆmplementeerd voor alle platforms en heeft het doorlopen van MotionMark-tests gemiddeld met 37% versneld, en specifieke categorieĆ«n met betrekking tot HTML met 150%. Dit jaar is GPU Raster aangevuld met de mogelijkheid om GPU-versnelling te gebruiken voor het renderen van Canvas-elementen, wat heeft geleid tot een versnelde contourrendering met 1000% en een verbetering van de MotionMark 1.2-tests met 130%.
  • LayoutNG — een complete herziening van de algoritmen voor de lay-out van pagina-elementen, gericht op het verhogen van de betrouwbaarheid en voorspelbaarheid. Het project wordt dit jaar aan gebruikers gepresenteerd.
  • BlinkNG — een refactoring en opschoning van de Blink-engine met scheiding van renderoperaties in afzonderlijk uitgevoerde fasen om de caching-efficiĆ«ntie te verbeteren en uitgestelde rendering te vereenvoudigen met inachtneming van de zichtbaarheid van objecten in het venster. De werkzaamheden worden dit jaar afgerond.
  • Afzonderlijke threads voor scrollverwerkers, animaties en afbeeldingdecodering. Het project is sinds 2011 in ontwikkeling en heeft dit jaar de mogelijkheid bereikt om geanimeerde CSS-transformaties en SVG-animatie naar afzonderlijke threads te verplaatsen.
  • VideoNG — een efficiĆ«nte en betrouwbare engine voor het afspelen van video op webpagina's. Dit jaar is de mogelijkheid geĆÆmplementeerd om beveiligde inhoud in 4K-resolutie weer te geven. Eerder werd ondersteuning voor HDR toegevoegd.
  • Viz — afzonderlijke processen voor rasterisatie (OOP-R — Out-of-process Raster) en weergave (OOP-D — Out of process display compositor), die de browserinterface van de paginacontent scheiden. Het project omvat ook het SkiaRenderer-proces, dat gebruikmaakt van platform-specifieke grafische API's (Vulkan, D3D12, Metal). Deze wijziging heeft het aantal crashes door problemen met grafische stuurprogramma's met zes keer verminderd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster