ÚKLID KLIENTA: Spustili jsme aktualizovaný Chromium Embedded Framework (CEF)

Spustili jsme novou verzi CEF a vypadá to dobře!

Dali jsme si závazek, že vám budeme přinášet novinky o práci, kterou provádíme v rámci snahy vylepšit výkon a spolehlivost klienta LoL. Dnešní článek je devátým dílem série. (Zde si přečtěte první, druhý, třetí, čtvrtý, pátý, šestý, sedmý a osmý článek!)

Ve zkratce: Aktualizovali jsme webový prohlížeč CEF (Chromium Embedded Framework) v jádru klienta LoL v rámci aktualizace 11.17 a zaregistrovali jsme výrazně lepší využití paměti, nižší využití procesoru a méně pádů. Díky tomu se nyní můžeme soustředit na plánování častějších aktualizací za účelem vylepšení spolehlivosti a výkonu klienta!

Aktualizace Chromium Embedded Framework (CEF)

Pro kampaň Úklid klienta je to významný okamžik! Na začátku roku jsme se rozhodli, že aktualizace verze Chromium Embedded Framework (CEF) v našem klientu – čili webového prohlížeče v nitru architektury klienta LoL – na verzi 91 bude ten nejvýznamnější způsob, jak klienta můžeme vylepšit. (Pro srovnání, naposledy jsme ho aktualizovali v listopadu 2019 na verzi 74...) Výhody aktualizace CEF jsou dvojí: zaprvé se okamžitě vylepší využití paměti, využití procesoru a stabilita. Zadruhé díky tomu budeme moct dělat spoustu budoucích vylepšení, jelikož obsahuje novější funkce a nástroje (podrobnosti za chviličku). Kvůli těmto důvodům byla aktualizace CEF naší hlavní letošní prioritou, takže máme velkou radost, že můžeme oznámit, že jsme úspěšně provedli aktualizaci na verzi 91 v rámci aktualizace 11.17 a zatím vidíme skvělé výsledky!

Méně pádů klienta

Vylepšení CEF nám pomohlo vyřešit hodně pádů klienta a naším cílem je nadále řešit ty, které hráče trápí nejvíc. Máme radost, že jsme dosud zaregistrovali 61% pokles pádů od verze 11.16 a 38% pokles oproti průměrné míře v roce 2021, a tato čísla máme v plánu nadále snižovat. Raná data z aktualizace 11.18 ukazují další velký pokles pádů! Tohle je obrovská výhra, protože v každé aktualizaci se spouští velké množství klientů (tento počet může být až 240 milionů v našich regionech Riotu!)

Aktualizace

Počet pádů

11.14

2 349 865

11.15*

3 686 442

11.16

3 161 145

11.17

1 214 155

(* Verze 11.15 měla delší aktualizační cyklus, což zde vysvětluje vyšší počet.)

Hlavním viníkem, který stojí za zbývajícími pády, je podle všeho to, že počítačům dochází paměť. Když jsme se v tom vrtali trochu hlouběji, všimli jsme si, že téměř polovina těchto pádů způsobených nedostatkem paměti, byla na starých počítačích s Windows 7. Přestože někteří hráči po celém světě stále hrají na starých počítačích s Windows 7 (naše aktuální minimální konfigurace), pokusíme se zjistit, kolik z těchto případů jsou boti, nelicencované/zastaralé kopie Windows nebo jiné okolnosti, které nepředstavují běžné hráče, kteří hrají LoL legitimně.

Snížené využití paměti

Zaznamenali jsme výrazný pokles využití paměti v té části klienta, kterou vidí hráči, během jedné relace. Tato část klienta představuje grafické prvky, se kterými hráči interagují, například tlačítka, textová pole a v podstatě všechno, co vidíte a na co můžete kliknout. Zde je rozpis pro naše regiony Riotu:

Verze CEF

20. percentil hráčů (rychlejší počítače)

50. percentil hráčů (středně výkonné počítače)

90. percentil hráčů (pomalejší počítače)

74 (před aktualizací 11.17)

359 MB

597 MB

1016 MB

91 (aktualizace 11.17+)

74 MB

275 MB

598 MB

Zlepšení

285 MB (79 %)

322 MB (54 %)

418 MB (41 %)

Paměť je v tomto kontextu něco jako pozornost – čím víc je jí volně k dispozici, tím větší prostor má váš počítač, aby mohl provádět multitasking nebo se soustředil na to, co již dělá. To znamená méně pádů klienta a více dostupné paměti, abyste mohli sledovat streamy z LCS a přitom se zařadit do hodnocené fronty!

Nižší využití procesoru

Rovněž jsme snížili výkon procesoru, který klient nyní využívá. Zde je rozpis pro naše regiony Riotu:

Verze CEF

