Open-Source-Alternative zu Vista Superfetch

Linux: Mit Preload Programme schneller laden

31.03.2008 von Juergen Donauer
Unter Linux kann der Daemon Preload Programmstarts deutlich beschleunigen. Die Preload-Software ist ein lernfähiger Readahead-Daemon, der im Hintergrund des Systems läuft und bisher ungebrauchten Ressourcen nutzt. Damit starten die Programme direkt aus dem RAM anstatt von der Festpatte und laden erheblich schneller.

Rechner von heute sind in der Regel mit schnellen Prozessoren und viel Arbeitsspeicher ausgerüstet. Arbeiten Sie nicht gerade mit speicherintensiven Mega-Applikationen, liegen diese Ressourcen oft brach. Dabei könnten diese helfen, Programmstarts schneller zu machen.

Unter Vista werden diese Techniken bereits unter dem Namen Superfetch eingesetzt. Dabei analysiert das Betriebssystem, welche Programme der Nutzer regelmäßig benötigt, und kann diese anschließend vorbereiten. Wenigen ist aber bekannt, dass dieses Konzept auch unter Linux funktioniert.

Die Lösung heißt Preload und funktioniert so: Die Software ist ein lernfähiger Readahead-Daemon, der im Hintergrund des Systems läuft. Das Programm beobachtet, welche Programme Sie oft benutzen, und legt diese vorab in den Cache. Starten Sie nun zum Beispiel OpenOffice,org, Firefox, Evolution oder Thunderbird, kommen Teile davon direkt aus dem RAM anstatt von der Platte. Somit lässt sich von vornherein nicht verwendeter Speicher gut nutzen.

Ungenutzte Ressourcen: Nach einem Start und Einloggen in KDE ist jede Menge ungenutzter RAM frei.

Installation

Bei vielen Distributionen schlummert der Daemon bereits in den Repositories, vorinstalliert ist er nur selten. Wem kein Preload-Paket zur Verfügung steht, der kann dies jedoch selbst kompilieren; der Quellcode liegt bei Sourceforge.net. Die Ubuntu-Familie stellt das Paket angenehmerweise zur Verfügung. Eine Installation ist denkbar simpel. Entweder Sie benutzen die üblichen Verdächtigen wie zum Beispiel Synaptic oder Adept, oder Sie legen selbst Hand an: sudo apt-get install preload.

Vorhanden: Viele Linux-Distributionen bieten die Software schon als Paket an.

Damit ist auch schon alles erledigt. Nach einer Installation startet sich der Daemon sofort und fängt an, seiner ihm bestimmten Arbeit nachzugehen.

Konfiguration

Der Warnhinweis „Never change a running system“ gilt auch hier: Solange Sie mit der Arbeit von Preload zufrieden sind und der Daemon keine Schwierigkeiten macht, ist keine Veränderung notwendig. Sollten aber Probleme auftreten, hilft es unter Umständen, die Konfiguration zu ändern.

Diese finden Sie wie bei Linux üblich in einer .conf-Datei, im Falle Preload und Ubuntu unter /etc/preload.conf. Zu jedem Parameter gibt es die dazugehörige Beschreibung. Sensibel ist der Beziehungs-Algorithmus (correlation); hier gehen die Meinungen der Entwickler auseinander. An Parametern wie diesen sollte man wirklich nur im Notfall und dann mit Bedacht schrauben.

Herzstück: Jeder Daemon läuft in der Regel nur so gut, wie er eingestellt ist.

:

Interessanter sind die Parameter memtotal, memfree und memcached. Das Programm stiehlt nicht wahllos RAM vom System, dies ist durch eine genaue Formel geregelt. Der maximal verfügbare Speicher für Preload errechnet sich so:

(Speicher Insgesamt * memtotal) + (Verfügbarer Speicher bei Start * memfree) + (Cache-Speicher * memcached)

Wir wollen auch einen Blick auf die Paramter mapprefix und exeprefix werfen. Beide Parameter haben dieselbe Syntax und bestimmen im Prinzip, welche Programme der Daemon vorladen darf und welche nicht.

