Risultati dell'ottimizzazione di Chromium realizzati dal progetto RenderingNG

Gli sviluppatori di Chromium hanno presentato i primi risultati del progetto RenderingNG, avviato 8 anni fa, volto a migliorare continuamente le prestazioni, l'affidabilità e l'espandibilità di Chrome.

Ad esempio, le ottimizzazioni introdotte nella versione Chrome 94 rispetto a Chrome 93 hanno consentito di ridurre le latenze nel caricamento delle pagine dell'8% e di aumentare del 0,5% la durata della batteria. Considerando le dimensioni della base utenti di Chrome, questi risultati si traducono in un risparmio globale di oltre 1400 anni di tempo di elaborazione ogni giorno. Rispetto alle versioni degli anni passati, il Chrome moderno disegna la grafica più di 150% più rapidamente ed è 6 volte meno soggetto a crash dei driver GPU su hardware problematico.

Tra i metodi implementati per aumentare le prestazioni, si segnala la parallelizzazione delle operazioni di rasterizzazione dei diversi pixel sul lato GPU e una suddivisione più attiva dei processori su diversi core della CPU (esecuzione di JavaScript, gestione dello scrolling della pagina, decodifica di video e immagini, pre-rendering del contenuto). Un fattore limitante della parallelizzazione è l'aumento del carico sulla CPU, che si traduce in un innalzamento della temperatura e in un maggiore consumo energetico, pertanto è importante raggiungere un equilibrio ottimale tra prestazioni e consumo energetico. Ad esempio, durante l'uso della batteria, si può sacrificare la velocità di rendering, ma non si può compromettere la gestione dello scrolling in un thread separato, poiché la diminuzione della reattività dell'interfaccia diventa evidente per l'utente.

Le tecnologie implementate nel progetto RenderingNG rivoluzionano l'approccio al compositing, consentendo di utilizzare in modo adattivo diverse tecnologie di ottimizzazione per i calcoli su GPU e CPU in relazione a specifiche parti delle pagine. Questo tiene conto di aspetti quali la risoluzione e la frequenza di aggiornamento dello schermo, nonché della presenza nel sistema di supporto per avanzate API grafiche come Vulkan, D3D12 e Metal. Tra gli esempi di ottimizzazioni si evidenziano l'uso attivo della memorizzazione nella cache delle texture GPU e dei risultati di rendering delle parti delle pagine web, oltre al rendering limitato solo alle aree visibili all'utente (non ha senso eseguire il rendering di parti della pagina coperte da altri contenuti).

Un elemento fondamentale di RenderingNG è l'isolamento delle prestazioni durante l'elaborazione di diverse parti delle pagine, ad esempio, per isolare i calcoli legati alla visualizzazione di pubblicità in blocchi iframe, visualizzazione di animazioni, riproduzione di audio e video, scorrimento dei contenuti e esecuzione di JavaScript.

Risultati dell'ottimizzazione di Chromium realizzati dal progetto RenderingNG

Tecniche di ottimizzazione implementate:

  • In Chrome 94, the CompositeAfterPaint mechanism was introduced, which provides compositing for separately rendered parts of web pages and allows for dynamic scaling of GPU load. According to user data collected through telemetry, the new compositing system has reduced scrolling latencies by 8%, improved user interaction responsiveness by 3%, increased rendering speed by 3%, reduced GPU memory consumption by 3%, and extended battery life by 0.5%.
  • GPU Raster is a GPU-side rasterization mechanism that was implemented for all platforms in 2020, allowing for an average speedup of 37% in MotionMark tests, and 150% in categories related to HTML. This year, GPU Raster was enhanced with the capability of utilizing GPU acceleration for rendering Canvas elements, resulting in a 1000% speedup in contour rendering and a 130% improvement in MotionMark 1.2 test performance.
  • LayoutNG is a complete overhaul of the algorithms for laying out page elements, aimed at increasing reliability and predictability. The project is expected to reach users this year.
  • BlinkNG — refactoring and cleaning of the Blink engine by separating rendering operations into separately executed phases to enhance caching efficiency and simplify deferred rendering with object visibility in the viewport. The work is planned to be completed this year.
  • Separation into distinct threads for scroll handling, animation, and image decoding. The project has been evolving since 2011 and this year achieved the ability 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, it has been implemented to display protected content with 4K resolution. Earlier, 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 browser interface rendering from page content rendering. The SkiaRenderer process is also being developed, utilizing platform-specific graphics APIs (Vulkan, D3D12, Metal). This change has allowed for a sixfold reduction in crashes due to graphics driver issues.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster