Edit: 25.11.2011: Wort im Titel ausgetauscht, damit der Titel einen Sinn ergibt (“für” -> “gegen”)
Wahrscheinlich wird es nicht nur mir so ergangen sein:
Irgendwann während der Entwicklungsphase von Ubuntu 11.10 bzw. Unity 4.x verhielt sich letzteres nach einem der vielen Updates plötzlich deutlich zäher als die Unity-Version aus Ubuntu 11.04. Diese Zähigkeit lies sich auch durch Änderungen per CCSM nicht beseitigen und wurde auch durch weitere offizielle Updates nicht wirklich beseitigt.
Als ich gestern im Unity-Quellcode-Repository unter Launchpad nachschaute, welche Änderungen in die kommende Unity-Version bisher eingebaut wurden, fiel mir in der Übersicht das private Repository von Daniel van Vugt ins Auge:
Fix major performance regressions due to unnecessary UnityFBO binding (LP: #861061) (LP: #880707)
Bei näherem Hinsehen entpuppte sich die Änderung als der Bugfix auf den ich seit der Freigabe von Ubuntu 11.10 gewartet habe:
UnityFBO was being bound even when not required. This caused major lag in glPaintOutput, which slowed down all rendering. This was seen in reduced framerates in apps (LP: #861061) and significantly worse screen tearing with Unity 4.x compared to 3.x (LP: #880707).
Da Launchpad es sehr leicht ermöglicht Diff-Dateien der einzelnen Revisionen herunterzuladen, habe ich mir mal den Spaß erlaubt und habe für mich persönlich eine Version von Unity mit diesem Bugfix erstellt. Da der Fix nur wenige Zeilen Code verändert, lies er sich problemlos auf den Quellcode der aktuellen Version von Unity aus den Proposed-Quellen anwenden.
Nachdem der Build-Prozess dann fertig durchgelaufen und die neuen Unity-Pakete installiert waren, war die Zähigkeit des Desktop auf einmal komplett verschwunden. Das Scrolling in Firefox ist wieder flüssig und vergleichbar mit einem Desktop ohne Compositing-Manager. Auch ist das Tearing komplett verschwunden.
Um auf meinen betreuten Rechnern nicht jedes Mal den Turnschuh bzw. Auto-Admin zu spielen, habe ich ein PPA angelegt und die gefixte Version dort hochgeladen:
Launchpad PPA – Unity 4.24 with fix for performance regression
Hinzufügen lässt sich das PPA über den folgenden Befehl:
sudo add-apt-repository ppa:glasen/unity-performance-fix
Danach muss man nur den üblichen Zweizeiler (apt-get update und apt-get upgrade) ausführen und sich aus -und wieder einloggen.
Um die “Schwuppdizität*” möglicherweise noch weiter zu erhöhen (Kommt auf das System an), kann man folgende Einstellung im CCSM ausprobieren:
- OpenGL -> Vsync an (Vermeidet das Tearing). Mit dem proprietären ATI-Treiber muss das Vsync aber deaktivieren, da ansonsten, unter anderem, das Verschieben der Fenster mehr als ruckelig ist.
- Composite -> Option “Aktualisierungsrate erkennen” ausschalten.
- Composite -> Den Wert der Aktualisierungsrate auf einen höheren Wert als 60 (Ich habe z.B. 180 genommen) stellen. Als Faustregel gilt, immer ein ganzzahliges Vielfaches der tatsächlichen Aktualisierungsrate (Neudeutsch “VSync Frequenz”) nehmen. Bei TFT-Monitoren ist diese in der Regel 60Hz. Durch diesen kleinen Eingriff fühlt sich der Desktop nochmals um einiges flüssiger an.
* Der Begriff von der wurde “c’t” erfunden und ist eine Art Eindeutschung des englischen Wortes “Performance”. Damit ist nicht nur die gemessene Geschwindigkeit eines Systems gemeint, sondern auch die gefühlte Geschwindigkeit.
Ich habe die gefixte Version auf zwei Notebooks mit einem Intel GMA X3100-Grafikchip und einem Desktop-Rechner mit einer Radeon HD4650 getestet. Bei den Intel-Notebooks war ein, mehr nur als spürbarer, Unterschied in der Zähigkeit zu bemerken. Bei letzterem war der Unterschied nicht so dramatisch, aber immer noch spürbar.