20. percentil hráčů (rychlejší počítače)

50. percentil hráčů (středně výkonné počítače)

90. percentil hráčů (pomalejší počítače)

74 (před aktualizací 11.17)

13 %

34 %

83 %

91 (aktualizace 11.17+)

10 %

22 %

72 %

Procentuální pokles

23 %

35 %

15 %

Tohle znamená, že váš počítač nemusí kvůli provozování klienta pracovat tak moc, což má za následek chladnější procesory a nižší spotřebu energie. Například videa jsou na procesor velmi náročná, zatímco klient LoL by být neměl. V podstatě to znamená víc Netflixu a Pentakillu.

Co díky novější verzi CEF získáme my?

Aplikace založené na Chromium

Aplikace založené na Chromium patří k těm nejrychleji rostoucím nástrojům a programům v dnešním vývoji softwaru. Nejspíš už používáte aplikaci Chromium ke čtení tohoto článku, k chatování na Discordu s přáteli a k poslechu těch stejných 10 skladeb, které se opakují už posté. Každá z těchto aplikací používá Chromium a v případě klienta to platí totéž. Díky aktualizaci verze Chromium Embedded Framework získáme přístup k novějším funkcím a vylepšením Chromium.

WebAssembly

Nyní si pojďme říct něco o WebAssembly, o formátu kódu, který dokáže spouštět komplexní instrukce mnohem rychleji než základní JavaScript, který řada aplikací v klientu stále používá (pamatujete si „aplikace ember“ z předchozích blogů?). CEF v klientu v podstatě emuluje specializovaný „mini počítač“, který používá WebAssembly k efektivnějšímu zpracovávání kódu. Jelikož WebAssembly podporuje širokou škálu programovacích jazyků, opětovné používání existujícího kódu je snadnější a zároveň získáváme výhodu v podobě výkonu, která je spjatá se spouštěním procesů v tomto specializovaném „mini počítači“ (oproti spouštění separátní aplikace). WebAssembly se pomalu začíná používat na celém webu a podpora v rámci Chromium se s každou verzí zlepšuje. Díky přístupu k WebAssembly bude klient rychlejší a umožní nám dělat věci, které jsme dříve dělat nemohli.

Web Workers

Pak jsou tu Web Workers. Historicky vzato běží aplikace Chromium synchronně, což znamená, že zpracovávají kód řádek po řádku. Je to podobné jako mít jednoho dělníka v celé továrně, zatímco Web Worker*s* (množné číslo) tento tým rozšiřují, abyste mohli spouštět více řádků kódu najednou. Web Worker chatu by mohl zvládat všechno kolem chatu, zatímco se hlavní klient soustředí na to, aby vás dostal do hry. Takže pokud máte obzvláště upovídaného přítele, který po vás chce rady ohledně předmětů pro Teema, tato konverzace už nebude zpomalovat zbytek vašeho zážitku v klientu. Díky Web Workers bude klient navíc fungovat rychleji.

Aniž bychom museli psát nový kód, abychom využili těchto nových funkcí, aktualizace CEF samotná už klienta dokázala zrychlit díky lepšímu zvládání JavaScriptu, který už máme napsaný. Během vylepšování ostatních oblastí klienta se budeme moct soustředit na metody, které dobře fungují s nativními vylepšeními výkonu.

Další aktualizace

Od našeho posledního blogu jsme rovněž dosáhli pokroku v pozápasovém zážitku. Ze všeho nejdřív jsme přidali trochu kódu na sběr dat o tom, co přesně se děje během pozdržené stránky „Čekání na statistiky“, se kterou se hráči stále potýkají. To nám pomohlo identifikovat a vylepšit prodlevu, jelikož by to vážně nemělo trvat tak dlouho. V aktualizaci 11.17 jsme rovněž vydali opravu, která snižuje šanci na to, že tato stránka zcela zamrzne. Dodatečné opravy herního enginu mají za cíl zrychlit pozápasový zážitek ještě víc ve verzi 11.19. A v neposlední řadě máme radost, že jsme integrovali Výzvy a děláme vše potřebné proto, aby tato nová funkce neměla dopad na výkon a spolehlivost klienta.

Co bude dál?

Naše aktualizace CEF se ukázala být nesmírně přínosnou pro vylepšení klienta, takže jsme udělali rozvrh mnohem častějších aktualizací (namísto jednou za rok a půl, lol). Pokud jde o zbytek roku 2021, budeme se nadále přednostně věnovat stabilitě klientu, řešit pozápasový zážitek s týmem Výzev, řešit otravné chyby a nadále vylepšovat kód, abychom vylepšili váš zážitek. Díky, že jste s námi oslavili tento obrovský milník v kampani Úklid klienta! Uvidíme se zase u příští aktualizace.