Результаты оптимизации Chromium, реализованные в рамках инициативы RenderingNG
8 октября 2021 года
Разработчики Chromium подвели первые итоги запущенного 8 лет назад проекта RenderingNG (Архивная копия от 20 октября 2021 на Wayback Machine), нацеленного на проведение постоянной работы по увеличению производительности, надёжности и расширяемости Chrome.
Например, добавленные в выпуске Chrome 94 оптимизации по сравнению с Chrome 93 позволили на 8% сократить задержки при обработке страниц и на 0.5% увеличить время автономной работы от аккумулятора. С учётом размера пользовательской базы Chrome данные показатели в глобальном масштабе выражаются в экономии более 1400 лет процессорного времени каждый день. По сравнению с версиям прошлых лет современный Chrome отрисовывает графику быстрее более чем на 150% и 6 раз меньше подвержен крахам в GPU-драйверах на проблемном оборудовании.
Среди реализованных методов, позволяющих добиться прироста производительности отмечено распараллеливание операций растеризации разных пикселей на стороне GPU и более активное разнесение обработчиков по разным ядрам CPU (выполнение JavaScript, обработка прокрутки страницы, декодирование видео и изображений, упреждающая отрисовка контента). Сдерживающим фактором при активном распараллеливании является возрастание нагрузки на CPU, которая отражается ростом температуры и повышением энергопотребления, поэтому важно добиться оптимального баланса между производительностью и энергопотреблением. Например, при работе от аккумулятора можно пожертвовать скоростью отрисовки, но нельзя жертвовать обработкой прокрутки в отдельном потоке, так как снижение отзывчивости интерфейса станет заметно пользователю.
Реализованные в рамках проекта RenderingNG технологии полностью меняют подход к композитингу и позволяют адаптивно задействовать разные технологии оптимизации вычислений на GPU и CPU в привязке к отдельным частям страниц, учитывая такие особенности как разрешение и частота обновления экрана, а также наличие в системе поддержки продвинутых графических API, таких как Vulkan, D3D12 и Metal. В качестве примеров оптимизаций упоминается активное использование кэширования текстур GPU и результатов отрисовки частей web-страниц, а также учёт при отрисовке только области страницы, видимой пользователю (нет смысла выполнять отрисовку частей страницы, перекрытых другим содержимым).
Важным элементом RenderingNG также является изоляции производительности при обработке разных частей страниц, например, для изоляции вычислений, связанных показом рекламы в блоках iframe, отображенем анимации, воспроизведением звука и видео, прокруткой содержимого и выполнением JavaScript.
Реализованные техники оптимизации:
- В Chrome 94 предложен механизм CompositeAfterPaint, обеспечивающий композитинг раздельно отрисованных частей web-страниц и позволяющий динамически масштабировать нагрузку на GPU. В соответствии с данными, полученными от пользователей в результате сбора телеметрии, применение новой системы композитинга позволило снизить задержки при прокрутке на 8%, повысить отзывчивость взаимодействия с пользователем на 3%, увеличить скорость отрисовки на 3%, снизить потребление памяти GPU на 3% и продлить время автономной работы на 0.5%.
- GPU Raster - механизм растеризации на стороне GPU, был внедрён для всех платформ в 2020 году и позволил ускорить прохождение тестов MotionMark в среднем на 37%, а категорий, связанных с HTML, на 150%. В этом году GPU Raster был дополнен возможностью использования ускорения на стороне GPU для отрисовки элементов Canvas, что привело к ускорению отрисовки контуров на 1000%, а прохождения тестов MotionMark 1.2 на 130%.
- LayoutNG - полная переработка алгоритмов раскладки элементов страниц, нацеленная на повышение надёжности и предсказуемости.
Проект планируют довести до пользователей в этом году.
- BlinkNG - рефакторинг и чистка движка Blink с разделением операций отрисовки в отдельно выполняемые фазы для повышения эффективности кэширования и упрощения отложенной отрисовки с учётом видимости объектов в окне. Работу планируется завершить в этом году.
- Вынос в отдельные потоки обработчиков прокрутки, анимации и декодирования изображений. Проект развивается с 2011 года и в этом году достиг возможности выноса в отдельные потоки анимированных CSS-трансформаций и анимации SVG.
- VideoNG - эффективный и надёжный движок для воспроизведения видео на web-страницах. В этом году реализована возможность отображения защищённого контента с разрешением 4K. Ранее была добавлена поддержка HDR.
- Viz - отдельные процессы для растеризации (OOP-R - Out-of-process Raster) и отрисовки (OOP-D - Out of process display compositor), а также процесс SkiaRenderer, использующий специфичные для разных платформ графические API (Vulkan, D3D12, Metal) и отделяющий процесс отрисовки интерфейса браузера от отрисовки содержимого страниц. Изменение позволило в 6 раз снизить число крахов из-за проблем в графических драйверах.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.