Per Standard sieht unter Ubuntu zum Beispiel so aus: exeprefix = !/usr/sbin;!/usr/local/sbin;/usr;!/, wobei ein Ausrufezeichen mit „verboten“ gleichzusetzen ist. Steht nichts davor, ist ein Preload erlaubt. In unserem Beispiel wären also ausführbare Dateien in /usr/sbin, /usr/local/sbin und / verbotenes Gelände.

Starten, Stoppen und Überwachen von Preload

Wie bereit erwähnt, müssen Sie nach einer Installation des Ubuntu-Pakets den Daemon nicht händisch starten. Er trägt sich in die Init-Prozessliste mit S95 ein und ruft das Script /etc/init.d/preload auf. Als Schalter stehen Ihnen die selbsterklärenden Parameter {start|stop|restart|reload|force-reload} zur Verfügung.

Abgeknapst: Preload verwendet in der Testumgebung zirka 112 von 1024 MByte RAM.

Interessant sind außerdem die Dateien /var/log/preload.log und /var/lib/preload/preload.state. Wenn Sie sich die erste Datei mittels sudo tail –f /var/log/preload.log ansehen, bekommen Sie Auskunft über den von Preload benutzten Speicher. Die zweite Datei enthält genauere Informationen zu den einzeln gecachten Dateien.

Geschwindigkeitsgewinn

Nun geht es ans Eingemachte, und wir wollen testen, wie sich Preload auf die Startzeiten von Applikationen auswirkt. Dazu vergleichen wir einfach die Startzeiten der Texverarbeitung von OpenOffice.org. Selbstverständlich haben wir zwischen den einzelnen Tests einen kompletten Neustart durchgeführt, um gleiche Bedingungen zu schaffen. Der Start von oowriter nahm mit Preload 2,33 Sekunden in Anspruch. Ein Kaltstart des Programms benötigte 3,18 Sekunden. Das ist immerhin ein Geschwindigkeitszuwachs von zirka 27 Prozent.

Geht so: 3,18 Sekunden dauerte es, die OpenOffice.org-Textverarbeitung zu starten.
Performance-Schub: Mit Preload dauerte das Laden von oowriter nur 2,33 Sekunden.

Danach folgte noch ein handgestoppter Test, in dem der Desktop mit einigen Programmen im Autostart zu tun hatte. Hierzu gehörte OpenOffice.org, Konqueror, K3b, Amarok, Kaffeine, KTorrent und Dolphin. Mit Preload dauerte das Laden aller Applikationen zirka 36 Sekunden. Ohne den Readahead-Daemon brauchte das System 43 Sekunden. Immerhin holt das Vorladen 17 Prozent Geschwindigkeit heraus. Da Preload lernfähig ist und sich selbst optimiert, stellt sich der optimale Geschwindigkeitsgewinn erst mit der Zeit ein.

Weitere Informationen zu Preload

Der Daemon stammt vom Red-Hat-Entwickler Behdad Esfahbod. Ein interessantes Dokument zu Preload ist ebenfalls von ihm und kann hier als PDF-Datei heruntergeladen werden. Das Dokument ist interessant zu lesen. Es erklärt unter anderem die verwendeten Algorithmen und geht genauer auf die Abhängigkeiten sowie vieles mehr ein.

Fazit

Was scheinbare Kleinigkeiten of bewirken können ist schon faszinierend. Preload nimmt nach der Installation gerade mal 176 KByte Festplattenplatz ein, sorgt aber für spürbare Geschwindigkeitsschübe. Selbstverständlich macht das Programm Ihre CPU nicht schneller oder vergrößert die RAM-Riegel des Rechners. Preload optimiert lediglich die brachliegende Ressourcen aus. Allerdings ist die gefühlte höhere Geschwindigkeit des Computers deutlich zu merken.

Wer den Speicher seines Linux-Systems nicht bis zum Anschlag ausnutzt, sollte das Programm auf jeden Fall installieren; Zeit ist schließlich Geld. Auch wenn es jeden Tag nur ein paar Sekunden sind – Kleinvieh macht auch Mist. (mja)