Vom RenderingNG-Projekt implementierte Chrom-Optimierungsergebnisse

Chromium-Entwickler haben die ersten Ergebnisse des vor 8 Jahren gestarteten RenderingNG-Projekts zusammengefasst, das auf die kontinuierliche Arbeit zur Verbesserung der Leistung, Zuverlässigkeit und Erweiterbarkeit von Chrome abzielt.

Beispielsweise führten in Chrome 94 im Vergleich zu Chrome 93 hinzugefügte Optimierungen zu einer Reduzierung der Seitenrendering-Latenz um 8 % und einer Verlängerung der Akkulaufzeit um 0.5 %. Basierend auf der Größe der Chrome-Benutzerbasis entspricht dies einer globalen Einsparung von über 1400 Jahren CPU-Zeit pro Tag. Im Vergleich zu früheren Versionen rendert das moderne Chrome Grafiken um mehr als 150 % schneller und ist sechsmal weniger anfällig für GPU-Treiberabstürze auf problematischer Hardware.

Unter den implementierten Methoden zur Erzielung von Leistungssteigerungen haben wir die Parallelisierung von Rasterisierungsvorgängen verschiedener Pixel auf der GPU-Seite und eine aktivere Verteilung von Prozessoren auf verschiedene CPU-Kerne (Ausführung von JavaScript, Verarbeitung von Seitenscrollen, Dekodierung von Videos und Bildern, proaktives Rendern von Inhalt). Der limitierende Faktor für die aktive Parallelisierung ist die zunehmende Belastung der CPU, die sich in steigenden Temperaturen und erhöhtem Stromverbrauch widerspiegelt, daher ist es wichtig, ein optimales Gleichgewicht zwischen Leistung und Stromverbrauch zu erreichen. Wenn Sie beispielsweise im Akkubetrieb arbeiten, können Sie die Rendering-Geschwindigkeit beeinträchtigen, Sie können jedoch nicht auf die Bildlaufverarbeitung in einem separaten Thread verzichten, da die Verringerung der Reaktionsfähigkeit der Benutzeroberfläche für den Benutzer spürbar ist.

Die im Rahmen des RenderingNG-Projekts implementierten Technologien verändern den Compositing-Ansatz völlig und ermöglichen den adaptiven Einsatz verschiedener Technologien zur Optimierung der GPU- und CPU-Berechnungen in Bezug auf einzelne Seitenteile unter Berücksichtigung von Funktionen wie Bildschirmauflösung und Bildwiederholfrequenz , sowie die Präsenz im System der Unterstützung für erweiterte Grafik-APIs wie Vulkan, D3D12 und Metal. Beispiele für Optimierungen umfassen die aktive Verwendung von Cache-GPU-Texturen und das Rendern von Ergebnissen von Teilen von Webseiten sowie die Berücksichtigung nur des für den Benutzer sichtbaren Bereichs der Seite beim Rendern (es macht keinen Sinn, Teile davon zu rendern). Seite, die von anderen Inhalten überdeckt wird).

Ein wichtiges Element von RenderingNG besteht auch darin, die Leistung bei der Verarbeitung verschiedener Teile von Seiten zu isolieren, beispielsweise um die Berechnungen zu isolieren, die mit der Bereitstellung von Anzeigen in Iframes, der Anzeige von Animationen, der Wiedergabe von Audio und Video, dem Scrollen von Inhalten und der Ausführung von JavaScript verbunden sind.

Vom RenderingNG-Projekt implementierte Chrom-Optimierungsergebnisse

Implementierte Optimierungstechniken:

  • Chrome 94 bietet den CompositeAfterPaint-Mechanismus, der das Zusammensetzen separat gerenderter Teile von Webseiten ermöglicht und es Ihnen ermöglicht, die Belastung der GPU dynamisch zu skalieren. Laut Benutzertelemetriedaten reduzierte das neue Compositing-System die Scroll-Latenz um 8 %, erhöhte die Reaktionsfähigkeit des Benutzererlebnisses um 3 %, erhöhte die Rendering-Geschwindigkeit um 3 %, reduzierte den GPU-Speicherverbrauch um 3 % und verlängerte die Akkulaufzeit um 0.5 %.
  • GPU Raster, eine GPU-seitige Rasterisierungs-Engine, wurde 2020 auf allen Plattformen eingeführt und hat MotionMark-Benchmarks um durchschnittlich 37 % und HTML-bezogene Benchmarks um 150 % beschleunigt. In diesem Jahr wurde GPU Raster um die Möglichkeit erweitert, GPU-seitige Beschleunigung zum Rendern von Canvas-Elementen zu nutzen, was zu einer 1000 % schnelleren Konturwiedergabe und 1.2 % schnelleren MotionMark 130-Benchmarks führte.
  • LayoutNG ist eine vollständige Neugestaltung der Layout-Algorithmen für Seitenelemente mit dem Ziel, die Zuverlässigkeit und Vorhersehbarkeit zu erhöhen. Das Projekt soll noch in diesem Jahr den Nutzern zugänglich gemacht werden.
  • BlinkNG – Refactoring und Bereinigen der Blink-Engine, Aufteilung der Rendering-Vorgänge in separat ausgeführte Phasen, um die Caching-Effizienz zu verbessern und Lazy Rendering zu vereinfachen, unter Berücksichtigung der Sichtbarkeit von Objekten im Fenster. Die Arbeiten sollen noch in diesem Jahr abgeschlossen werden.
  • Verschieben von Scroll-, Animations- und Bilddekodierungs-Handlern in separate Threads. Das Projekt wird seit 2011 weiterentwickelt und hat in diesem Jahr die Möglichkeit erhalten, animierte CSS-Transformationen und SVG-Animationen in separate Threads zu exportieren.
  • VideoNG ist eine effiziente und zuverlässige Engine zum Abspielen von Videos auf Webseiten. In diesem Jahr wurde die Möglichkeit implementiert, geschützte Inhalte in 4K-Auflösung anzuzeigen. HDR-Unterstützung wurde bereits hinzugefügt.
  • Viz – separate Prozesse für Rasterung (OOP-R – Out-of-Process Raster) und Rendering (OOP-D – Out-of-Process-Display-Compositor), die das Rendering der Browseroberfläche vom Rendering des Seiteninhalts trennen. Das Projekt entwickelt außerdem den SkiaRenderer-Prozess, der plattformspezifische Grafik-APIs (Vulkan, D3D12, Metal) verwendet. Durch die Änderung konnte die Anzahl der Abstürze aufgrund von Problemen mit Grafiktreibern um das Sechsfache reduziert werden.

Source: opennet.ru

Kommentar hinzufügen