Resultados de otimização do Chromium implementados pelo projeto RenderingNG

Os desenvolvedores do Chromium resumiram os primeiros resultados do projeto RenderingNG, lançado há 8 anos, que visa um trabalho contínuo para aumentar o desempenho, confiabilidade e extensibilidade do Chrome.

Por exemplo, as otimizações adicionadas no Chrome 94 em comparação com o Chrome 93 resultaram em uma redução de 8% na latência de renderização da página e em um aumento de 0.5% na vida útil da bateria. Com base no tamanho da base de usuários do Chrome, isso representa uma economia global de mais de 1400 anos de tempo de CPU 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 suscetível a falhas no driver da GPU em hardware problemático.

Entre os métodos implementados para obter ganhos de desempenho, notamos a paralelização das operações de rasterização de diferentes pixels no lado da GPU e uma distribuição mais ativa dos processadores pelos diferentes núcleos da CPU (execução de JavaScript, processamento de rolagem de páginas, decodificação de vídeos e imagens, renderização proativa de contente). O fator limitante para a paralelização ativa é o aumento da carga na CPU, que se reflete no aumento das temperaturas e no aumento do consumo de energia, por isso é importante alcançar um equilíbrio ideal entre desempenho e consumo de energia. Por exemplo, ao funcionar com bateria, você pode sacrificar a velocidade de renderização, mas não pode sacrificar o processamento de rolagem em um thread separado, pois a diminuição na capacidade de resposta da interface será perceptível para o usuário.

As tecnologias implementadas no âmbito do projeto RenderingNG mudam completamente a abordagem da composição e permitem o uso adaptativo de diferentes tecnologias para otimizar cálculos na GPU e CPU em relação a partes individuais das páginas, levando em consideração recursos como resolução da tela e taxa de atualização , bem como a presença no sistema de suporte 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 renderização de resultados de partes de páginas da web, bem como levar em consideração apenas a área da página visível para o usuário durante a renderização (não faz sentido renderizar partes do páginas que são cobertas por outro conteúdo).

Um elemento importante do RenderingNG também é isolar o desempenho ao processar diferentes partes das páginas, por exemplo, para isolar a computação associada à veiculação de anúncios em iframes, exibição de animações, reprodução de áudio e vídeo, rolagem de conteúdo e execução de JavaScript.

Resultados de otimização do Chromium implementados pelo projeto RenderingNG

Técnicas de otimização implementadas:

  • O Chrome 94 oferece o mecanismo CompositeAfterPaint, que fornece composição de partes de páginas da web renderizadas separadamente e permite dimensionar dinamicamente a carga na GPU. De acordo com dados de telemetria do usuário, o novo sistema de composição reduziu a latência de rolagem em 8%, aumentou a capacidade de resposta da experiência do usuário em 3%, aumentou a velocidade de renderização em 3%, reduziu o consumo de memória da GPU em 3% e estendeu a vida útil da bateria em 0.5%.
  • GPU Raster, um mecanismo de rasterização do lado da GPU, foi introduzido em todas as plataformas em 2020 e acelerou os benchmarks do MotionMark em uma média de 37% e os benchmarks relacionados ao HTML em 150%. Este ano, o GPU Raster foi aprimorado com a capacidade de usar a aceleração do lado da GPU para renderizar elementos do Canvas, resultando em renderização de contorno 1000% mais rápida e benchmarks MotionMark 1.2 130% mais rápidos.
  • LayoutNG é uma reformulação completa dos algoritmos de layout de elementos de página que visa aumentar a confiabilidade e previsibilidade. O projeto está previsto para ser levado aos usuários este ano.
  • BlinkNG - refatoração e limpeza do motor Blink, dividindo as operações de renderização em fases executadas separadamente para melhorar a eficiência do cache e simplificar a renderização lenta, levando em consideração a visibilidade dos objetos na janela. A obra está prevista para ser concluída ainda este ano.
  • Mover manipuladores de rolagem, animação e decodificação de imagem para threads separados. O projeto está em desenvolvimento desde 2011 e este ano alcançou a capacidade de exportar transformações CSS animadas e animações SVG para threads separados.
  • VideoNG é um mecanismo eficiente e confiável para reproduzir vídeo em páginas da web. Este ano, foi implementada a capacidade de exibir conteúdo protegido em resolução 4K. O suporte HDR foi adicionado anteriormente.
  • Viz - processos separados para rasterização (OOP-R - Out-of-process Raster) e renderização (OOP-D - Out of process display compositor), separando a renderização da interface do navegador da renderização do conteúdo da página. O projeto também está desenvolvendo o processo SkiaRenderer, que utiliza APIs gráficas específicas da plataforma (Vulkan, D3D12, Metal). A mudança permitiu reduzir em 6 vezes o número de travamentos por problemas em drivers gráficos.

Fonte: opennet.ru

Adicionar um comentário