Desarrollo
LIMPIEZA DEL CLIENTE: Hemos actualizado la estructura integrada de Chromium (CEF)

¡Hemos lanzado la nueva versión de la CEF y los resultados pintan bien!

DesarrolloAutoresRiot Am1t, Riot Id, Riot Aotus, Riot Failed Execution
  • Copiado al portapapeles

Nos comprometimos a compartir actualizaciones sobre nuestro trabajo de cara a mejorar el rendimiento y la fiabilidad del cliente de LoL. La actualización de hoy es la novena de la serie (aquí tenéis la primera, la segunda, la tercera, la cuarta, la quinta, la sexta, la séptima y la octava).

Resumen: hemos actualizado el navegador de la CEF (estructura integrada de Chromium), que es una parte fundamental del cliente de LoL, en la versión 11.17 y hemos observado grandes mejoras en el uso de memoria, un menor uso del procesador y menos caídas. ¡Ahora podremos centrarnos en la planificación de actualizaciones más frecuentes para mejorar la fiabilidad y el rendimiento del cliente!

Actualización de la estructura incrustada de Chromium (CEF)

¡Es un momento maravilloso para la campaña de limpieza del cliente! A principios de año, decidimos que actualizar a la versión 91 la estructura incrustada de Chromium (CEF) del cliente, es decir, el navegador web que sirve de base para la arquitectura del cliente de LoL, era el cambio más eficaz que podíamos implementar para mejorar el cliente (para que lo entendáis bien, la última vez que la actualizamos fue en noviembre de 2019 a la versión 74...). Actualizar la CEF trae consigo dos ventajas: en primer lugar, mejora de inmediato el uso de memoria y del procesador, y la estabilidad. Segundo, nos permite implementar multitud de mejoras en el futuro, ya que incluye nuevas funciones y herramientas (hablamos de eso un poco más abajo). Debido a esos motivos, convertimos la actualización de la CEF en nuestra principal prioridad del año, así que nos alegra muchísimo poder anunciar que hemos lanzado la actualización a la versión 91 en la versión 11.17 y que los resultados son geniales de momento.

Menos caídas del cliente

Mejorar la CEF nos ha ayudado a evitar montones de caídas del cliente, y nuestro objetivo consiste en solucionar las que siguen afectando a multitud de jugadores. Nos alegra haber observado una disminución del 61 % desde la versión 11.16 y de un 38 % en comparación con la media de 2021 hasta la fecha. Además, pretendemos hacer que esas cifras todavía mejoren más. De hecho, ¡los primeros datos de la versión 11.18 muestran otro gran descenso de las caídas! Es un éxito rotundo, ya que se producen enormes cantidades de inicios del cliente en cada versión (¡más de 240 millones en las regiones de Riot!).

       

Versión

Número de caídas

11.14

2 349 865

11.15*

3 686 442

11.16

3 161 145

11.17

1 214 155

(* El ciclo de la versión 11.15 fue más largo, por eso hay una mayor cantidad de caídas).

Parece que el principal culpable del resto de caídas son los dispositivos que se quedan sin memoria. Tras profundizar un poco más, nos dimos cuenta de que la mitad de dichas caídas provocadas por faltas de memoria se producían en ordenadores más viejos con Windows 7. Aunque algunos de nuestros jugadores a nivel mundial sí que juegan a LoL en ordenadores antiguos con Windows 7 (nuestro requisito mínimo actual), vamos a investigar cuántos de estos casos están protagonizados por bots, copias de Windows sin licencia u obsoletas u otros tipos de circunstancias que no sean representativas de los jugadores normales de LoL.

Reducción del uso de memoria

Hemos observado un descenso significativo en el uso de memoria de las funciones principales del cliente durante una única sesión. Las "funciones principales del cliente" hacen referencia a los elementos visuales con los que los jugadores interactúan, como botones, campos de texto y prácticamente todo lo que se puede ver y pulsar. Este es el desglose en las regiones de Riot:

Versión de la CEF

Percentil 20.º (dispositivos más rápidos)

Percentil 50.º (dispositivos con requisitos medios)

Percentil 90.º (dispositivos más lentos)

74 (antes de la versión 11.17)

359 MB

597 MB

1016 MB

91 (versión 11.17 y en adelante)

74 MB

275 MB

598 MB

Mejora

285 MB (79 %)

322 MB (54 %)

418 MB (41 %)

En este contexto, la memoria es como la "atención". Cuanto menos atención preste a algo vuestro ordenador, mejor podrá centrarse en varias tareas al mismo tiempo o en lo que ya esté haciendo. Esto trae consigo un menor número de caídas del cliente y una mayor cantidad de memoria disponible, ¡de forma que podréis ver retransmisiones de la LCS mientras hacéis cola para jugar una clasificatoria!

Menor uso del procesador

También hemos observado una disminución en la cantidad de energía del procesador que utiliza ahora el cliente. Este es el desglose en las regiones de Riot:

Versión de la CEF

Percentil 20.º (dispositivos más rápidos)

Percentil 50.º (dispositivos con requisitos medios)

Percentil 90.º (dispositivos más lentos)

74 (antes de la versión 11.17)

13 %

34 %

83 %

91 (versión 11.17 y en adelante)

10 %

22 %

72 %

Descenso porcentual

23 %

35 %

15 %

Esto significa que vuestro ordenador no tiene que esforzarse tanto para ejecutar el cliente, lo que hace que los procesadores se calienten menos y se consuma menos energía. Por ejemplo, los vídeos requieren mucha energía del procesador, mientras que el cliente de LoL no debería hacerlo. Básicamente, podréis ver más vídeos de Netflix y Pentakill.

¿Qué nos permitirá hacer una nueva versión de la CEF?

Aplicaciones basadas en Chromium

Las aplicaciones basadas en Chromium son las herramientas y programas de mayor crecimiento en el desarrollo de software actualmente. Es probable que incluso estéis utilizando una aplicación de Chromium para leer este artículo, hablar por Discord con vuestros amigos y escuchar vuestra lista de reproducción con diez canciones por milésima vez. Todas esas aplicaciones utilizan Chromium, y el cliente también. Actualizar la versión de la estructura incrustada de Chromium nos permite acceder a las nuevas funciones y mejoras de Chromium.

WebAssembly

Ahora hablemos sobre WebAssembly, un formato de código que puede ejecutar instrucciones complejas mucho más rápido que el JavaScript básico, que es lo que siguen utilizando muchas de las aplicaciones del cliente (¿os acordáis de las "aplicaciones de Ember" de las que hablamos en artículos anteriores?). Lo que hace la CEF básicamente es emular, dentro del cliente, un "miniordenador" especializado que utiliza WebAssembly para procesar código de una forma más eficaz. Dado que WebAssembly es compatible con una amplia variedad de lenguajes de programación, nos facilita el reutilizar código preexistente al mismo tiempo que mejora nuestro rendimiento al ejecutar procesos a través de dicho "miniordenador" especializado (en lugar de tener que iniciar una aplicación independiente). WebAssembly se está expandiendo paulatinamente por toda la web, y su compatibilidad con Chromium mejora con cada actualización. Poder acceder a WebAssembly hará que el cliente sea más rápido y nos permitirá hacer cosas que antes no podíamos.

Trabajadores web

Por otra parte están los trabajadores web. Anteriormente, las aplicaciones de Chromium se ejecutaban sincronizadamente; es decir, procesaban las líneas de código de una en una. Es como si solo hubiese un trabajador en toda una fábrica, mientras que los trabajadores web hacen que aumente el número de integrantes del equipo para poder ejecutar múltiples líneas de código al mismo tiempo. El trabajador web del chat puede encargarse de todo lo relacionado con el chat, mientras el cliente se centrará en meteros en partida. Por tanto, si vuestro amigo no deja de preguntaros por configuraciones de objetos para Teemo, dicha conversación ya no ralentizará el resto de vuestra experiencia en el cliente. Los trabajadores web también harán que el cliente sea más rápido.

Aun sin generar nuevo código para aprovechar dichas nuevas funciones, hemos hecho que el cliente sea más rápido con solo actualizar la CEF, gracias a que maneja mejor el JavaScript que ya habíamos escrito. Conforme mejoremos otras áreas del cliente, nos centraremos en métodos que encajen bien con mejoras nativas del rendimiento.

Otras novedades

También hemos progresado en lo relativo a la experiencia del final de la partida desde que publicamos nuestro último artículo. Primero, añadimos un código con el que reunir datos sobre qué ocurre cuando aparece la pantalla de "Esperando las estadísticas", algo que sigue sucediendo a los jugadores. Esto nos ayudó a identificar y disminuir la duración de los retrasos, ya que no deberían ser tan largos. También hemos implementado una corrección en la versión 11.17 que reducirá las probabilidades de que dicha página se quede colgada. Además, hemos lanzado más cambios para el motor de juego, con los que aceleraremos todavía más el final de la partida en la versión 11.19. Y, por último, pero no por ello menos importante, nos emociona integrar los desafíos, y estamos haciendo todo lo necesario para asegurarnos de que esta nueva característica no afecte al rendimiento ni a la fiabilidad del cliente.

Próximos pasos

La actualización de la CEF ha demostrado ser increíblemente útil a la hora de mejorar el cliente, por lo que vamos a establecer un calendario de actualizaciones más frecuente (en lugar de hacerlas una vez cada año y medio). En cuanto al resto de 2021, seguiremos priorizando la fiabilidad del cliente, encargándonos del final de la partida con el equipo de desafíos, solucionando los errores más frustrantes y actualizando nuestro código para mejorar vuestra experiencia. ¡Gracias por celebrar a nuestro lado este gran logro de la campaña de limpieza del cliente! Hasta la próxima.



  • Copiado al portapapeles