KLIENSTAKARÍTÁS: Frissített Chromium Embedded Framework (CEF)

Kiadtuk saját új CEF-verziónkat, és eddig jók az eredmények!

Megígértük, hogy beszámolunk arról, hol tartanak a LoL-kliens teljesítményének és megbízhatóságának javításával kapcsolatos munkálatok. A mai bejegyzés e sorozat kilencedik része. (Itt találjátok az első, a második, a harmadik, a negyedik, az ötödik, a hatodik, a hetedik és a nyolcadik részt!)

Röviden – A 11.17-es frissítésben frissítettük a LoL-kliens alapját képező CEF (Chromium Embedded Framework) webböngészőt, és jelentősen csökkent a memóriafelhasználás, a processzorhasználat, és ritkábbak lettek az összeomlások. Ezután jöhetnek a gyakoribb frissítések, hogy javíthassuk a kliens megbízhatóságát és teljesítményét.

A Chromium Embedded Framework (CEF) frissítése

Ez egy fontos mérföldkő a klienstakarítási projektben! Az év elején úgy döntöttünk, hogy a Chromium Embedded Framework (CEF) – a LoL-kliens architektúrájának középpontjában álló webböngésző – kliensverziójának 91-esre való frissítésével tehetünk a legtöbbet a kliens továbbfejlesztéséért. (Csak hogy érzékeltessük ennek fontosságát: legutóbb 2019 novemberében frissítettük a 74-es verzióra…) A CEF frissítésének két előnye van: az egyik, hogy azonnal javítja a memória- és processzorhasználatot, illetve a stabilitást. A másik, hogy számos lehetőséget ad a későbbi fejlesztésekre, mivel számos új funkciót és eszközt kínál (erről még lesz szó). Ezért lett az egyik kiemelt célunk a CEF idei frissítése, és örömmel jelenthetem, hogy megtörtént a 91-es verzióra történő áttérés a 11.17-es frissítésben, és az eddigi eredmények biztatóak!

Ritkábban omlik össze a kliens

A CEF frissítése nagyon sok hibát megszüntetett, amelyek összeomláshoz vezethettek, és a továbbiakban azokat célozzuk, amelyekkel a leggyakrabban találkoznak a játékosok. A 11.16-os frissítés óta 61%-kal csökkent az összeomlások száma, a 2021-es átlaghoz képest pedig 38%-os a csökkenés, és szeretnénk a mostani számokat még lejjebb szorítani. A 11.18-as frissítés korai adatai ráadásul újabb jelentős csökkenést mutatnak. Ez hatalmas siker, mivel minden egyes frissítési ciklusban rengetegszer elindítjátok a klienst (több mint 240 milliószor az összes Riot-régióban!).

       

Frissítés

Összeomlások száma

11.14

2 349 865

11.15*

3 686 442

11.16

3 161 145

11.17

1 214 155

(*A 11.15-ös egy hosszabb frissítési ciklus volt, ezért magasabbak a számok.)

A továbbra is előforduló összeomlások leggyakoribb oka, hogy a gépek kifogynak az elérhető memóriából. Amikor beleástuk magunkat az adatokba, kiderült, hogy az érintett gépek közel felén Windows 7 operációs rendszer fut. Bár rengeteg játékos van világszerte, akik valóban Windows 7 rendszerű régi PC-n játszanak (ami most a minimális rendszerkövetelményünk), meg fogjuk vizsgálni, hogy ezek között hány bot és licenc nélküli/lejárt licencű Windows van, vagy vannak-e más körülmények, amelyek arra utalnak, hogy nem átlagos, legitim LoL-felhasználókról van szó.

Kisebb memóriahasználat

Jelentősen csökkent a kliens előtérben futó rendszereinek memóriahasználata. Az „előtér” alatt azokat a vizuális elemeket értjük, amellyel közvetlenül érintkeznek a játékosok, például gombok, szövegmezők, gyakorlatilag bármi, ami megjelenik, és amire rá lehet kattintani. Így festenek az adatok Riot-régiók szerinti bontásban:

CEF-verzió

A 20. percentilisbe tartozó játékosok (gyorsabb gépek)

Az 50. percentilisbe tartozó játékosok (középkategóriás gépek)

A 90. percentilisbe tartozó játékosok (lassabb gépek)

74 (a 11.17-es frissítés előtt)

359 MB

597 MB

1016 MB

91 (a 11.17-es frissítés után)

74 MB

275 MB

598 MB

Javulás

285 MB (79%)

322 MB (54%)

418 MB (41%)

A memória kicsit olyan, mint a figyelem: minél több szabadul fel belőle, annál több más dologra tud figyelni egyszerre a számítógép. A kevesebb kliensösszeomlás és a több memória azt jelenti, hogy akár LCS-közvetítéseket is nézhetsz, amíg a várólistán vagy!

Alacsonyabb processzorhasználat

A kliens processzorhasználata is érezhetően csökkent. Az adatok Riot-régiók szerinti bontásban:

CEF-verzió

A 20. percentilisbe tartozó játékosok (gyorsabb gépek)

Az 50. percentilisbe tartozó játékosok (középkategóriás gépek)

