preload

Aus wiki.archlinux.de

Wenn man ein System eben erst gestartet hat, und ein Programm startet, dann dauert dieser Programmstart eine gewisse Zeit. Wenn das Programm durchgelaufen ist, oder man es beendet hat, und man es irgendwann – während das System weiterlief – nochmals startet, startet das Programm ein wenig schneller. Dies ist darin begründet, dass das System die entsprechenden Dateien des Programms (genauer gesagt, den zur Ausführung bereiten Programmcode) im Arbeitsspeicher hält.

preload macht genau dies ebenfalls beim Systemstart. Hierzu greift es auf eine Datenbank von Programmen zurück, die durch simples benutzen der Programme generiert wird. preload „lernt“, welche Programme ein Anwender verwendet, und lädt die dazu gehörigen Dateien schon mal vorsorglich in den Arbeitsspeicher.

Da preload aufgrund seiner Funktionsweise Arbeitsspeicher beansprucht, ist es nicht sinnvoll, es einzusetzen, wenn man nur ein Gigabyte hat. Zwei bis Vier Gigabyte RAM sollte man schon mindestens besitzen, um die Vorzüge von preload voll ausschöpfen zu können.

Installation

preload ist im „community“-Repository vorhanden, und kann aus diesem mittels Pacman installiert werden.

pacman -S preload

Da preload ein Service ist, muss er noch gestartet werden. Folgender Befehl aktiviert den Service beim Boot.

systemctl enable preload

preload kann mit folgendem Befehl direkt gestartet werden, wenn das System nicht neu gestartet werden soll.

systemctl start preload

Verwendung

Man verwendet preload nicht direkt, sondern nutzt sein System ganz normal weiter, wie bisher auch. preload sammelt selbständig im Hintergrund Daten über das Nutzungsverhalten und baut seine Programmdatenbank auf.

Nach einigen Tagen bis zwei, drei Wochen ist preload so weit, dass man eine deutliche Geschwindigkeitssteigerung beim Erststart von Programmen feststellen kann.

Laut einem Test auf Techthrob.com (siehe Weblinks) beträgt der Geschwindigkeitszuwachs zwischen 23 Prozent beim Login bis hin zu 55 Prozent beim Start von Firefox. Durchschnittlich wird die Erststartzeit von Programmen mit preload um 40 Prozent reduziert.

Konfiguration

Die Voreinstellungen von preload sind gut gewählt, und müssen nicht verändert werden, wenn es dafür keinen triftigen Grund gibt. Will man dennoch die Konfiguration anpassen, so findet man diese in der Datei /etc/preload. Man sollte zudem nach einer Konfigurationsänderung ein paar Tage mit der neuen Konfiguration arbeiten, und beobachten, ob man eine Änderung feststellen kann.

Die Konfiguration gliedert sich in zwei Abschnitte, [model] und [system]. Im Abschnitt [model] befindet sich die Konfiguration des Vorlademodells, nach dem die Programme automatisch in den Arbeitsspeicher geladen werden. Im Abschnitt [system] befindet sich die Eigenkonfiguration von preload.

model

Das Vorladeverhalten von preload hängt von verschiedenen Parametern ab. Gemeinhin sollten die Werte nicht verändert werden, weil sie sinnvoll gewählt wurden. Wenn preload nicht vernünftig arbeiten sollte, man also nach ~3 Wochen keine Erststartverkürzung bei häufig genutzten Programmen feststellen kann, sollte man die Optionen in diesem Abschnitt anpassen.

Option Standard Funktion
cycle 20 Bestimmt, wie häufig preload Daten sammeln und Startwahrscheinlichkeits-Hochrechnungen ausführen soll. Es muss hier eine gerade Zahl eingetragen werden. Ein zu geringer Wert reduziert Performance und Stabilität des Systems.
usecorrelation true Bestimmt, ob der Korrelationskoeffizient berechnet und verwendet werden soll. Es wird derzeit davon ausgegangen, dass dies eine genauere Vorhersage von Programmen ermöglicht, die gestartet werden könnten.
minsize 2000000 Definiert in Byte ab welcher Mindestgröße eines ausführbereiten Programms dieses in den Arbeitsspeicher geladen werden soll. Ein zu hoher Wert macht preload ineffektiv, ein zu geringer Wert resultiert in hoher Systemlast, da preload mehr Prozesse überwacht.
memtotal
memfree
memcached
-10
50
0
Berechnungsgrundlage für den von preload für das Vorladen von Programmen maximal Teil verwendbaren Arbeitsspeichers. Dies wird anhand der Formel max[0,(TOTAL × memtotal + FREE × memfree)] + CACHED × memcached berechnet. TOTAL, FREE, und CACHED werden aus /proc/meminfo bezogen.

system

Neben des im Abschnitt [model] konfigurierten Verhaltens können hier preload-spezifische Einstellungen vorgenommen werden.

Option Standard Funktion
doscan true Bestimmt, ob die Prozessliste regelmäßig analysiert werden soll. Wenn hier false definiert wurde, wird die Entscheidung darüber, ein Programm vorzuladen, von preload aufgrund der bis zu diesem Zeitpunkt gesammelten Daten vorgenommen.
dopredict true Bestimmt, ob die ermittelten Programme vorgeladen werden sollen. Wenn hier false definiert wurde, werden die ermittelten Programme nicht vorgeladen, sondern die Ergebnisse lediglich in die Datenbank übertragen.
autosave 3600 Bestimmt das Säuber- und Speicherverhalten von preload. Wenn deaktiviert, wird die Datenbank nicht mehr automatisch gesäubert (nicht mehr vorhandene Dateien/Programme) und nur noch beim Beenden gespeichert. Es wird nicht empfohlen, autosave zu deaktivieren.
mapprefix /opt;/usr/;/lib;/var/cache/;!/ Bestimmt, aus welchen Verzeichnissen preload Dateien (bzw. Programme) vorladen soll. /path bedeutet: „Rekursiv ab diesem Verzeichnis“, /path/ bedeutet: „nur dieses Verzeichnis“, !/path bedeutet: „Rekursiv ab diesem Verzeichnis nicht“ und !/path/ bedeutet: „nur dieses Verzeichnis nicht“. Einträge werden mittels Semikolon voneinander getrennt.
exeprefix /opt;!/usr/sbin/;!/usr/local/sbin/;/usr/;!/ Vom Schema her wie mapprefix, allerdings gelten die Einträge hier nicht für ausführbare Dateien generell, sondern nur für Binärdateien.
maxprocs 30 Ermöglicht das gleichzeitige Vorladen. Wenn hier 0 eingestellt wird, wird lediglich ein einzelner Prozess zum Vorladen der Programme verwendet. gleichzeitiges Vorladen sorgt für bessere Performance, zu viele Prozesse mindern die Systemleistung.
sortstrategy 3 Definiert, nach welcher Strategie das Vorladen vorgenommen werden soll: 0 = nicht sortieren; 1 = nach Pfad sortieren; 2 = Nach inode sortieren; 3 = nach Datenblock sortieren. Den Zugriff nach Datenblock zu sortieren, ist die am weitesten entwickelte Methode, und wird für die meisten Linux-Dateisysteme empfohlen.

Siehe auch

Weblinks