ブラウザーの実行ファイル名によって最適化を行う AMD の GPU ドライバー 46
ストーリー by headless
最適 部門より
最適 部門より
Yandex のエンジニアが Yandex Browser のパフォーマンスと安定性の問題を調べていたところ、AMD の GPU ドライバーの挙動がブラウザーの実行ファイル名によって変わることを発見したそうだ
(Neowin の記事、
Habr の記事)。
発見のきっかけとなったのは、Lenovo のノート PC に搭載されたタッチパッドでウェブページをスクロールする際、Yandex Browser ではひどくカクカクした動作になるのに対し、Google Chrome や Microsoft Edge では滑らかな動作がみられたことだ。Chrome も Yandex も Chromium ベースであり、タッチパッドイベントの処理もオープンソースの Chromium と違いはみられないという。そのため、何か他の部分に問題があると考えて調査を進め、実行ファイル名を「browser.exe」から「chrome.exe」に変えると問題が解消することを発見する。
ゲームアプリでは実行ファイル名によって GPU ドライバーが最適化を行うことが知られているが、Yandex は AMD の GPU ドライバーがブラウザーアプリでも実行ファイル名によって最適化を行うという仮説を立てて実験。Chromium のサンドボックス機能を利用して「GetModuleFilenameA/GetModuleFilenameW」関数と「GetModuleFilenameExA/GetModuleFilenameExW」関数が返す実行ファイル名をbrowser.exe」から「chrome.exe」に変更してテストを実行したところ、GPU プロセスのクラッシュ回数は 5.5 分の 1 に減り、メモリ使用量は 8% 減少したという。ウェブページの読み込みやユーザーインターフェイスの反応もわずかに向上したそうだ。
この結果を受けて Yandex は AMD に「browser.exe」を最適化対象の実行ファイル名リストに加えるよう要請する一方、Windows 版の Yandex Browser バージョン 22.9.0 以降では GPU プロセスで「chrome.exe」のふりをするよう変更したとのことだ。
発見のきっかけとなったのは、Lenovo のノート PC に搭載されたタッチパッドでウェブページをスクロールする際、Yandex Browser ではひどくカクカクした動作になるのに対し、Google Chrome や Microsoft Edge では滑らかな動作がみられたことだ。Chrome も Yandex も Chromium ベースであり、タッチパッドイベントの処理もオープンソースの Chromium と違いはみられないという。そのため、何か他の部分に問題があると考えて調査を進め、実行ファイル名を「browser.exe」から「chrome.exe」に変えると問題が解消することを発見する。
ゲームアプリでは実行ファイル名によって GPU ドライバーが最適化を行うことが知られているが、Yandex は AMD の GPU ドライバーがブラウザーアプリでも実行ファイル名によって最適化を行うという仮説を立てて実験。Chromium のサンドボックス機能を利用して「GetModuleFilenameA/GetModuleFilenameW」関数と「GetModuleFilenameExA/GetModuleFilenameExW」関数が返す実行ファイル名をbrowser.exe」から「chrome.exe」に変更してテストを実行したところ、GPU プロセスのクラッシュ回数は 5.5 分の 1 に減り、メモリ使用量は 8% 減少したという。ウェブページの読み込みやユーザーインターフェイスの反応もわずかに向上したそうだ。
この結果を受けて Yandex は AMD に「browser.exe」を最適化対象の実行ファイル名リストに加えるよう要請する一方、Windows 版の Yandex Browser バージョン 22.9.0 以降では GPU プロセスで「chrome.exe」のふりをするよう変更したとのことだ。