PO-20878-Fotolia-Andrea_Danti.jpg

© Fotolia, Andrea Danti

Programmstarts durch Vorladen beschleunigen

Vormontage

Mit Readahead und Preload machen Sie der Festplatte Beine und laden Anwendungen doppelt so schnell wie bisher.

Die Performance von Festplatten hinkt jener der übrigen Komponenten deutlich hinterher: Die Ursachen dafür sind die mechanischen Bauteile und die oft ungünstige Verteilung der Daten auf der Platte. Je schneller die Entwicklung voranschreitet, desto größer klafft die Leistungsspalte zwischen Prozessor, Hauptspeicher und Festplatte auf. Damit entwickelt sich dieses Bauteil immer deutlicher zum Flaschenhals des Rechners. Während der Rechner binnen Nanosekunden Daten aus dem Hauptspeicher liest, misst man die Zugriffszeiten auf die Festplatte in Millisekunden. Das bedeutet eine Geschwindigkeitsdifferenz im Faktor 100.000 zwischen Hauptspeicher und Festplatte. Dieser Umstand macht sich besonders beim Starten von Applikationen unangenehm bemerkbar.

Angesichts der Tatsache, dass sich die Gigabyte-Preise für Hauptspeicher inzwischen auf einem sehr niedrigen Niveau von 12 bis 15 Euro bewegen, rüsten viele Hersteller ihre Rechner inzwischen mit viel mehr RAM aus, als diese im täglichen Gebrauch tatsächlich benötigen. Diesen Umstand nutzt Windows bereits seit XP, indem es das Nutzerverhalten analysiert und Programme bereits vor deren Start in den Hauptspeicher lädt. Aber auch Linux bietet einige Tools, die diese Technik umsetzten.

Das bereits in Ubuntu integrierte Readahead [1] soll in erster Linie die die Bootzeit verkürzen, eignet sich aber auch, um Programmstarts zu beschleunigen. Preload [2] hingegen merkt sich den Start von Applikationen und lädt diese im Hintergrund in den Hauptspeicher, was zukünftige Aufrufe erheblich beschleunigt. Der vorige Artikel dieses Schwerpunkts beschreibt den Einsatz von Readahead als Bootbeschleuniger und erklärt auch die technische Vorgehensweise. Dieser Artikel bezieht sich ausschließlich auf Methoden, den Start von Anwendungen im laufenden Betrieb zu beschleunigen.

Readahead

Canonical liefert Ubuntu bereits mit vorinstalliertem und aktiviertem Readahead aus. Es verwendet in der Grundeinstellung die vorhandenen Profile boot und desktop aus dem Verzeichnis /etc/readahead/. Das sie aber nicht an die Gewohnheiten des Nutzers angepasst wurden, arbeiten sie relativ ineffektiv. Damit Readahead zukünftig weiß, welche Programme es im Voraus laden soll, gilt es zunächst, die Profildatei desktop zu aktualisieren.

Öffnen Sie dafür eine Konsole und geben Sie sudo readahead-watch -o /Pfad/zur/Steuerdatei ein. Sie starten damit einen Daemon, der im Hintergrund alle folgenden Programmstarts aufzeichnet, und in die mit -o definierte Datei schreibt. Diese legt er aber erst dann an, wenn Sie den Dienst via sudo killall readahead-watch stoppen oder den Rechner herunterfahren. In der Grundeinstellung protokolliert das Programm sämtliche Dateiaufrufe. Um das Protokoll auf Verzeichnisse einzuschränken, erweitern Sie das Startkommando um den Pfad, etwa /usr/local/.

Um die ermittelten Dateien mit möglichst wenig Bewegungen des Festplattenlesekopfs in den Page-Cache einzulesen, sortiert Readahead diese in der Steuerdatei in der Reihenfolge des Speicherorts auf der Festplatte. Es empfiehlt sich jedoch, die generierte Datei vor dem Einsatz in einem beliebigen Texteditor zu überarbeiten, um beispielsweise das Vorladen temporärer Dateien oder unerwünschter Applikationen zu verhindern.

Um das erstellte Protokoll als Systemstandard zu verwenden, überschreiben Sie damit die vorhandene Datei /ect/readahead/desktop. Damit lädt Preload die aufgezeichneten Programme bereits beim Systemstart in den Hauptspeicher. Möchten Sie die Änderungen sofort übernehmen, tippen Sie in der Konsole sudo /etc/init.d/readahead-desktop restart. Eine zweite Anwendungsmöglichkeit erschließt readahead-list: Es lädt erstelle Profile sofort in den Hauptspeicher. Arbeiten Sie beispielsweise des Öfteren mit bestimmten Programmgruppen, die Sie aber nicht bei jedem Booten in den Hauptspeicher laden möchten, erstellen Sie wie beschrieben die Profildatei. Der Aufruf readahead-list /Pfad/zur/Steuerdatei lädt die darin enthaltenen Dateien direkt vor.

Preload

Preload findet sich zwar in den Ubuntu-Repositories, ist aber noch nicht vorinstalliert. Der Aufruf sudo apt-get install preload richtet es auf Ihrem Rechner ein und startet es danach automatisch. Da der Installer auch die notwendigen Runlevel-Skripte anlegt, lädt der Daemon auch direkt beim Booten mit. Anders als Readahead beschleunigt Preload lediglich den Start von Programmen, nicht aber den Boot-Prozess. Ein Daemon prüft dazu im 20-Sekunden-Rhythmus das System und protokolliert sämtliche Programmstarts. Das Ergebnis schreibt er in die Datei /var/lib/preload/preload.state. Diese Strategie hat jedoch einen kleinen Nachteil: Starten Sie eine Applikation kürzer als 20 Sekunden außerhalb des Überwachungszyklus, nimmt Preload sie nicht wahr. Wie die meisten Linux-Daemons verfügt auch Preload über eine Konfigurationsdatei, in der Sie diesen und andere Werte anpassen. Sie finden sie unter /etc/preload.conf (Abbildung 1).

Abbildung 1: In der Steuerdatei /etc/preload.conf legen Sie unter anderem fest, wie viel Speicher Preload im Höchstfall für sich in Anspruch nehmen darf.

Die voreingestellten Werte sollten Sie jedoch nur ändern, falls es mit diesen zu Problemen kommt. Als wichtigste Parameter finden sich in der preload.conf die Einstellungen für den maximal nutzbaren Speicher. Zwar steht im entsprechenden Abschnitt eine Formel, aus der sich dieser berechnen soll, jedoch konnten wir die daraus gewonnen Werte nicht nachvollziehen. Einige Versuche sorgten jedoch für Klarheit.

In der Grundeinstellung sieht das Programm praktisch den kompletten freien Speicher zum Puffern vor – tatsächlich nutzt es jedoch lediglich zwischen 150 und 200 MByte. Am effektivsten begrenzen Sie den maximal verfügbaren Speicher mit dem Prozentwert neben memfree. Senken Sie diesen auf beispielsweise 50, halbiert der Dienst nahezu den für ihn verfügbaren Speicherbereich. Um die Änderungen zu übernehmen, starten Sie den Dienst mit dem Aufruf /etc/init.d/preload restart neu.

Um kontinuierlich den aktuellen Status und Speicherverbrauch auszulesen, tippen Sie in der Konsole als Root tail -f /var/log/preload.log. Sie sehen dann in Echtzeit, wieviel Speicher Reload gerade belegt, wie viel es reserviert, und wie viele Dateien es zwischenspeichert (Abbildung 2). Der Konsolenaufruf free -m zeigt Ihnen die aktuelle Speicherbelegung des ganzen Systems an.

Abbildung 2: Die Datei /var/log/preload.log zeigt Ihnen stets den aktuellen Status des Caching-Daemons.

Anders als Readahead ist Preload ein relativ schlauer Dienst: Es puffert nicht einfach stur aufgerufene Programme, sondern beobachtet auch, wie oft Sie diese starten. Mit einer Halbwertszeit von einer Woche sinken Applikationen, die nicht gestartet wurden, in der Prioritätenliste. Damit vermeidet Preload, unnötig Speicher mit Applikationen zu belegen, die Sie selten oder nie mehr nutzen.

OpenSuse verwendet übrigens ebenfalls einen Service namens Preload, dabei handelt es sich jedoch um ein eigenes Projekt (siehe Kasten "Preload bei OpenSuse").

Preload bei OpenSuse

Auch OpenSuse bringt einen bereits nach der Installation aktivierten Dienst namens Preload [3] mit. Der hat jedoch nichts mit dem hier vorgestellten Projekt gemein, sondern ähnelt in seiner Arbeitsweise eher Readahead: Er hält wie dieses einige Skripte vor, allerdings im Verzeichnis /etc/preload.d/, die beim Booten und Starten von KDE Applikationen in den Hauptspeicher laden. Anders als Readahead generiert das OpenSuse-Preload aber für jede protokollierte Anwendung ein eigenes Skript, das diese beim Starten in den Hauptspeicher lädt. Derzeit fehlt für das Preload von OpenSuse eine halbwegs brauchbare Gebrauchsanweisung, die es dem Nutzer ohne umfangreiche Netzrecherchen ermöglicht, es an die eigenen Bedürfnisse anzupassen. Einen Hinweis, wie Sie Programmstarts damit nachverfolgen, liefert eine Seite bei OpenSuse.org [4].

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare
gefällt mir gut
Holger M., Samstag, 02. Mai 2009 08:04:04
Ein/Ausklappen

preload gefällt mir sehr gut..
ich habe es Ihrem Artikel im Einsatz... und muss sagen das es sehr gut funktioniert.
Die Konfiguration muss man sich aber erkämpfen..

guter Artikel !


Bewertung: 246 Punkte bei 69 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...