NETTOYAGE DU CLIENT : Nous avons lancé la mise à jour du Chromium Embedded Framework (CEF)
Nous vous avons promis de vous parler régulièrement de notre travail pour améliorer la performance et la fiabilité du client de League of Legends. Aujourd'hui, il s'agit du neuvième article de la série. (Voir les premier, deuxième, troisième, quatrième, cinquième, sixième, septième et huitième ici !)
Pour résumer, nous avons mis à jour le navigateur Internet CEF (Chromium Embedded Framework) qui est au cœur du client League dans le patch 11.17, et avons constaté une utilisation mémoire largement améliorée, une diminution de l'utilisation du processeur et une réduction des plantages. Nous pouvons désormais nous concentrer sur des mises à jour plus fréquentes pour améliorer la fiabilité et la performance du client !
Mise à jour du Chromium Embedded Framework (CEF)
C'est un grand moment pour la campagne de nettoyage du client ! Au début de l'année, nous avons déterminé que mettre à jour la version du client du Chromium Embedded Framework (CEF), c'est-à-dire le navigateur internet au cœur de l'architecture du client de LoL, vers la version 91 serait le plus efficace pour améliorer le client. (Pour donner le contexte, sa dernière mise à jour remonte à novembre 2019, avec la version 74…) L'avantage de la mise à jour du CEF est double : elle améliore immédiatement l'utilisation de la mémoire et du processeur, ainsi que la stabilité. Ensuite, elle nous permet d'autres améliorations, puisqu'elle apporte de nouveaux outils et de nouvelles fonctionnalités (nous allons y revenir). Ces raisons ont fait de la mise à jour du CEF notre propriété de l'année, et nous sommes heureux de vous apprendre que nous venons de passer à la version 91 avec le patch 11.17, avec de grands résultats jusqu'à maintenant !
Moins de plantages du client
La mise à jour du CEF nous a permis de régler de nombreux plantages du client, et notre objectif est de continuer de régler ceux qui affectent le plus souvent les joueurs. Nous sommes ravis de constater une baisse de 61 % des plantages depuis le patch 11.16, et une baisse de 38 % par rapport à la moyenne de 2021, et nous comptons poursuivre dans cette voie. En fait, les premières données du patch 11.18 indiquent une nouvelle grosse baisse des plantages ! C'est une grande victoire, car nous avons un grand nombre de démarrages de clients lors des patchs (cela peut atteindre les 240 millions dans nos régions Riot !)
Patch |
Nombre de plantages |
11.14 |
2 349 865 |
11.15* |
3 686 442 |
11.16 |
3 161 145 |
11.17 |
1 214 155 |
(* 11.15 avait un patch de cycle plus long, ce qui explique ce chiffre important.)
Le coupable principal derrière les plantages restants semble être les ordinateurs dont la mémoire est saturée. Après avoir creusé la question, nous avons constaté que près de la moitié de ces plantages de mémoire avaient lieu sur de vieux PC sous Windows 7. Certains joueurs jouent effectivement à League sur de vieux PC sous Windows 7 (notre configuration minimale actuelle), mais nous allons enquêter pour savoir combien de ces cas sont des bots, des copies de Windows sans licence ou expirées, ou autres circonstances qui ne sont pas représentatives de vrais joueurs jouant à League de la manière attendue.
Réduction d'utilisation mémoire
Nous avons constaté une baisse significative de l'utilisation de mémoire par le client en façade au cours d'une session. La façade du client concerne les éléments visuels avec lesquels les joueurs interagissent : boutons, champs de texte et à peu près tout ce que vous voyez et pouvez cliquer. Dans nos régions Riot, voici un récapitulatif :
Version de CEF |
20e centile des joueurs (machines les plus rapides) |
50e centile des joueurs (machines moyennes) |
90e centile des joueurs (machines plus lentes) |
74 (pré-patch 11.17) |
359 Mo |
597 Mo |
1016 Mo |
91 (patch 11.17+) |
74 Mo |
275 Mo |
598 Mo |
Amélioration |
285 Mo (79 %) |
322 Mo (54 %) |
418 Mo (41 %) |
La mémoire dans ce contexte est comme l'attention. Plus votre ordinateur en a, plus il peut en consacrer à des tâches multiples ou à ce qu'il fait déjà. Cela entraîne moins de plantages client et plus de mémoire disponible pour regarder les streams LCS et vous mettre en file d'attente classée en même temps !
Utilisation de processeur réduite
Nous avons aussi constaté une diminution de l'utilisation de la puissance du processeur par le client. Voici un récapitulatif dans nos régions Riot :
Version de CEF |
20e centile des joueurs (machines les plus rapides) |
50e centile des joueurs (machines moyennes) |
90e centile des joueurs (machines plus lentes) |
74 (pré-patch 11.17) |
13 % |
34 % |
83 % |
91 (patch 11.17+) |
10 % |
22 % |
72 % |
Pourcentage de baisse |
23 % |
35 % |
15 % |
Cela signifie que votre ordinateur a moins d'efforts à faire pour faire tourner le client, ce qui permet au processeur de rester plus frais et de consommer moins d'énergie. Par exemple, les vidéos sont très fatigantes pour le processeur, tandis que le client de League ne devrait pas l'être. Bref, plus de Netflix et Pentakill.
Que nous permettra cette nouvelle version du CEF ?
Des applis sous Chromium
Les applis sous Chromium sont parmi les outils et programmes les plus en vue dans le développement de logiciels de nos jours. Vous utilisez certainement déjà une appli sous Chromium pour lire cet article, pour discuter sous Discord avec vos amis et pour écouter votre playlist des 10 mêmes chansons en boucle pour la 100e fois. Chacune de ces applications utilise Chromium, et notre client aussi. La mise à jour de la version du Chromium Embedded Framework nous donne accès aux nouvelles fonctionnalités et aux améliorations de Chromium.
WebAssembly
Parlons à présent de WebAssembly, un format de code capable de gérer des instructions complexes bien plus rapidement que le JavaScript de base, qui est encore ce que de nombreuses applications du client utilisent encore (souvenez-vous des « applications Ember » dans nos blogs précédents). Le CEF émule en somme un « mini-ordinateur » spécialisé dans le client qui utilise WebAssembly pour traiter le code de manière plus efficace. Parce que WebAssembly prend en charge une large variété de langage de programmation, il facilite la réutilisation des codes existants, tout en donnant un avantage de performance lié à des processus de traitement de ce « mini-ordinateur » spécialisé (au lieu de lancer une application séparée). Tout Internet est peu à peu en train d'adopter WebAssembly, et sa prise en charge dans Chromium s'améliore à chaque mise à jour. L'accès à WebAssembly rendra le client plus rapide et permettra des choses jusqu'alors impossibles.
Web Workers
Ensuite, il y a Web Workers. Historiquement, les applications de Chromium tournent de manière synchrone, et traitent leurs processus une ligne de code après l'autre. C'est comme si vous aviez un seul ouvrier sur toute la chaîne de construction. Tandis que Web Worker*S* agrandit l'équipe pour traiter plusieurs lignes de code en parallèle. Un Web Worker de messagerie pourra gérer tout ce qui concerne la messagerie, tandis que le client se concentrera sur votre lancement de partie. Donc, si vous avez un ami particulièrement bavard qui vous demande des suggestions de build pour Teemo, cette conversation ne ralentira plus votre client. Les Web Workers aussi accéléreront le client.
Même sans écrire de nouveau code pour profiter de ces nouveautés, la simple mise à jour du CEF a déjà accéléré le client grâce à une meilleure prise en charge du JavaScript que nous avons déjà écrit. À mesure que nous améliorerons d'autres domaines du client, nous pourrons nous concentrer sur les méthodes qui fonctionnent bien avec les améliorations de performance natives.
Autres mises à jour
Nous avons aussi fait des progrès sur l'expérience de fin de partie depuis notre dernier article de blog. Pour commencer, nous avons ajouté du code pour recueillir des données sur ce qui se passe pendant la page bloquée « En attente des stats » que les joueurs continuent de rencontrer. Cela nous a aidés à identifier et améliorer le délai, puisqu'elle ne devrait pas être aussi longue qu'à l'heure actuelle. Nous avons aussi déployé un correctif dans le patch 11.17 qui réduira les chances que cette page plante complètement. D'autres correctifs du moteur de jeu ont été ajoutés pour accélérer encore la fin de partie dans le patch 11.19. Et enfin, nous avons le plaisir d'intégrer les Défis et faisons tout notre possible pour que cette nouvelle fonctionnalité ne vienne pas impacter la performance ou la fiabilité du client.
Et ensuite ?
Notre mise à jour du CEF a été très utile pour améliorer le client, aussi allons-nous établir un programme de mises à jour plus fréquentes (au lieu d'une fois tous les 1,5 an, lolz). Pour la fin 2021, nous allons continuer de traiter en priorité la fiabilité du client, d'arranger la fin de partie avec l'équipe des Défis, de régler les bugs les plus frustrants, et de continuer d'améliorer notre code pour améliorer votre expérience. Merci de nous avoir accompagnés pour fêter ce cap colossal dans notre Campagne de nettoyage du client ! À la prochaine.