Desarrolladores de Chromium dieron a conocer los resultados de la optimización del proyecto RenderingNG
Los desarrolladores de Chromium dieron a conocer hace poco los primeros resultados del proyecto RenderingNG (lanzado hace 8 años) que está destinado a realizar un trabajo continuo para aumentar el rendimiento, la fiabilidad y la extensibilidad de Chrome.
Las tecnologías implementadas dentro del proyecto RenderingNG cambian por completo el enfoque de la composición y permiten el uso adaptativo de 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 y la frecuencia de actualización de la pantalla, así como la presencia de soporte para API de gráficos avanzados en el sistema, como Vulkan, D3D12 y Metal.
Entre los métodos implementados que permiten lograr ganancias de rendimiento, la paralelización de las operaciones de rasterización de diferentes píxeles en el lado de la GPU y una separación más activa de los manejadores en diferentes núcleos de CPU (ejecución de JavaScript, procesamiento de desplazamiento de página, decodificación de video e imágenes, renderización proactiva de contenido) se anotan.
El factor limitante para la paralelización activa es el aumento de carga en la CPU, que se refleja en el aumento de la temperatura y el aumento del consumo de energía, por lo que es importante lograr un equilibrio óptimo entre el rendimiento y el 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 la disminución en la capacidad de respuesta de la interfaz será notoria para el usuario.
Por ejemplo, las optimizaciones agregadas en el lanzamiento de Chrome 94 sobre Chrome 93 dieron como resultado una mejora del 8% en la latencia 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, estas cifras se traducen globalmente en ahorros de más de 1.400 años de tiempo de CPU todos los días. En comparación con las versiones de años anteriores, Chrome moderno procesa los gráficos más rápido en más del 150% y es 6 veces menos propenso a fallas en los controladores de la GPU en el hardware con problemas.
Como ejemplos de optimizaciones, se menciona el uso activo del almacenamiento en caché de texturas de GPU y los resultados de renderizar partes de páginas web, así como tener en cuenta al renderizar solo el área de la página visible para el usuario (no tiene sentido renderizar partes de la página que están cubiertas por otro contenido).
Un elemento importante de RenderingNG también es el aislamiento del rendimiento al procesar diferentes partes de las páginas, por ejemplo, para aislar los cálculos asociados con la visualización de anuncios en iframes, la representación de animaciones, la reproducción de audio y video, el desplazamiento de contenido y la ejecución de JavaScript.
De las técnicas de optimización implementadas, se mencionan las siguientes:
- Chrome 94 presenta el motor CompositeAfterPaint, que compone porciones renderizadas por separado de páginas web y escala dinámicamente la carga de la GPU. De acuerdo con los datos recibidos del usuario resultantes de la recopilación de telemetría, la aplicación de un nuevo sistema de composición es posible reducir el retraso al desplazarse al 8%, aumentar la capacidad de respuesta de la interacción del usuario al 3%, aumentar la velocidad de renderización un 3% y Disminuye el consumo de memoria de la GPU en un 3% y extiende la vida útil de la batería en un 0,5%.
- GPU Raster: mecanismo de rasterización en el costado de la GPU, se incorporó en todas las plataformas en 2020 y permitió acelerar el paso de la prueba MotionMark en un promedio del 37%, y las categorías asociadas con HTML, en un 150%.
- LayoutNG: es una revisión completa de los algoritmos de diseño de elementos de página destinados a mejorar 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 separadas para mejorar la eficiencia del almacenamiento en caché y simplificar el renderizado diferido, teniendo en cuenta la visibilidad de los objetos en la ventana.
- Transferencia de controladores de desplazamiento, animación y decodificación de imágenes a hilos separados. El proyecto se ha estado desarrollando desde 2011, y este año ha alcanzado la posibilidad de mover transformaciones CSS animadas y animaciones SVG en flujos separados.
- VideoNG: es un motor eficiente y confiable para reproducir videos en páginas web. Este año, se implementó la capacidad de mostrar contenido protegido en resolución 4K. La compatibilidad con HDR se agregó anteriormente.
- Visualización: procesos separados para rasterización y renderizado, separando la renderización de la interfaz del navegador de la renderización del contenido de las páginas.
Fuente: https://blog.chromium.org