preload

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Einen Editor öffnen

  3. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Installation
  2. Benutzung
  3. Konfiguration
  4. Vergleich zu ureadahead
  5. Links

Preload 🇬🇧 ist ein adaptiver, vorauslesender Dämon. Er beobachtet Anwendungen die ein Benutzer startet, sagt auf Grund einer Analyse dieser Daten vorher, welche Anwendungen Benutzer starten werden und lädt diese Binärdateien und deren Abhängigkeiten in den Speicher, damit sie schneller gestartet werden. Die Geschwindigkeit des Systemstarts wird mit Preload nicht beeinflusst.

Da Preload Arbeitsspeicher benötigt, um den Programmcode zu speichern, sollte das System auf alle Fälle mehr als 1 GB Arbeitsspeicher haben.

Der Geschwindigkeitszuwachs kann bis zu 55 % betragen. Dies ist allerdings nicht gleich nach der Installation feststellbar. Preload braucht ein paar Tage bzw. ein oder zwei Wochen, bis eine verlässliche Statistik erstellt wurde. Diese Statistik nutzt Preload, um den Code der entsprechenden Programme in den Speicher zu laden.

Installation

Preload kann direkt aus den Ubuntu-Paketquellen heraus installiert [1] werden.

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install preload 

sudo aptitude install preload 

Benutzung

In der Regel braucht man Preload nur zu installieren. Das Programm läuft automatisch im Hintergrund und erstellt seine Statistik.

Konfiguration

Die Voreinstellungen von Preload können in der Regel so belassen werden. Für eine erweiterte Konfiguration muss die Datei /etc/preload.conf geöffnet und editiert[2] werden. Eine neue Konfiguration muss allerdings ein paar Tage beobachtet werden, da ja erst neue Statistiken erstellt werden.

Folgende Konfigurationen sind im Sektor model der Konfigurationsdatei möglich:

Sektor model
Option Standard Funktion
cycle 20 Bestimmt, wie häufig preload Daten sammeln und Wahrscheinlichkeits-Hochrechnungen des Starts ausführen soll. Es muss hier eine gerade Zahl eingetragen werden. Ein zu geringer Wert reduziert Geschwindigkeit und Stabilität des Systems.
usecorrelation true Bestimmt, ob der Korrelations-Koeffizient 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 Teil des Arbeitsspeichers, der von preload maximal für das Vorladen von Programmen verwendet werden soll. Dies wird anhand der Formel max[0,(TOTAL × memtotal + FREE × memfree)] + CACHED × memcached berechnet. TOTAL, FREE, und CACHED werden aus /proc/meminfo bezogen.

Folgende spezifische Einstellungen sind im Sektor system der Konfigurationsdatei möglich:

Sektor system
Option Standard Funktion
doscan true Bestimmt, ob die Liste der Prozesse 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 oder Programme) und nur noch beim Beenden gespeichert. Es wird nicht empfohlen, autosave abzuschalten.
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 eine bessere Systemgeschwindigkeit, 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.

Vergleich zu ureadahead

Ureadahead schreibt Dateien, die beim Systemstart gelesen werden, vor deren Verwendung in den RAM. So können diese Dateien schneller gelesen und so der Systemstart beschleunigt werden. Ureadahead unterscheidet zwischen mechanischen Festplatten und SSDs. Bei mechanischen Festplatten wird zuerst eine Liste aller benötigten Dateien erstellt und gemäß ihrer physikalischen Position sortiert. Diese Dateien werden dann beim nächsten Systemstart der Reihe nach gelesen. Dank der Sortierung läuft der Lesevorgang fortan sequenziell ab, wodurch die Leseköpfe sich weniger bewegen müssen und der Datendurchsatz erhöht wird. Ureadahead und preload wirken kooperativ und behindern sich gegenseitig nicht. Sie können problemlos miteinander eingesetzt werden.