Wyniki optymalizacji Chromu wdrożone w ramach projektu RenderingNG

Deweloperzy Chromium podsumowali pierwsze rezultaty rozpoczętego 8 lat temu projektu RenderingNG, mającego na celu ciągłe prace nad zwiększeniem wydajności, niezawodności i rozszerzalności Chrome.

Na przykład optymalizacje dodane w przeglądarce Chrome 94 w porównaniu z przeglądarką Chrome 93 spowodowały zmniejszenie opóźnienia renderowania strony o 8% i wydłużenie czasu pracy baterii o 0.5%. Biorąc pod uwagę wielkość bazy użytkowników przeglądarki Chrome, stanowi to globalną oszczędność czasu procesora wynoszącą ponad 1400 lat każdego dnia. W porównaniu do poprzednich wersji, nowoczesny Chrome renderuje grafikę ponad 150% szybciej i jest 6 razy mniej podatny na awarie sterowników GPU na problematycznym sprzęcie.

Wśród wdrożonych metod osiągnięcia wzrostu wydajności zauważyliśmy równoległość operacji rasteryzacji różnych pikseli po stronie GPU i bardziej aktywną dystrybucję procesorów pomiędzy różnymi rdzeniami procesora (wykonywanie JavaScript, przetwarzanie przewijania stron, dekodowanie filmów i obrazów, proaktywne renderowanie treść). Czynnikiem ograniczającym aktywną równoległość jest rosnące obciążenie procesora, które znajduje odzwierciedlenie w rosnących temperaturach i zwiększonym zużyciu energii, dlatego ważne jest osiągnięcie optymalnej równowagi między wydajnością a zużyciem energii. Na przykład, pracując na zasilaniu bateryjnym, możesz poświęcić prędkość renderowania, ale nie możesz poświęcić przetwarzania przewijania w osobnym wątku, ponieważ zmniejszenie responsywności interfejsu będzie zauważalne dla użytkownika.

Technologie wdrożone w ramach projektu RenderingNG całkowicie zmieniają podejście do compositingu i pozwalają adaptacyjnie wykorzystywać różne technologie w celu optymalizacji obliczeń na GPU i CPU w stosunku do poszczególnych części stron, biorąc pod uwagę takie cechy jak rozdzielczość ekranu i częstotliwość odświeżania , a także obecność w systemie obsługi zaawansowanych API graficznych, takich jak Vulkan, D3D12 i Metal. Przykładami optymalizacji jest aktywne wykorzystanie buforowania tekstur GPU i wyników renderowania części stron internetowych, a także uwzględnienie podczas renderowania tylko obszaru strony widocznego dla użytkownika (nie ma sensu renderować części strony) strony, które są objęte inną treścią).

Ważnym elementem RenderingNG jest także izolowanie wydajności podczas przetwarzania różnych części stron, na przykład izolowanie obliczeń związanych z wyświetlaniem reklam w ramkach iframe, wyświetlaniem animacji, odtwarzaniem audio i wideo, przewijaniem treści i wykonywaniem JavaScript.

Wyniki optymalizacji Chromu wdrożone w ramach projektu RenderingNG

Wdrożone techniki optymalizacyjne:

  • Chrome 94 oferuje mechanizm CompositeAfterPaint, który umożliwia składanie oddzielnie renderowanych części stron internetowych i pozwala na dynamiczne skalowanie obciążenia procesora graficznego. Według danych telemetrycznych użytkowników nowy system komponowania zmniejszył opóźnienia przewijania o 8%, zwiększył czas reakcji użytkownika o 3%, zwiększył prędkość renderowania o 3%, zmniejszył zużycie pamięci GPU o 3% i wydłużył czas pracy baterii o 0.5%.
  • GPU Raster, silnik rasteryzacji po stronie procesora graficznego, został wprowadzony na wszystkich platformach w 2020 roku i przyspieszył testy porównawcze MotionMark średnio o 37% i testy porównawcze związane z HTML o 150%. W tym roku GPU Raster został udoskonalony o możliwość wykorzystania akceleracji po stronie GPU do renderowania elementów Canvas, co skutkuje o 1000% szybszym renderowaniem konturów i 1.2% szybszymi wynikami testów porównawczych MotionMark 130.
  • LayoutNG to całkowite przeprojektowanie algorytmów układu elementów strony, mające na celu zwiększenie niezawodności i przewidywalności. Projekt ma zostać udostępniony użytkownikom jeszcze w tym roku.
  • BlinkNG - refaktoryzacja i czyszczenie silnika Blink, podzielenie operacji renderowania na oddzielnie wykonywane fazy w celu poprawy wydajności buforowania i uproszczenia leniwego renderowania, z uwzględnieniem widoczności obiektów w oknie. Zakończenie prac zaplanowano na ten rok.
  • Przenoszenie procedur obsługi przewijania, animacji i dekodowania obrazu do oddzielnych wątków. Projekt rozwija się od 2011 roku i w tym roku osiągnął możliwość eksportu animowanych transformacji CSS i animacji SVG do osobnych wątków.
  • VideoNG to wydajny i niezawodny silnik do odtwarzania wideo na stronach internetowych. W tym roku wdrożono możliwość wyświetlania chronionych treści w rozdzielczości 4K. Obsługa HDR została dodana wcześniej.
  • Mianowicie - oddzielne procesy rasteryzacji (OOP-R - Raster pozaprocesowy) i renderowania (OOP-D - Kompozytor wyświetlania poza procesem), oddzielające renderowanie interfejsu przeglądarki od renderowania zawartości strony. W ramach projektu rozwijany jest także proces SkiaRenderer, który wykorzystuje interfejsy graficzne specyficzne dla platformy (Vulkan, D3D12, Metal). Zmiana umożliwiła 6-krotne zmniejszenie liczby awarii spowodowanych problemami w sterownikach graficznych.

Źródło: opennet.ru

Dodaj komentarz