Dev
LIMPEZA DO CLIENTE: lançamos a atualização do CEF

Lançamos nossa nova versão do CEF e os resultados são promissores!

DevJogadoresRiot Am1t, Riot Id, Riot Aotus, Riot Failed Execution
  • Copiado para a área de transferência
Fizemos a promessa de falar com mais frequência sobre nosso trabalho contínuo para melhorar o desempenho e a confiabilidade do cliente do LoL. Esse post é o nono dessa série. (Confiram também o primeiro, o segundo, o terceiro, o quarto, o quinto, o sexto, o sétimo, e o oitavo !)

Resumindo: na 11.17, atualizamos o CEF (Chromium Embedded Framework), o navegador que atua no coração do cliente do LoL, e notamos uma melhoria considerável no uso de memória, além de uma redução no uso de CPU e no número de travamentos. Com isso, podemos focar no planejamento de atualizações mais frequentes para melhorar o desempenho e a confiabilidade do cliente!

Atualizando o Chromium Embedded Framework (CEF) (CEF)

É um momento marcante para a Campanha de Limpeza do Cliente! No começo do ano, determinamos que atualizar o Chromium Embedded Framework (CEF)—o navegador que atua no coração da estrutura do cliente do LoL— para a versão 91 seria a mudança mais impactante que poderíamos fazer para melhorar o cliente. (Para contextualizar, a última atualização foi em novembro de 2019, para a versão 74...) A atualização do CEF traz dois grandes benefícios. Primeiro, ela melhora imediatamente o uso de memória e CPU, além de aumentar a estabilidade. Segundo, ela permite que outras melhorias sejam implementadas, já que acompanha novas funcionalidades e ferramentas (falaremos mais sobre isso logo, logo). Por esses motivos, atualizar o CEF foi nossa maior prioridade durante 2021, e estamos muito contentes em anunciar que implementamos a versão 91 durante a Atualização 11.17 com ótimos resultados até então!

Menos travamentos do cliente

A atualização do CEF nos ajudou a resolver muitos dos travamentos do cliente, mas nosso objetivo continua sendo resolver aqueles mais impactam as pessoas que jogam. Estamos contentes com uma queda de 61% nos travamentos desde a 11.16 e uma redução de 38% na taxa média em 2021 até agora, mas planejamos continuar abaixando esses valores. Aliás, os dados iniciais da Atualização 11.18 já estão mostrando outra grande redução nos travamentos! Isso é uma ótima notícia, já que existe muitíssimas inicializações de cliente em qualquer atualização (que pode ultrapassar até 240 milhões nas regiões da Riot!)

Atualização

Número de travamentos

11.14

2.349.865

11.15*

3.686.442

11.16

3.161.145

11.17

1.214.155

(* Como a 11.15 teve um ciclo maior, a contagem acabou sendo mais alta.)

O principal motivo por trás dos travamentos que persistem parece ser a falta de memória das máquinas. Depois de mais análises, notamos que quase metade desses travamentos por falta de memória aconteceram em computadores antigos utilizando Windows 7. Apesar de algumas pessoas no mundo realmente jogarem LoL nesse sistema operacional (que é nosso requerimento mínimo atual), continuaremos investigando quantos desses casos são bots, cópias piratas/desatualizadas do Windows ou outras circunstâncias que não representam a comunidade regular que está jogando LoL de maneira legítima.

Redução no uso de memória

Notamos uma redução considerável no uso de memória da parte frontal do cliente durante uma sessão única. Essa parte frontal se refere aos elementos visuais e interativos, como botões, campos de textos e praticamente tudo que visível e pode ser clicado. Aqui estão as informações detalhadas das regiões da Riot:

Versão do CEF

20º percentual das pessoas (máquinas mais rápidas)

50º percentual das pessoas (máquinas com especificações médias)

90º percentual das pessoas (máquinas com especificações baixas)

74 (antes da Atualização 11.17)

359 MB

597 MB

1016 MB

91 (Atualização 11.17+)

74 MB

275 MB

598 MB

Melhoria

285 MB (79%)

322 MB (54%)

418 MB (41%)

Nesse contexto, a memória é como se fosse a atenção do computador — quanto mais memória livre, mais espaço a máquina tem para realizar várias tarefas ou se concentrar no que já está sendo feito. Isso significa menos travamentos no cliente e mais memória disponível, assim é possível assistir às transmissões do CBLoL e entrar nas filas ranqueadas ao mesmo tempo!

Redução no uso da CPU

Também vimos uma redução na quantidade de utilização de CPU consumida pelo cliente. Aqui estão as informações detalhadas das regiões da Riot:

Versão do CEF

20º percentual das pessoas (máquinas mais rápidas)

50º percentual das pessoas (máquinas com especificações médias)

90º percentual das pessoas (máquinas com especificações baixas)

74 (antes da Atualização 11.17)

13%

34%

83%

91 (Atualização 11.17+)

10%

22%

72%

Queda Percentual

23%

35%

15%

Isso significa que o computador não precisa forçar tanto para executar o cliente, resultando em processadores mais frios e menos consumo de energia. Vídeos, por exemplo, exigem muito da CPU, mas o cliente não deve fazer isso. Em outras palavras, mais Netflix e Pentakill.

O que uma versão mais recente do CEF nos permite fazer?

Aplicativos com base em Chromium

Esses aplicativos são os programas e ferramentas que mais crescem no desenvolvimento de software nos dias de hoje. Vocês provavelmente estão usando um app que usa Chromium para ler este artigo, para conversar com o pessoal no Discord ou ouvir aquela mesma playlist de 10 músicas pela centésima vez. Cada um desses aplicativos usa o Chromium, assim como o cliente. Com a atualização do Chromium Embedded Framework do cliente, temos acesso às mais novas ferramentas e melhorias do Chromium.

WebAssembly

Agora, vamos falar sobre WebAssembly, um formato de código que pode executar instruções complexas muito mais rapidamente que o JavaScript base, que ainda é usado por muitos aplicativos no cliente (lembram do "aplicativos do Ember" dos artigos anteriores?). O CEF praticamente emula, dentro do cliente, um "minicomputador" especializado que usa o WebAssembly para processar códigos de maneira mais eficiente. Como o WebAssembly suporta uma grande variedade de linguagens de programação, ele facilita a reutilização de códigos já existentes, além de ter um desempenho melhor por executar os processos nesse "minicomputador" especializado (em vez de iniciá-los em um aplicativo diferente). O WebAssembly está lentamente sendo adotado na internet e o suporte no Chromium melhora a cada lançamento. Ter acesso ao WebAssembly tornará o cliente mais rápido e poderemos fazer coisas que antes eram impossíveis.

Web Workers

Vamos falar sobre os Web Workers. Ao longo dos anos, os aplicativos Chromium são executados de maneira sincronizadas, ou seja, processam uma linha de código por vez. É como ter uma única pessoa trabalhando em toda linha de produção, mas com o Web Worker*S*, podemos aumentar a equipe para que várias linhas de código sejam executadas simultaneamente. Um Web Worker de chat pode cuidar de tudo relacionado às conversas, enquanto o cliente principal pode focar em iniciar as partidas. Então, se você tem um amigo que não para de te mandar mensagens sobre a nova itemização que ele encontrou pro Teemo, a conversa não deve mais deixar as outras partes do cliente lentas. Os Web Workers também deixarão o cliente mais rápido.

Mesmo sem novas linhas de códigos para aproveitar essas novas funcionalidades, simplesmente atualizar o CEF já deixou o cliente mais rápido, graças ao melhor manuseio do JavaScript que já foi escrito. Conforme melhoraremos outros aspectos do cliente, podemos focar em métodos que funcionam melhor com as melhorias de desempenho nativas.

Outras atualizações

Também melhoramos a experiência de fim de partida desde nossa última publicação. Primeiramente, adicionamos alguns códigos para coletar dados e investigar exatamente o que faz a tela "Espera por estatísticas" demorar, algo que ainda acontece com várias pessoas. Isso nos ajudou a identificar e reduzir o tempo de atraso, já que essa tela não deve ser mais longa do que já é atualmente. Além disso, implementamos uma correção na 11.17 que deve reduzir as chances de a página travar completamente. Correções adicionais foram aplicadas ao mecanismo de jogo para acelerar a tela de fim de jogo ainda mais na 11.19. E por último, mas não menos importante, estamos contentes em integrar os Desafios e dando o nosso melhor para garantir que essa nova funcionalidade não prejudique o desempenho e a confiabilidade do cliente.

O que vem por aí

Nossa atualização do CEF se mostrou extremamente importante para melhorar o cliente, então estamos adotando um cronograma de atualização mais frequente (em vez de uma vez a cada 1,5 anos, hehehe). Para o restante de 2021, continuaremos priorizando a confiabilidade do cliente, trabalhando com a equipe de Desafios para tratar da tela de fim de jogo, resolvendo bugs altamente frustrantes e melhorando nosso código e, consequentemente, a sua experiência. Agradecemos por participarem da comemoração desse enorme marco na Campanha de Limpeza do Cliente! A gente se vê na próxima atualização.



  • Copiado para a área de transferência