Oskar Welzl: Weblog zur Homepage

GDM Prefetch: Schneller zum Desktop

Gerade das Hochfahren des Systems und das Starten der grafischen Benutzeroberfläche nach dem Einloggen dauern unter GNU/Linux meist deutlich länger als unter proprietären Systemen, die von einem einzigen Hersteller kommen. Das ist eine zwingende Folge der Wahlfreiheit, die GNU/Linux auszeichnet. Trotzdem kann man an einigen Stellen spürbar nachbessern.

Zum Hintergrund: Im Vergleich zu GNU/Linux haben es Windows und OS X leicht. Jeder Teil des Betriebssystems weiß genau über die anderen Komponenten Bescheid, weil alles aus einem Guß ist und es keine Alternativen gibt. Die Abläufe lassen sich so viel besser koordinieren. Ein gutes Beispiel ist der Login-Vorgang:

Während Windows auf meinen Benutzernamen und mein Kennwort wartet, rattert die Festplatte ununterbrochen weiter. Kein Wunder: Egal was ich beim Login eingebe, es ist ziemlich klar, welche Programme und Dateien nachher benötigt werden. Logischerweise werden diese Dateien daher gleich geladen und im Hintergrund gestartet, damit anschließend alles schneller geht.

Bei GNU/Linux ist das von Grund auf anders: Ich kann mich beim Login für Gnome, KDE, Fluxbox, Xfce oder irgendeine andere Desktop-Umgebung entscheiden; möglich ist auch, daß ein Systemadministrator pro Benutzer andere Desktop-Umgebungen eingerichtet hat. Im Ergebnis bedeutet das: Erst nachdem Benutzername und Kennwort eingetippt und bestätigt sind ist klar, welche Programme und Dateien benötigt werden. Vorher sitzen vier Prozessorkerne à 1,4 GHz gelangweilt rum und sind ausschließlich damit beschäftigt, die Tastatureingaben beim Login zu verarbeiten.

Gottseidank läßt sich dieses Verhalten anpassen: Das Login-Programm GDM zum Beispiel kann so eingerichtet werden, daß es schon während des Logins alle Dateien (Programme, Bibliotheken, Schriften,...) lädt, die man in der Datei /etc/X11/gdm/gdmprefetchlist angibt. Schöne Sache. Nur: Wie befüllt man diese Prefetch-Liste? Mit anderen Worten: Woher weiß ich, welche Systembibliotheken und Hilfsdateien geladen werden müssen? Zwar gibt es eine Voreinstellung, die von GDM mitinstalliert wird. Die ist allerdings nicht nur sehr rudimentär, sonder de facto nutzlos, weil eben kein GDM-Entwickler wissen kann, was nach meinem Login auf meinem Rechner passieren wird.

Lösung: selber basteln. Mit dem Befehl lsof -u name bekommt man eine Liste sämtlicher Dateien, die für Prozesse des Benutzers „name“ (muß eben durch den eigenen Login-Namen ersetzt werden) geöffnet sind. Ein bißchen awk-Zauberei bringt diese Liste in ein vernünftiges Format, sortiert sie und befreit sie von unnötigen Versionsangaben bei Bibliotheken:

lsof -u name | awk '$4 ~ "(mem|txt)" {sub(".so(.[0-9]+)+", ".so", $9); print $9}' | sort -uo /tmp/prefetch-files.lst

Dieses Wundermittel habe ich im gentoo-Forum gefunden. Man läßt es laufen, nachdem man den üblicherweise verwendeten Desktop ohne prefetch gestartet hat und verwendet das Ergebnis (/tmp/prefetch-files.lst) als neue gdmprefetchlist. Der Witz dabei: Wenn man z.B. schon mal Firefox und Evolution startet und die Befehlszeile erst dann laufen läßt, werden auch die für diese Programme benötigten Dateien mitgeladen und der Start entsprechend beschleunigt. Bei viel RAM (und das hab ich) kann sich das auszahlen, wenn man ohnehin fast immer die gleichen Applikationen verwendet.

 
gagalop meinte am :
*schnorchl*
ossi1967 antwortete am :
AUFWACHEEEN!!!

Darf ich Dich kurz aufwecken?

 
clez meinte am :
Warum nicht gleich einfacher?
KDM und GDM sind zwar mächtig, aber brauchen ja auch selbst schon länger um zu starten. Gut, KDM lädt bereits libs die KDE später benötigt, GDM etwas weniger von GNOME, aber Zeit kosten sie beide. Bin deshalb vor längerer Zeit auf "slim" umgestiegen. Meine Fluxbox benötigt die KDE und Gnome libs ohnehin nicht bzw. erst bei Start mancher GTK+ oder KDE-nahen Anwendung, wobei gerade GTK+ Anwendungen bei mir dazu tendieren, statisch gelinkt ohnehin schneller zu sein... 
ossi1967 antwortete am :
Wegen des Kaffees

Das wurde ich jetzt schon 2x gefragt. Die Antwort ist ganz einfach: Kaffee.

Ich komm heim, schalt den Rechner ein, geh in die Küche, werf die Espressomaschine an, wart bis sie vorgeheizt hat, füll den Kaffee ein, drück aufs Knöpfchen, wart bis die Tasse voll ist, geb etwas Milch … Du hast ein Bild. ;)

Während dieser Zeit ist GDM schon längst fertig - und es bringt mir gar nix, schnellere Lösungen zu verwenden, wenn ich ohnehin in der Küche steh. Erst wenn ich zurück komme und meinen Benutzernamen und mein Kennwort eingebe, dann solls schnell gehen.

Gnome bin ich halt auch gwohnt, ich probier hin und wieder mal was anderes, komm aber immer wieder zurück.

 
Weitere Links zu …
GDM: