Резултати от оптимизацията на 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 и резултати от рисуването на части от уеб-страници, а също така се отчита при рисуването само областта на страницата, видима за потребителя (няма смисъл да се извършва рисуване на части от страницата, покрити с друго съдържание).

Важен елемент на RenderingNG е изолирането на производителността при обработката на различни части от страниците, например, за изолиране на изчисления, свързани с показването на реклама в блокове iframe, показването на анимация, възпроизвеждането на звук и видео, превъртането на съдържанието и изпълнението на JavaScript.

Резултати от оптимизацията на Chromium, реализирани от проекта RenderingNG

Реализирани техники за оптимизация:

  • В Chrome 94 е предложен механизъм CompositeAfterPaint, който осигурява композиране на отделно нарисуваните части на уеб страниците и позволява динамично мащабиране на натоварването върху 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 — ефективен и надежден движок за възпроизвеждане на видео на уеб страниците. Тази година е реализирана възможността за показване на защитено съдържание с резолюция 4K. По-рано е добавена поддръжка за HDR.
  • Viz — отделни процеси за растеризиране (OOP-R — Извън процеса на растеризиране) и визуализация (OOP-D — Извън процеса на дисплейния композитор), които отделят визуализацията на интерфейса на браузъра от визуализацията на съдържанието на страниците. Проектът също така развива процеса SkiaRenderer, който използва специфични графични API за различни платформи (Vulkan, D3D12, Metal). Промяната позволи да се намали броят на сривовете поради проблеми в графичните драйвери шест пъти.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster