Résultats de l'optimisation de Chromium mis en œuvre par le projet RenderingNG

Les développeurs de Chromium ont résumé les premiers résultats du projet RenderingNG, lancé il y a 8 ans, visant à travailler en cours pour augmenter les performances, la fiabilité et l'extensibilité de Chrome.

Par exemple, les optimisations ajoutées dans Chrome 94 par rapport à Chrome 93 ont entraîné une réduction de 8 % de la latence de rendu des pages et une augmentation de 0.5 % de la durée de vie de la batterie. Compte tenu de la taille de la base d'utilisateurs de Chrome, cela représente une économie globale de plus de 1400 150 années de temps CPU chaque jour. Par rapport aux versions précédentes, Chrome moderne rend les graphiques plus de 6 % plus rapides et est XNUMX fois moins sensible aux pannes du pilote GPU sur du matériel problématique.

Parmi les méthodes mises en œuvre pour obtenir des gains de performances, nous avons noté la parallélisation des opérations de rastérisation des différents pixels côté GPU et une répartition plus active des processeurs sur différents cœurs CPU (exécution de JavaScript, traitement du défilement des pages, décodage des vidéos et des images, rendu proactif des contenu). Le facteur limitant de la parallélisation active est la charge croissante sur le processeur, qui se reflète dans l'augmentation des températures et de la consommation d'énergie. Il est donc important d'atteindre un équilibre optimal entre performances et consommation d'énergie. Par exemple, lorsque vous travaillez sur batterie, vous pouvez sacrifier la vitesse de rendu, mais vous ne pouvez pas sacrifier le traitement de défilement dans un thread séparé, car la diminution de la réactivité de l'interface sera perceptible par l'utilisateur.

Les technologies mises en œuvre dans le cadre du projet RenderingNG changent complètement l'approche de la composition et vous permettent d'utiliser de manière adaptative différentes technologies pour optimiser les calculs sur le GPU et le CPU par rapport à certaines parties de pages, en tenant compte de fonctionnalités telles que la résolution de l'écran et le taux de rafraîchissement. , ainsi que la présence dans le système de prise en charge d'API graphiques avancées, telles que Vulkan, D3D12 et Metal. Des exemples d'optimisations incluent l'utilisation active de la mise en cache des textures GPU et du rendu des résultats de parties de pages Web, ainsi que la prise en compte uniquement de la zone de la page visible par l'utilisateur lors du rendu (il ne sert à rien de rendre des parties du page couverte par d’autres contenus).

Un élément important de RenderingNG est également d'isoler les performances lors du traitement de différentes parties de pages, par exemple, d'isoler le calcul associé à la diffusion d'annonces dans des iframes, à l'affichage d'animations, à la lecture audio et vidéo, au défilement de contenu et à l'exécution de JavaScript.

Résultats de l'optimisation de Chromium mis en œuvre par le projet RenderingNG

Techniques d'optimisation mises en œuvre :

  • Chrome 94 propose le mécanisme CompositeAfterPaint, qui permet de composer des parties de pages Web rendues séparément et vous permet d'adapter dynamiquement la charge sur le GPU. Selon les données de télémétrie des utilisateurs, le nouveau système de composition a réduit la latence de défilement de 8 %, augmenté la réactivité de l'expérience utilisateur de 3 %, augmenté la vitesse de rendu de 3 %, réduit la consommation de mémoire GPU de 3 % et prolongé la durée de vie de la batterie de 0.5 %.
  • GPU Raster, un moteur de rastérisation côté GPU, a été introduit sur toutes les plates-formes en 2020 et a accéléré les benchmarks MotionMark de 37 % en moyenne et les benchmarks liés au HTML de 150 %. Cette année, GPU Raster a été amélioré avec la possibilité d'utiliser l'accélération côté GPU pour restituer les éléments Canvas, ce qui a permis un rendu des contours 1000 1.2 % plus rapide et des tests de référence MotionMark 130 XNUMX % plus rapides.
  • LayoutNG est une refonte complète des algorithmes de mise en page des éléments de page visant à accroître la fiabilité et la prévisibilité. Le projet devrait être présenté aux utilisateurs cette année.
  • BlinkNG - refactorisation et nettoyage du moteur Blink, divisant les opérations de rendu en phases exécutées séparément pour améliorer l'efficacité de la mise en cache et simplifier le rendu paresseux, en tenant compte de la visibilité des objets dans la fenêtre. Les travaux devraient être terminés cette année.
  • Déplacement des gestionnaires de défilement, d’animation et de décodage d’images vers des threads séparés. Le projet se développe depuis 2011 et a obtenu cette année la possibilité d'exporter des transformations CSS animées et des animations SVG vers des threads séparés.
  • VideoNG est un moteur efficace et fiable pour lire des vidéos sur des pages Web. Cette année, la possibilité d'afficher du contenu protégé en résolution 4K a été mise en œuvre. La prise en charge HDR a été précédemment ajoutée.
  • Viz - processus distincts pour la rastérisation (OOP-R - Out-of-process Raster) et le rendu (OOP-D - Out of process display compositor), séparant le rendu de l'interface du navigateur du rendu du contenu de la page. Le projet développe également le procédé SkiaRenderer, qui utilise des API graphiques spécifiques à la plateforme (Vulkan, D3D12, Metal). Le changement a permis de réduire de 6 fois le nombre de crashs dus à des problèmes de pilotes graphiques.

Source: opennet.ru

Ajouter un commentaire