Результати оптимізації Chromium, реалізовані проектом RenderingNG

Розробники Chromium підбили перші підсумки запущеного 8 років тому проекту RenderingNG, націленого на проведення постійної роботи зі збільшення продуктивності, надійності та розширюваності 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.

Результати оптимізації Chromium, реалізовані проектом RenderingNG

Реалізовані техніки оптимізації:

  • У 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 разів знизити кількість крахів через проблеми у графічних драйверах.

Джерело: opennet.ru

Додати коментар або відгук