KLIENSTAKARÍTÁS: Frissített Chromium Embedded Framework (CEF)
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.