Firefox Snap soll schneller starten
Fr, 27. Mai 2022, Ralf Hersel
Seit Ubuntu 22.04 LTS wird der Webbrowser Firefox als Snap-Paket ausgeliefert. Dadurch dauert der Erststart der Anwendung länger als üblich. In einem Blog-Post erläutert Canonical Mitarbeiter Oliver Smith nun, warum das so ist und welche Pläne es gibt, dieses Startverhalten zu beschleunigen.
Smith nennt drei Gründe, warum man sich für das Snap-Format bei Firefox entschieden hat:
Es verbessert die Sicherheit, bietet versionsübergreifende Kompatibilität und verkürzt die Zeit, bis Verbesserungen von Mozilla in die Hände der Nutzer gelangen.
Derzeit hat diese Entscheidung Nachteile, wenn es um die Leistung geht, vor allem beim ersten Start von Firefox nach einem Systemneustart. Ein Teil davon ist auf die inhärente Natur von Sandboxing zurückzuführen. Bei Canonical ist man der Meinung, dass es noch erhebliche Möglichkeiten gibt, die Startzeiten zu verbessern.
Bei den Startzeiten muss man zwischen Kaltstart nach Neuinstallation, Kaltstart und Warmstart unterscheiden. Bei einem Kaltstart ist Firefox vollständig eingerichtet, lediglich die Bibliotheken wurden noch nicht geladen. Diese Situation findet man unmittelbar nach dem Hochfahren des Rechners vor. Auf mittlerer Hardware (Thinkpad X240) misst Canonical dabei eine Zeit von 15 Sekunden. So lange möchte niemand warten.
In seinem Beitrag identifiziert Smith vier Hauptbereiche, die für die Startzeit verantwortlich sind und damit Potenzial für Verbesserungen bieten:
Das Snap-Paket wird in ein komprimiertes Squashfs gepackt, was auf ressourcenbeschränkten Systemen wie dem Raspberry Pi einen Engpass darstellen kann. Für Firefox, der während des Starts ziemlich viel I/O benötigt, erzeugt dies einen spürbaren Overhead, wenn er nach Dateien im Squashfs sucht. Canonical möchte untersuchen, wie die Reihenfolge der Inhalte im Squashfs verbessert werden kann, um die Suchzeiten zu verkürzen.
Beim Testen auf einem Raspberry Pi wurde festgestellt, dass der aktuelle Firefox-Snap nicht feststellen kann, welchen GPU-Treiber er in seinem glxtest-Programm verwenden soll. Dies führt dazu, dass Firefox mit dem Software-Renderer startet, was einen erheblichen Overhead bei der Shader-Kompilierung bedeutet. Dies wurde auch auf AMD-GPUs beobachtet.
Firefox erstellt eine Kopie aller Erweiterungen, die mit dem Firefox-Paket gebündelt sind, in ein benutzerspezifisches Verzeichnis beim ersten Start für jeden Benutzer. Dies geschieht, indem man jede Erweiterung durchgeht und Block für Block kopiert. Das Snap bündelt 98 Sprachpakete, die eine ganze Weile brauchen, um in das Benutzerverzeichnis kopiert zu werden. Vor allem, weil die Sprachpakete aus einem komprimierten Squashfs-Image gelesen werden.
Wenn Firefox confined ist, wird viel Zeit damit verbracht, alle möglichen Icon-Themen, Schriftkonfigurationen und verfügbaren Schriftarten zu entdecken. Dies ist nicht der Fall, wenn Firefox ohne Confinement läuft und stattdessen einfach das lädt, was er braucht.
Diese vier Probleme sind die derzeitigen Schwerpunkte, auf die Canonicals Bestrebungen abzielen, um den Kaltstart von Firefox zu beschleunigen.
Quelle: https://ubuntu.com/blog/how-are-we-improving-firefox-snap-performance-part-1