Resultados de optimización de cromo implementados por el proyecto RenderingNG

Los desarrolladores de Chromium han resumido los primeros resultados del proyecto RenderingNG, lanzado hace 8 años, cuyo objetivo es el trabajo continuo para aumentar el rendimiento, la confiabilidad y la extensibilidad de Chrome.

Por ejemplo, las optimizaciones agregadas en Chrome 94 en comparación con Chrome 93 dieron como resultado una reducción del 8 % en la latencia de representación de la página y un aumento del 0.5 % en la duración de la batería. Según el tamaño de la base de usuarios de Chrome, esto representa un ahorro global de más de 1400 años de tiempo de CPU cada día. En comparación con las versiones anteriores, Chrome moderno reproduce gráficos más de un 150% más rápido y es 6 veces menos susceptible a fallas del controlador de GPU en hardware problemático.

Entre los métodos implementados para lograr mejoras de rendimiento, destacamos la paralelización de las operaciones de rasterización de diferentes píxeles en el lado de la GPU y una distribución más activa de los procesadores entre los diferentes núcleos de la CPU (ejecución de JavaScript, procesamiento de desplazamiento de páginas, decodificación de vídeos e imágenes, renderizado proactivo de contenido). El factor limitante para la paralelización activa es la creciente carga en la CPU, que se refleja en el aumento de las temperaturas y el aumento del consumo de energía, por lo que es importante lograr un equilibrio óptimo entre rendimiento y consumo de energía. Por ejemplo, cuando funciona con batería, puede sacrificar la velocidad de renderizado, pero no puede sacrificar el procesamiento de desplazamiento en un hilo separado, ya que el usuario notará la disminución en la capacidad de respuesta de la interfaz.

Las tecnologías implementadas en el marco del proyecto RenderingNG cambian por completo el enfoque de la composición y permiten utilizar de forma adaptativa diferentes tecnologías para optimizar los cálculos en la GPU y la CPU en relación con partes individuales de las páginas, teniendo en cuenta características como la resolución de la pantalla y la frecuencia de actualización. , así como la presencia en el sistema de soporte para API de gráficos avanzados, como Vulkan, D3D12 y Metal. Ejemplos de optimizaciones incluyen el uso activo del almacenamiento en caché de texturas de GPU y la representación de resultados de partes de páginas web, así como tener en cuenta solo el área de la página visible para el usuario al renderizar (no tiene sentido renderizar partes de la página que están cubiertas por otro contenido).

Un elemento importante de RenderingNG también es aislar el rendimiento al procesar diferentes partes de las páginas, por ejemplo, para aislar el cálculo asociado con la publicación de anuncios en iframes, la visualización de animaciones, la reproducción de audio y video, el desplazamiento de contenido y la ejecución de JavaScript.

Resultados de optimización de cromo implementados por el proyecto RenderingNG

Técnicas de optimización implementadas:

  • Chrome 94 ofrece el mecanismo CompositeAfterPaint, que proporciona composición de partes de páginas web renderizadas por separado y le permite escalar dinámicamente la carga en la GPU. Según los datos de telemetría del usuario, el nuevo sistema de composición redujo la latencia de desplazamiento en un 8 %, aumentó la capacidad de respuesta de la experiencia del usuario en un 3 %, aumentó la velocidad de renderizado en un 3 %, redujo el consumo de memoria de la GPU en un 3 % y extendió la duración de la batería en un 0.5 %.
  • GPU Raster, un motor de rasterización del lado de la GPU, se introdujo en todas las plataformas en 2020 y ha acelerado los puntos de referencia de MotionMark en un promedio del 37 % y los puntos de referencia relacionados con HTML en un 150 %. Este año, GPU Raster se mejoró con la capacidad de utilizar la aceleración del lado de la GPU para renderizar elementos de Canvas, lo que resultó en una renderización de contornos 1000 % más rápida y pruebas comparativas de MotionMark 1.2 un 130 % más rápidas.
  • LayoutNG es un rediseño completo de los algoritmos de diseño de elementos de página destinado a aumentar la confiabilidad y la previsibilidad. Está previsto que el proyecto llegue a los usuarios este año.
  • BlinkNG: refactorización y limpieza del motor Blink, dividiendo las operaciones de renderizado en fases ejecutadas por separado para mejorar la eficiencia del almacenamiento en caché y simplificar el renderizado diferido, teniendo en cuenta la visibilidad de los objetos en la ventana. Está previsto que la obra concluya este año.
  • Mover controladores de desplazamiento, animación y decodificación de imágenes a hilos separados. El proyecto se viene desarrollando desde 2011 y este año logró la capacidad de exportar transformaciones CSS animadas y animaciones SVG a hilos separados.
  • VideoNG es un motor eficiente y confiable para reproducir videos en páginas web. Este año se implementó la posibilidad de mostrar contenido protegido en resolución 4K. Anteriormente se agregó compatibilidad con HDR.
  • Viz: procesos separados para rasterización (OOP-R - Ráster fuera de proceso) y renderizado (OOP-D - Compositor de visualización fuera de proceso), separando el renderizado de la interfaz del navegador del renderizado del contenido de la página. El proyecto también está desarrollando el proceso SkiaRenderer, que utiliza API de gráficos específicas de la plataforma (Vulkan, D3D12, Metal). El cambio permitió reducir 6 veces el número de fallos debidos a problemas en los controladores de gráficos.

Fuente: opennet.ru

Añadir un comentario