Resultados da otimização do Chromium, implementados pelo projeto RenderingNG

Os desenvolvedores do Chromium apresentaram os primeiros resultados do projeto RenderingNG, lançado há 8 anos, com o objetivo de realizar melhorias contínuas na performance, confiabilidade e escalabilidade do Chrome.

Por exemplo, as otimizações adicionadas na versão do Chrome 94 em comparação com o Chrome 93 possibilitaram uma redução de 8% na latência durante o processamento de páginas e um aumento de 0,5% na duração da bateria. Considerando o tamanho da base de usuários do Chrome, esses números representam uma economia global de mais de 1400 anos de tempo de processamento por dia. Em comparação com as versões anteriores, o Chrome moderno renderiza gráficos mais de 150% mais rápido e é 6 vezes menos propenso a falhas em drivers de GPU em hardware problemático.

Entre os métodos implementados que permitem ganhos de performance, destaca-se o paralelismo das operações de rasterização de diferentes pixels no lado da GPU e uma distribuição mais ativa dos processadores entre diferentes núcleos da CPU (execução de JavaScript, processamento de rolagem de página, decodificação de vídeos e imagens, pré-renderização de conteúdo). O aumento da carga na CPU é um fator limitante durante o paralelismo ativo, refletindo-se no aumento da temperatura e no consumo de energia, por isso é importante alcançar um equilíbrio ideal entre desempenho e consumo de energia. Por exemplo, ao operar com bateria, pode-se sacrificar a velocidade de renderização, mas não se pode comprometer o processamento da rolagem em uma thread separada, pois a redução da responsividade da interface se tornará evidente para o usuário.

As tecnologias implementadas no projeto RenderingNG mudam completamente a abordagem da composição e permitem o uso adaptativo de diferentes tecnologias de otimização de computação em GPU e CPU relacionadas a partes específicas das páginas, considerando características como resolução e taxa de atualização da tela, além do suporte do sistema para APIs gráficas avançadas, como Vulkan, D3D12 e Metal. Exemplos de otimizações incluem o uso ativo de cache de texturas GPU e resultados de renderização de partes de páginas da web, bem como a consideração apenas da área da página visível ao usuário durante a renderização (não faz sentido renderizar partes da página que estão sobrepostas por outros conteúdos).

Um elemento importante do RenderingNG é a isolação de desempenho na manipulação de diferentes partes das páginas, por exemplo, para isolar cálculos relacionados à exibição de anúncios em blocos iframe, animações, reprodução de som e vídeo, rolagem de conteúdo e execução de JavaScript.

Resultados da otimização do Chromium, implementados pelo projeto RenderingNG

Técnicas de otimização implementadas:

  • No Chrome 94, foi proposto o mecanismo CompositeAfterPaint, que permite a composição de partes de páginas da web renderizadas separadamente e possibilita a escalabilidade dinâmica da carga na GPU. De acordo com dados coletados de usuários através de telemetria, a aplicação do novo sistema de composição resultou em uma redução de 8% na latência durante a rolagem, um aumento de 3% na responsividade da interação com o usuário, uma melhoria de 3% na velocidade de renderização, uma diminuição de 3% no consumo de memória da GPU e uma extensão de 0,5% na duração da bateria.
  • GPU Raster — mecanismo de rasterização no lado da GPU, foi implementado para todas as plataformas em 2020 e permitiu acelerar a execução dos testes MotionMark em média em 37%, e categorias relacionadas ao HTML em 150%. Neste ano, o GPU Raster foi complementado com a capacidade de utilizar aceleração do lado da GPU para renderizar elementos Canvas, resultando em um aumento na velocidade de renderização de contornos em 1000%, e na execução dos testes MotionMark 1.2 em 130%.
  • LayoutNG — uma reestruturação completa dos algoritmos de disposição dos elementos das páginas, com o objetivo de aumentar a confiabilidade e previsibilidade. O projeto está programado para ser disponibilizado aos usuários este ano.
  • BlinkNG — refatoração e limpeza do motor Blink com a separação das operações de renderização em fases executadas separadamente para aumentar a eficiência do cache e simplificar a renderização atrasada, considerando a visibilidade dos objetos na janela. O trabalho está previsto para ser concluído ainda este ano.
  • Separação em threads distintas para manipuladores de rolagem, animação e decodificação de imagens. O projeto está em desenvolvimento desde 2011 e, este ano, atingiu a capacidade de isolar em threads distintas animações CSS e animações SVG.
  • VideoNG — um motor eficiente e confiável para reprodução de vídeo em páginas web. Neste ano, foi implementada a capacidade de exibir conteúdo protegido com resolução 4K. Anteriormente, foi adicionada a compatibilidade com HDR.
  • Viz — processos separados para rasterização (OOP-R — Rasterização Fora do Processo) e composição de exibição (OOP-D — Compositor de Exibição Fora do Processo), que separam a renderização da interface do navegador da renderização do conteúdo das páginas. O projeto também está desenvolvendo o processo SkiaRenderer, que utiliza APIs gráficas específicas para diferentes plataformas (Vulkan, D3D12, Metal). A mudança permitiu reduzir em 6 vezes o número de falhas causadas por problemas nos drivers gráficos.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster