Login
Newsletter
Werbung

Mo, 28. Oktober 2019, 16:44

Software::Desktop::Gnome

Canonical beschleunigt Gnome-Shell

Ubuntu-Entwickler haben einige Geschwindigkeitsprobleme in der Gnome-Shell identifiziert und für Gnome 3.34 behoben. Weitere Verbesserungen sollen in den nächsten Versionen folgen.

Canonical

Laut einem Beitrag im Ubuntu-Forum haben Canonical-Entwickler bemerkt, dass die Gnome-Shell in Ubuntu 19.04, das auf Gnome 3.32 aufbaut, spürbar langsamer war als andere Desktopumgebungen. Als Grund wurde anfänglich der Einsatz von JavaScript vermutet, doch es stellte sich heraus, dass JavaScript nur etwa zehn Prozent des Codes in der Kombination von Gnome-Shell mit dem Window-Manager Mutter ausmacht und nicht für die beobachtete Langsamkeit verantwortlich war. Die nächste Vermutung war, dass die Software die CPU oder die Grafikkarte übermäßig belastete. Doch Messungen zeigten, dass das nicht der Fall war. Was sich stattdessen zeigte, war, dass die Prozessoren zu lange zur Untätigkeit gezwungen waren.

Die Entwickler konnten sich daher bei ihrer weiteren Suche auf die Messung der tatsächlich vergangenen Zeit konzentrieren, was im Artikel als »Echtzeit« bezeichnet wird. Da die Gnome-Shell und Mutter einen Glib-Event-Loop in jeweils einem einzelnen Thread abarbeiten, sind sie anfällig für Verzögerungen - jede längere Verzögerung kann dazu führen, dass sie einen der Frames auslassen, die das Bild auf dem Monitor ergeben. Dies äußert sich in einer für die Benutzer merklichen Verzögerung auf dem Monitor.

Durch die Messung der verschiedenen Verzögerungen kamen die Entwickler nicht weniger als einem halben Dutzend Fehler in Gnome auf die Spur, die in Gnome 3.34 korrigiert sind. Der erste Fehler führte zur Auslassung eines Frames, weil nach einer Verzögerung des Frame-Schedulings um einige Millisekunden die Zeit, zu der der Frame neu aufgebaut werden müsste, falsch berechnet wurde. Allein die Korrektur dieses Fehlers, der allerdings nicht immer auftrat, machte die Darstellung deutlich flüssiger.

Als zweites fanden die Entwickler heraus, dass unter X.org nahezu jeder Frame verzögert war, weil die Frame-Berechnung zu früh angesetzt wurde. Bei einer Bildfrequenz von 60 Hz war die Darstellung somit immer um deutlich spürbare 16 ms verzögert. Wayland war davon nicht betroffen. Ein anderer Fehler betraf dagegen nur Wayland. Das Problem war, dass in Mutter die Rate für die Darstellung des Mauszeigers auf 60 Hz eingestellt war. Dies konnte zu Problemen bis hin zu 100% CPU-Auslastung führen, wenn die Bildwiederholrate eine andere war.

Mutter hatte ein weiteres Problem, das bis jetzt erst teilweise gelöst ist. Dadurch verzögerten sich alle Eingabeereignisse bis zum nächsten Frame, bei 60 Hz also um bis zu 16 ms. Ein weitere Verzögerung wurde verursacht durch Workarounds für die proprietären Nvidia-Treiber unter X.org, die jetzt nicht mehr benötigt werden. Und ein weiteres Problem war, dass das »Picken«, mit dem ermittelt wird, worauf der Mauszeiger zeigt, mit OpenGL-Aufrufen gemacht wurde. Dies war äußerst ineffizient und provozierte zusätzliche Wartezeiten durch die nötige Synchronisation zwischen CPU und GPU.

Als Resultat ist die Gnome-Shell in Gnome 3.34 für die meisten Anwender deutlich schneller als bisher. Mindestens zwei weitere Probleme, die noch zu beheben sind, sind bereits bekannt. Bei der Verwendung von mehreren Monitoren kommt es zu Blockaden im Wayland-Backend, die merkliche Verzögerungen verursachen. Dies soll laut den Entwicklern in Gnome 3.36 und damit auch in Ubuntu 20.04 behoben sein. Das zweite Problem ist, dass immer noch nicht alle Verzögerungen in Mutter behoben sind. Hier kommen nach ersten Untersuchungen noch mehrere andere Fehler ins Spiel, doch auch dieser Punkt soll in Ubuntu 20.04 gelöst sein. Der Artikel schließt mit einer Reihe von Tipps, welche Fehler man bei der Suche nach Problemen vermeiden sollte, und einem Ausblick auf die weitere Arbeit. Die Optimierung der Gnome-Shell soll sich für Ubuntu 20.04 auf moderne und schnelle Hardware konzentrieren. Verbleibende Probleme, die ältere und langsamere Rechner betreffen, sollen danach angegangen werden und in Ubuntu 20.10 gelöst sein.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung