Die Optimierungsergebnisse von Chromium, die durch das RenderingNG-Projekt realisiert wurden

Die Chromium-Entwickler haben erste Ergebnisse des vor 8 Jahren gestarteten Projekts RenderingNG vorgelegt, das darauf abzielt, die Leistung, ZuverlÀssigkeit und Skalierbarkeit von Chrome kontinuierlich zu verbessern.

Zum Beispiel haben die im Chrome 94 veröffentlichten Optimierungen im Vergleich zu Chrome 93 die Ladeverzögerungen um 8 % reduziert und die Akkulaufzeit um 0,5 % verlĂ€ngert. Angesichts der GrĂ¶ĂŸe der Chrome-Nutzerbasis bedeutet dies weltweit eine Einsparung von mehr als 1400 Jahren CPU-Zeit pro Tag. Im Vergleich zu den Versionen der vergangenen Jahre rendert das moderne Chrome Grafiken ĂŒber 150 % schneller und stĂŒrzt bei problematischen GerĂ€ten in den GPU-Treibern sechs Mal seltener ab.

Zu den umgesetzten Methoden, die zu Leistungssteigerungen fĂŒhren, gehört die Parallelisierung von Rasterisierungsoperationen verschiedener Pixel auf der GPU-Seite und die aktivere Verteilung von Controllern auf verschiedene CPU-Kerne (JavaScript-AusfĂŒhrung, Seitenrollverarbeitung, Video- und Bilddecodierung, vorlĂ€ufige Inhaltsdarstellung). Ein hemmender Faktor bei der aktiven Parallelisierung ist die zunehmende Belastung der CPU, die sich in höheren Temperaturen und einem erhöhten Energieverbrauch niederschlĂ€gt. Daher ist es wichtig, ein optimales Gleichgewicht zwischen Leistung und Energieverbrauch zu erreichen. Zum Beispiel kann bei Akkubetrieb die Rendering-Geschwindigkeit geopfert werden, jedoch darf die Seitenrollverarbeitung in einem separaten Thread nicht geopfert werden, da eine verminderte ReaktionsfĂ€higkeit der BenutzeroberflĂ€che fĂŒr den Nutzer spĂŒrbar wird.

Die im Rahmen des Projekts RenderingNG implementierten Technologien verĂ€ndern den Ansatz zum Compositing grundlegend und ermöglichen es, adaptiv unterschiedliche Optimierungstechnologien fĂŒr Berechnungen auf GPU und CPU in Bezug auf bestimmte Teile von Seiten zu nutzen, wobei Faktoren wie Auflösung und Bildwiederholfrequenz sowie die UnterstĂŒtzung fortschrittlicher Grafik-APIs wie Vulkan, D3D12 und Metal berĂŒcksichtigt werden. Zu den Optimierungsbeispielen zĂ€hlt die aktive Nutzung von GPU-Textur-Caching und die Ergebnisse des Renderings von Teilen von Web-Seiten sowie die BerĂŒcksichtigung nur der Bereiche der Seite, die fĂŒr den Benutzer sichtbar sind (es macht keinen Sinn, Teile der Seite zu rendern, die von anderem Inhalt ĂŒberlagert werden).

Ein wichtiger Bestandteil von RenderingNG ist auch die Isolierung der Leistung bei der Verarbeitung verschiedener Teile von Seiten, zum Beispiel zur Isolierung von Berechnungen, die mit der Anzeige von Werbung in iframe-Blöcken, der Anzeige von Animationen, der Wiedergabe von Ton und Video, dem Scrollen von Inhalten und der AusfĂŒhrung von JavaScript verbunden sind.

Die Optimierungsergebnisse von Chromium, die durch das RenderingNG-Projekt realisiert wurden

Realisierte Optimierungstechniken:

  • In Chrome 94 wurde der Mechanismus CompositeAfterPaint vorgeschlagen, der das Compositing von separat gerenderten Teilen von Webseiten ermöglicht und eine dynamische Skalierung der GPU-Belastung erlaubt. Laut den von Nutzern gesammelten Telemetriedaten konnte durch die Anwendung des neuen Compositing-Systems die Verzögerung beim Scrollen um 8 % gesenkt, die InteraktionsreaktionsfĂ€higkeit um 3 % erhöht, die Rendergeschwindigkeit um 3 % gesteigert, der GPU-Speicherverbrauch um 3 % gesenkt und die Akkulaufzeit um 0,5 % verlĂ€ngert werden.
  • GPU Raster – ein Rasterisierungsmechanismus auf GPU-Seite, wurde 2020 fĂŒr alle Plattformen eingefĂŒhrt und ermöglichte eine durchschnittliche Beschleunigung der MotionMark-Tests um 37 %, und bei den Kategorien, die mit HTML verbunden sind, um 150 %. In diesem Jahr wurde GPU Raster um die Möglichkeit erweitert, GPU-Beschleunigung fĂŒr das Rendering von Canvas-Elementen zu nutzen, was zu einer 1000%igen Beschleunigung des Renderns von Linien und einer 130%igen Verbesserung der MotionMark 1.2-Testergebnisse fĂŒhrte.
  • LayoutNG – eine vollstĂ€ndige Überarbeitung der Layout-Algorithmen fĂŒr Seitenelemente, die darauf abzielt, ZuverlĂ€ssigkeit und Vorhersehbarkeit zu erhöhen. Das Projekt soll in diesem Jahr den Nutzern bereitgestellt werden.
  • BlinkNG – Refaktorisierung und Bereinigung der Blink-Engine durch Trennung der Rendering-Operationen in gesondert ausgefĂŒhrte Phasen zur Verbesserung der Caching-Effizienz und zur Vereinfachung des verzögerten Renderns unter BerĂŒcksichtigung der Sichtbarkeit von Objekten im Fenster. Die Arbeit soll in diesem Jahr abgeschlossen werden.
  • Auslagerung in separate Threads fĂŒr das Scrollen, Animationen und die Bilddecodierung. Das Projekt wird seit 2011 entwickelt und erreichte in diesem Jahr die FĂ€higkeit, animierte CSS-Transformationen und SVG-Animationen in separate Threads auszulagern.
  • VideoNG – eine effiziente und zuverlĂ€ssige Engine fĂŒr die Wiedergabe von Videos auf Webseiten. In diesem Jahr wurde die Möglichkeit zur Anzeige von geschĂŒtztem Inhalt in 4K-Auflösung realisiert. Zuvor wurde HDR-UnterstĂŒtzung hinzugefĂŒgt.
  • Viz – separate processes for rasterization (OOP-R – Out-of-process Raster) and rendering (OOP-D – Out of process display compositor) that separate the rendering of the browser interface from the rendering of page content. The project also develops the SkiaRenderer process, which uses platform-specific graphic APIs (Vulkan, D3D12, Metal). This change has reduced crashes due to graphics driver issues by a factor of six.

Quelle: opennet.ru

60GB SSD 8Gb DDR4