Dev
PULIZIA CLIENT: il Chromium Embedded Framework (CEF) aggiornato è qui

Abbiamo pubblicato la nostra nuova versione del CEF e i risultati sono spettacolari!

DevAutoriRiot Am1t, Riot Id, Riot Aotus, Riot Failed Execution
  • Copiato negli appunti

Ci siamo impegnati a pubblicare aggiornamenti sullo stato dei lavori di miglioramento delle prestazioni e dell'affidabilità del client di LoL. Quello di oggi è il nono post di questa serie. (Qui potete leggere il primo, il secondo, il terzo, il quarto, il quinto, il sesto, il settimo e l'ottavo!)

In breve: abbiamo aggiornato il browser CEF (Chromium Embedded Framework) alla base del client di LoL nella patch 11.17, e abbiamo registrato miglioramenti significativi nella gestione della memoria, un minore stress della CPU e meno blocchi. Questo ci permette di pianificare aggiornamenti più frequenti per accrescere l'affidabilità e le prestazioni del client!

Aggiornare il Chromium Embedded Framework (CEF)

È un momento di svolta per la nostra Campagna di pulizia del client! All'inizio dell'anno avevamo stabilito che aggiornare la versione del client del Chromium Embedded Framework (CEF), ovvero il browser che sta al centro dell'architettura del client di LoL, alla versione 91 sarebbe stato l'intervento di maggiore impatto. (Per la cronaca, l'ultimo aggiornamento era stato alla versione 74 nel novembre 2019...) I benefici di un CEF aggiornato sono due: innanzitutto migliora immediatamente il consumo di memoria, l'utilizzo della CPU e la stabilità, e in secondo luogo apre la porta a numerosi interventi futuri, dato che ci fornisce nuovi strumenti e funzionalità (di cui parleremo tra poco). Per questi motivi abbiamo deciso di dare la priorità al CEF quest'anno, e ora siamo felicissimi di annunciarvi che la versione 91 è stata implementata nella patch 11.17 con risultati eccellenti!

Riduzione dei blocchi del client

Aggiornare il CEF ci ha permesso di risolvere moltissimi blocchi del client, e ora il nostro obiettivo è sistemare quelli che più influenzano i giocatori. Siamo entusiasti di aver riscontrato un calo del 61% dei blocchi rispetto alla 11.16 e del 38% della media del 2021 registrata finora, ma vogliamo far calare ulteriormente queste cifre. Anzi, a dirla tutta i primi dati sulla patch 11.18 mostrano un ulteriore crollo dei blocchi! È un successo straordinario, dato che ad ogni patch il numero di avvii del client aumenta (e nelle regioni Riot potrebbe addirittura superare i 240 milioni!).

       

Patch

Numero di blocchi

11.14

2.349.865

11.15*

3.686.442

11.16

3.161.145

11.17

1.214.155

(*La patch 11.15 ha avuto un ciclo vitale più lungo, fattore che spiega il numero maggiore di blocchi.)

Il principale colpevole dei blocchi residui sembra essere la mancanza di memoria del sistema. Un'indagine più approfondita rivela che quasi la metà di questi blocchi legati alla memoria si è verificato su vecchi PC con Windows 7. Anche se ci sono ancora giocatori in tutto il mondo che avviano LoL su Windows 7 (il sistema operativo richiesto nelle specifiche minime), stiamo cercando di capire quanti di questi casi sono provocati da bot, copie di Windows scadute o senza licenza, o altre circostanze non assimilabili all'uso regolare e legittimo di LoL.

Riduzione dell'utilizzo di memoria

Abbiamo riscontrato una riduzione significativa della memoria front-end del client nel corso di una singola sessione. Con "front-end del client" ci riferiamo agli elementi grafici con cui interagiscono i giocatori, come pulsanti, caselle di testo e in pratica tutto ciò che potete cliccare. Ecco un'analisi schematica nelle regioni Riot:

Versione del CEF

Giocatori nel ventesimo percentile (sistemi di fascia alta)

Giocatori nel cinquantesimo percentile (sistemi di fascia media)

Giocatori nel novantesimo percentile (sistemi di fascia bassa)

74 (prima della patch 11.17)

359 MB

597 MB

1016 MB

91 (dalla patch 11.17 in poi)

74 MB

275 MB

598 MB

Miglioramento

285 MB (79%)

322 MB (54%)

418 MB (41%)

In questo contesto, la memoria è equiparabile alla soglia dell'attenzione: meno se ne utilizza, più il computer riesce a svolgere compiti in parallelo o a concentrarsi su ciò che sta già facendo. Questo si traduce in una minor frequenza di blocchi e in una maggiore quantità di memoria disponibile, che vi permette per esempio di guardare le partite della LCS mentre entrate nella coda classificata!

Minor utilizzo di CPU

Abbiamo anche notato un calo della potenza della CPU richiesta dal client. Ecco un'analisi schematica nelle regioni Riot:

Versione del CEF

Giocatori nel ventesimo percentile (sistemi di fascia alta)

Giocatori nel cinquantesimo percentile (sistemi di fascia media)

Giocatori nel novantesimo percentile (sistemi di fascia bassa)

74 (prima della patch 11.17)

13%

34%

83%

91 (dalla patch 11.17 in poi)

10%

22%

72%

Riduzione percentuale

23%

35%

15%

Questo significa che il vostro computer deve faticare meno per avviare il client, riducendo il riscaldamento del processore e il consumo di energia. Per fare un esempio, i video sono molto pesanti per la CPU, ma il client di LoL non deve esserlo. Così potrete guardare Netflix mentre distribuite pentakill.

Quali vantaggi ci fornisce la nuova versione del CEF?

App basate su Chromium

Attualmente, le app basate su Chromium sono tra gli strumenti e i programmi di sviluppo con il maggior tasso di crescita esistente. Probabilmente state usando una di queste app per leggere questo articolo, per chattare su Discord con gli amici o per ascoltare per la 100esima volta le 10 canzoni della vostra playlist preferita. Ognuna di queste applicazioni usa Chromium, così come il nostro client. Aggiornare la versione del CEF ci dà accesso a tutte le migliorie e alle nuove funzionalità di Chromium.

WebAssembly

Parliamo un po' di WebAssembly, un formato di codice in grado di eseguire istruzioni complesse molto più velocemente di JavaScript base, che attualmente rappresenta il pilastro di molte app del client (ricordate le applicazioni Ember di cui abbiamo parlato negli articoli precedenti?). In pratica, il CEF emula all'interno del client un "mini-computer" specializzato che usa WebAssembly per elaborare il codice con maggiore efficienza. Dato che WebAssembly supporta una vasta gamma di linguaggi di programmazione, rende più facile riutilizzare il codice preesistente fornendoci però un vantaggio nelle prestazioni dato dalla possibilità di eseguire processi in quel "mini-computer" specializzato (invece di dover avviare un'applicazione separata). L'uso di WebAssembly è sempre più diffuso su tutto il web, e il supporto in Chromium migliora ad ogni nuova versione. Avere accesso a WebAssembly renderà il client più veloce e ci permetterà di fare cose in precedenza impossibili.

Web Workers

In secondo luogo, abbiamo Web Workers. Da sempre le app basate su Chromium lavorano simultaneamente, quindi elaborano una linea di codice alla volta. È un po' come avere un solo operaio a gestire l'intera linea di produzione: invece Web Workers (plurale) dà vita a un "team" che può processare più linee di codice in parallelo. Per esempio, una Chat Web Worker può occuparsi di tutti gli aspetti che riguardano le chat mentre il client principale si concentra sul farvi accedere alle partite. Così, se avete un amico che vi assilla per avere consigli sulla configurazione di Teemo, perlomeno le sue chiacchiere non rallenteranno il resto della vostra esperienza nel client. Anche Web Workers permetterà al client di lavorare più velocemente.

Anche senza compilare nuovo codice per sfruttare queste funzionalità, il semplice aggiornamento del CEF ha già reso il client più agile grazie alla gestione migliorata di JavaScript già compilato all'interno. Potenziando altre aree del client potremo concentrarci su metodi che funzionino adeguatamente con le migliorie alle prestazioni native.

Altri aggiornamenti

Dopo l'ultimo articolo del blog abbiamo anche fatto passi avanti nell'esperienza di fine partita. Innanzitutto, abbiamo aggiunto un codice per raccogliere dati su cosa si verifica quando il gioco si blocca sulla schermata "In attesa delle statistiche", fenomeno che ancora coinvolge molti giocatori: questo ci ha permesso di capire e ridurre il tempo d'attesa, che non dovrebbe essere così esteso. Nella patch 11.17 abbiamo anche inserito una contromisura che riduce le probabilità di blocco totale della pagina. Nella 11.19 sono state implementate ulteriori migliorie per accelerare ancora di più il fine partita. Dulcis in fundo, siamo entusiasti di poter integrare le Sfide, e stiamo prendendo tutti gli accorgimenti per garantire che questa nuova funzionalità non intacchi prestazioni e affidabilità del client.

Cosa succederà ora

L'aggiornamento del CEF si è dimostrato preziosissimo per il miglioramento del client, quindi stabiliremo un programma di aggiornamenti più frequente (invece di svegliarci una volta ogni anno e mezzo). Per quanto riguarda il resto del 2021, le priorità restano quelle di aumentare l'affidabilità del client, sistemare il fine partita con il team Sfide, correggere dei bug altamente frustranti e continuare a migliorare il nostro codice e, di conseguenza, la vostra esperienza. Grazie mille per aver festeggiato con noi questo importantissimo traguardo della Campagna di pulizia del client! Ci vediamo la prossima volta.



  • Copiato negli appunti