A 90. percentilisbe tartozó játékosok (lassabb gépek)

74 (a 11.17-es frissítés előtt)

13%

34%

83%

91 (a 11.17-es frissítés után)

10%

22%

72%

Százalékos csökkenés

23%

35%

15%

Ez azt jelenti, hogy a számítógépnek nem kell annyira keményen dolgoznia a kliens futtatásakor, így a processzor hűvösebb lesz, és csökken az energiafogyasztása. A videók például általában leterhelik a processzort, de a LoL-kliensnek nem kellene. Vagyis jöhet a több Netflix és Pentakill.

Milyen segítséget jelent számunkra az újabb CEF-verzió?

Chromium-alapú alkalmazások

A Chromium-alapú alkalmazások napjaink szoftverfejlesztésének leggyorsabban bővülő eszközei. Jó eséllyel egy Chromium-alapú alkalmazás segítségével olvasod ezt a cikket is, beszélgetsz Discordon a barátaiddal, vagy hallgatod a 100. alkalommal ugyanazt a 10 számból álló lejátszási listát. A fenti alkalmazások mindegyike Chromiumot használ, csakúgy, mint a kliensünk. A kliens Chromium Embedded Framework-verziójának frissítése elérhetővé tette számunkra a Chromium új funkcióit és fejlesztéseit.

WebAssembly

Ejtsünk pár szót a WebAssemblyről! Ez a kódformátum jóval gyorsabban tudja futtatni az összetett utasításokat, mint az alap JavaScript, amelyen a kliens számos alkalmazása fut (emlékeztek még a korábbi blogbejegyzésekben említett „Ember-alkalmazásokra”?). A CEF tulajdonképpen egy speciális „miniszámítógépet” emulál a kliensen belül, amely a WebAssembly használatával jóval hatékonyabban képes feldolgozni a kódot. Mivel a WebAssembly számos programozási nyelvet támogat, sokkal könnyebb a régebbi kódok újrahasznosítása, és a folyamatok ezen a speciális „miniszámítógépen” való futtatása is javítja a teljesítményt (nem kell külön alkalmazást elindítani hozzá). A WebAssembly használata egyre elterjedtebb az interneten, és a Chromium-támogatás minden kiadással tovább javul. A WebAssemblyvel gyorsabb lesz a kliens működése, és új lehetőségek nyílnak meg előttünk.

Webes feldolgozók

És persze ott vannak még a webes feldolgozók is. A Chromium-alkalmazások hagyományosan szinkron módon futnak, vagyis egyszerre egy sornyi kódot dolgoznak fel. Ez olyan, mintha egyetlen ember dolgozna a gyártósor mellett. A webes feldolgozó*K* azonban kibővítik a munkaerőt, így egyidejűleg több kódot fel lehet dolgozni. A csevegés webes feldolgozója kezeli a csevegéssel kapcsolatos összes feladatot, a fő kliens pedig azon dolgozik, hogy bekerülj a következő meccsbe. Tehát ha van egy nagyon beszédes ismerősöd, aki a legjobb Teemo-összeállításokról szeretne csevegni, a beszélgetésetek mostantól nem lassítja le a kliens többi részének működését. A webes feldolgozók ezenkívül felgyorsítják a klienst.

Még csak új kódot sem kell írnunk, hogy kihasználjuk ezeket az új funkciókat: a CEF frissítése önmagában felgyorsította a klienst, mivel hatékonyabban kezeli a korábban megírt JavaScript-kódot. A kliens jövőbeli fejlesztése során olyan módszereket keresünk, amelyek kihasználják a natív teljesítménynövekedést.

Egyéb hírek

A legutóbbi bejegyzésünk óta a játékvégi képernyő (End of Game – EOG) ügyében is történt előrehaladás. Első lépésként kibővítettük a játék kódját, hogy adatokat tudjunk gyűjteni arról, mi is történik, amikor valaki elakad a „Statisztika készítése folyamatban” oldalon. Ezzel sikerült azonosítani a problémát és lerövidíteni a várakozási időt, amely tényleg szükségtelenül hosszúra nyúlt. Ezenkívül kiadtunk egy javítást a 11.17-es frissítésben, amely csökkentette annak esélyét, hogy az oldal teljesen lefagyjon. A játékmotor további javításainak hála a 11.19-es frissítés után még gyorsabb lesz a játékvégi képernyő. Végül, de nem utolsó sorban bekerülnek a játékba a Kihívások, mi pedig mindent megteszünk azért, hogy az új funkció ne befolyásolja a kliens teljesítményét és megbízhatóságát.

Mi várható még?

A CEF frissítése hatalmas lépés volt a kliens továbbfejlesztésében, ezért gyakrabban sort fogunk keríteni rá (és nem csak 1,5 évente, lol). A 2021-es év hátralevő részében a kliens stabilitására koncentrálunk, együttműködünk a Kihívásokon dolgozó csapattal a játékvégi képernyő fejlesztésén, próbálunk javítani pár nagyon bosszantó hibát, és tovább finomítjuk a kódot a még jobb játékélmény érdekében. Köszönjük, hogy velünk tartottatok a klienstakarítási kampány e fontos mérföldkövénél! Találkozunk a következő frissítésnél.