クライアントクリーンアップ:アップデートされたChromium Embedded Framework (CEF)がリリース
私たちはリーグ・クライアントのパフォーマンスと安定性改善のための作業の進捗をお伝えしていくことをお約束していました。本日のアップデートは、シリーズ第9回目のブログとなります。(第1回目、第2回目、第3回目、第4回目、第5回目、第6回目、第7回目、第8回目はこちらです!)
要約—パッチ11.17でリーグクライアントの中心となるCEF (Chromium Embedded Framework)ウェブブラウザのアップデートを行い、メモリ使用量が大幅に改善し、CPU使用率が低下し、クラッシュも減少しました。これによって、クライアントの安定性とパフォーマンスを改善するアップデートをより頻繁にリリースすることに集中できるようになりました!
Chromium Embedded Framework (CEF)のアップデート
これはクライアント クリーンアップ キャンペーンにおける重要なステップです!今年の初め、私たちはクライアントのChromium Embedded Framework (CEF)のバージョンを91にアップデートすることを決めました。これはリーグクライアントのアーキテクチャの中心となるウェブブラウザであり、クライアントの改善においてはこれまでで最も大きな影響があるアップデートとなります。(ちなみに、前回アップデートを行ったのは2019年11月で、バージョン74でした…)CEFをアップデートすると2つの大きなメリットがあります。ひとつめはメモリ使用量とCPU使用率、安定性があっという間に改善されることです。ふたつめは新たな機能やツール(後述)が追加されることで、将来に向けて様々な改善が行えるようになることです。これらが理由で、今年はCEFのアップデートが最優先事項となっていました。なのでパッチ11.17でバージョン91へのアップデートが無事に完了して、ここまで良好な結果が得られていることをとても嬉しく思っています!
クライアントのクラッシュ発生率が低下
CEFをアップグレードしたことで、多くのクライアントのクラッシュの問題に対処できるようになります。私たちは今後も、プレイヤーにとって影響の大きなクラッシュへの対処を続けていくつもりです。パッチ11.16以降、クラッシュ発生率が61%低下しており、2021年の平均発生率は38%低下しています。今後も発生率の低下に取り組んでいきます。また、パッチ11.18のデータでは、クラッシュの発生率がさらに大幅に低下しています!どのパッチ期間でもクライアントの起動回数は大量になるために(ライアット地域だけで2億4千万回以上です!)、これは大きな成果だと言えます!
パッチ |
クラッシュ数 |
11.14 |
2,349,865 |
11.15* |
3,686,442 |
11.16 |
3,161,145 |
11.17 |
1,214,155 |
(*パッチ11.15は期間が長かったために数が多くなっています)
残ったクラッシュの原因で一番多いのはPCのメモリ不足によるものです。詳しく調べてみると、メモリ不足のクラッシュが発生しているPCのほぼ半数が、Windows 7を使用している古いPCでした。世界的に見れば、古いWindows 7のPC(LoLの最低動作環境)でLoLをプレイしているプレイヤーも存在すると思いますが、これらのうちのどれくらいがボットだったり、不正ライセンス/ライセンス切れのWindowsを利用していたり、その他の多くの正統なLoLプレイヤーとは異なる環境でプレイしているのか調査を行うつもりです。
メモリ使用量の低下
クライアントのフロントエンドでの、1セッションあたりのメモリ使用量が大幅に低下しています。クライアントのフロントエンドとは、ボタンやテキスト入力欄などのプレイヤーが操作するあらゆるビジュアル要素のことです。ライアット地域のデータでは以下のようになっています。
CEFバージョン |
20パーセンタイルのプレイヤー(高速PC) |
50パーセンタイルのプレイヤー(中程度のスペックのPC) |
90パーセンタイルのプレイヤー(低速PC) |
74(パッチ11.17以前) |
359 MB |
597 MB |
1016 MB |
91(パッチ11.17以降) |
74 MB |
275 MB |
598 MB |
改善幅 |
285 MB (79%) |
322 MB (54%) |
418 MB (41%) |
ここでのメモリとは配慮のようなもので、開放されているメモリ量が多いほど、PCはマルチタスクや現在処理中の作業を行う余裕が生まれます。これによってクライアントのクラッシュが少なくなり、より多くのメモリが使用可能になるので、LJLの配信を見ながらランク戦で対戦待ちすることも可能になります!
CPU使用率の低下
また、クライアントのCPU使用率も低下しています。ライアット地域のデータでは以下のようになっています。
CEFバージョン |
20パーセンタイルのプレイヤー(高速PC) |
50パーセンタイルのプレイヤー(中程度のスペックのPC) |
90パーセンタイルのプレイヤー(低速PC) |
74(パッチ11.17以前) |
13% |
34% |
83% |
91(パッチ11.17以降) |
10% |
22% |
72% |
低下率 |
23% |
35% |
15% |
これはPCにとってクライアントの実行にかかる労力が少なくて済むことを意味しており、CPU温度も消費電力も低下します。たとえば、動画はCPUへの負荷が大きいですが、リーグクライアントはそうあるべきではありません。つまり、NetflixやPentakillを楽しむ余裕が増えるというわけです。
新バージョンのCEFで可能になること
Chromiumベースのアプリ
Chromiumベースのアプリは現在のソフトウェア開発において急速に拡大しつつあるツールおよびプログラムです。皆さんもすでに、この記事を読んだり、Discordでフレンドとチャットしたり、10曲のプレイリストを100回リピートして聞くために、Chromiumアプリを使用しているに違いありません。これらのアプリはすべてChromiumを利用しており、リーグクライアントも同じというわけです。クライアントのChromium Embedded Frameworkのバージョンを上げることで、Chromiumの新しい機能や改善を利用可能になります。
WebAssembly
次はWebAssemblyについてお話ししましょう。これはコード形式のひとつであり、リーグクライアント内の多くのアプリで現在も使われている基本のJavaScriptよりも高速に複雑な指示を実行できます(初期のブログで登場した「emberアプリ」を覚えていますか?)。CEFは基本的には、より効率的にコードを処理できるWebAssemblyを使用する特別な「ミニコンピューター」をクライアント内でエミュレートしています。WebAssemblyは多様なプログラミング言語に対応しているので、既存のコードの再利用も簡単になり、別のアプリとして実行するのではなく特別な「ミニコンピューター」で実行させるので、パフォーマンスの優位性も得られます。WebAssemblyは徐々にウェブ全体で浸透してきており、Chromiumでのサポートもリリースごとに改善されています。WebAssemblyが利用可能になることでクライアントが高速化し、これまでは不可能だったことができるようになります。
Web Workers
そしてWeb
Workersについてです。以前から、Chromiumのアプリは同期的に実行されており、一度に1行のコードを実行していました。言うなれば、工場の組み立てライン全体を1人の作業者が担当しているようなものです。その一方、Web
Worker“s”はチームの人数が拡大し、複数のコードのラインを同時に実行できるようになります。Chat
Web
Workerはチャットに関係するすべてのことを担当し、その一方でメインクライアントはあなたを試合に参加させることに集中します。なので、ティーモのビルドについて様々な提案をしてくるチャット好きなフレンドがいたとしても、その会話によってクライアントの速度が低下することがなくなります。さらに、Web
Workersはクライアントの高速化も行います。
既存のJavaScriptの処理が改善されていることから、これらの新機能を活用するために新たなコードを書かなくても、CEFをアップデートしただけでクライアントが高速化しています。クライアントのその他の部分の改善を続ける際にも、私たちはネイティブパフォーマンスの改善にふさわしい手法に集中することができます。
その他のアップデート
また、前回のブログの投稿以降に、試合終了時(EOG)の体験にも改善が行われました。何よりも、今でも発生している「データを待機中」ページで処理が進まなくなる問題が発生したときにデータを収集するコードを追加しました。本来なら今ほど時間がかかるはずはないので、これで問題を特定して遅延時間を改善することができます。また、パッチ11.17でページが完全に固まってしまう可能性を低下させる修正がリリースされました。パッチ11.19ではEOGをさらに加速させるために、ゲームエンジンの追加の修正が行われます。そして最後に、新機能チャレンジを統合して、この新たな機能がクライアントのパフォーマンスや安定性に影響を与えないようにチェックすることを楽しみにしています。
今後の予定
CEFのアップデートでクライアントが大幅に改善されることが証明されたので、より頻繁にアップデートを行う予定でスケジュールを組みます(1年半に1回ではなく!)。2021年中の予定に関しては、今後もクライアントの安定性の改善を優先し、チャレンジ担当チームと一緒にEOGの問題に対処し、大きなフラストレーションを生むバグに対処し、プレイヤーの体験を向上させるためにコードの改善を続けます。このクライアントクリーンアップキャンペーンの大きな節目にお付き合いいただきありがとうございます!それでは次のブログでお会いしましょう。