Яндекс: Драйверы AMD оптимизируют работу с Google Chrome и Microsoft Edge, игнорируя другие Chromium-браузеры

2023-03-18 8592 комментарии
Команда разработчиков Яндекс.Браузера обнаружила, что драйверы AMD для Windows оптимизируют работу с Google Chrome и Microsoft Edge, в то время как аналогичные оптимизации не применялись для других браузеров на базе Chromium

Краткая сводка

Команда разработчиков Яндекс.Браузера обнаружила, что драйверы AMD для Windows оптимизируют работу с Google Chrome и Microsoft Edge, в то время как аналогичные оптимизации не применялись для Яндекс.Браузера. Решение заключалось в использовании функции "мимикрии" под Google Chrome, что позволило улучшить производительность и стабильность работы Яндекс Браузера. Этот опыт может быть полезен для других браузеров на базе Chromium, которые еще не встроены в GPU-драйверы.

Информация о том, что драйверы AMD для Windows оптимизируют работу с браузерами Google Chrome и Microsoft Edge, позволила команде Яндекса улучшить производительность и стабильность собственного браузера, применив необычное решение. В этой статье мы расскажем о процессе исследования и оптимизации работы Яндекс Браузера.

Обнаружение проблемы

Разработчики Яндекс.Браузера постоянно ищут способы оптимизации и улучшения работы своего продукта. В ходе одного из обсуждений они заметили проблему с нестабильностью GPU-процесса, ответственного за быстрый рендеринг содержимого в браузере. Используя опыт предыдущих исследований, команда предположила, что драйверы AMD могут содержать оптимизации для Google Chrome и Microsoft Edge.

Чтобы проверить свою гипотезу, разработчики использовали особенность архитектуры Chromium. GPU-процесс работает в специальной песочнице, которая позволяет устанавливать хуки для перехватывания вызовов системных API и обрабатывать их в своем коде. Таким образом, они смогли подменить подстроку browser.exe на chrome.exe в значениях, возвращаемых функциями GetModuleFilenameA/GetModuleFilenameW и GetModuleFilenameExA/GetModuleFilenameExW.

После внедрения изменений, команда провела A/B-тестирование, включив оптимизацию для одной группы пользователей и отключив для другой. Результаты эксперимента были удивительны: у пользователей с видеокартами AMD из экспериментальной группы число падений GPU-процесса уменьшилось в 5,5 раз, потребление памяти GPU-процессом снизилось в среднем на 8%, а также незначительно ускорилось открытие веб-страниц в браузере и отзывчивость интерфейса.

Внедрение оптимизации в Яндекс.Браузер

Подтвержденная гипотеза указывала на то, что драйверы AMD действительно содержат оптимизации, применяющиеся в зависимости от названия исполняемого файла приложения – в данном случае для chrome.exe. Разработчики обратились к AMD с просьбой добавить Яндекс.Браузер в список приложений, к которым применяются данные оптимизации. Однако, такие изменения могут быть внедрены только в новых версиях драйверов, и это займет некоторое время.

Команда Яндекса не хотела ждать внедрения изменений со стороны AMD и приняла решение активировать функцию "мимикрии" под Google Chrome в GPU-процессе для всех пользователей на Windows. Если пользователь хочет проверить, работает ли данная оптимизация на его компьютере, достаточно посмотреть в графу Executable Path на служебной странице browser://gpu в Яндекс.Браузере (доступно с версии 22.9.0).

Заключение

Любое программное обеспечение работает в определенной среде и взаимодействует с другими компонентами, такими как операционная система, драйверы и другие программы. Учитывая особенности работы окружения, можно адаптировать свое программное обеспечение для получения улучшений в производительности и стабильности, подобно тому, как это сделала команда Яндекс.Браузера. Этот опыт может быть полезным также для других браузеров, основанных на Chromium, идентификация которых еще не встроена в GPU-драйверы. В результате, пользователи получают более быстрый и стабильный браузер, обеспечивающий удобное взаимодействие с веб-страницами.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте