Preload: Unterschied zwischen den Versionen
Zeile 24: | Zeile 24: | ||
# systemctl start preload.service | # systemctl start preload.service | ||
'''Starten via rc.conf (veraltet):''' | |||
<code>preload</code> in das DAEMONS-Array in der [[rc.conf]] eingetragen. | <code>preload</code> in das DAEMONS-Array in der [[rc.conf]] eingetragen. |
Version vom 21. Oktober 2012, 11:55 Uhr
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 Daemon ist, muss er noch gestartet werden.
Starten via systemd:
Folgender Befehl aktiviert den Daemon beim Boot.
# systemctl enable preload.service
Preload
kann mit folgendem Befehl gleich gestartet werden, wenn das System nicht neu gestartet werden soll.
# systemctl start preload.service
Starten via rc.conf (veraltet):
preload
in das DAEMONS-Array in der rc.conf eingetragen.
Ein direkter start ist über folgenden Befehl möglich, falls man das System nicht neu starten möchte:
# rc.d 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
- readahead-fedora – Bootvorgang beschleunigen
- ureadahead – Bootvorgang beschleunigen
- Firefox-Profile in Ramdisk auslagern – Firefox-Start beschleunigen
- Ramdisk – Einrichten einer Ramdisk