SUPER preloading de

Şuraya atla: kullan, ara

Preloading, ein Teilprojekt von SUPER

Was ist Preloading? Die Grundidee ist es, Dateien in den Cache zu laden die später von bestimmten Programmen benötigt werden, z.B. OpenOffice. Dadurch liest OpenOffice die Dateien nicht von der langsamen Festplatte, sondern erhält den Großteil seiner Daten aus dem Cache. Das Preloading geschieht vollständig im Hintergrund, es beeinträchtigt also nicht die Arbeitsgeschwindigkeit. Im aktuellen Suse Linux 10.0 ist Preloading aktiviert für OpenOffice, Firefox, Mozilla, Gimp und das Khelpcenter. Mit PePr lässt sich Preloading ganz einfach auch für weitere Programme aktivieren.

Es gibt zwei verschiedene Ansätze um Preloading durchzuführen:

  • Statisches Preloading: Dateien werden anhand einer festen Liste in den Cache geladen. Dieses Feature ist seit Suse Linux 10.0beta4 standarmäßig installiert und aktiviert.
  • Individuelles Preloading mit PePr: PePr lädt genau die Dateien die du benutzt. Es braucht noch etwas Feinschliff, sollte aber die Startzeiten noch weiter verbessern als die statische Variante. Im Gegensatz zur statischen Variante ist PePr nicht auf eine konkrete Anwendung beschränkt.

Es gibt auch eine technischere Beschreibung von Preloading.


PePr, der individuelle Preloader

PePr ist eine Erweiterung der ursprünglichen Idee des Preloading, die sich Andreas und ich ausgedacht haben. Es führt das Preloading nur für die Dateien durch, die man auch wirklich benutzt. Um das zu erreichen muss man PePr 'beibringen' welche Dateien das sind. Mehr dazu weiter unten.

PePr is ein Zusatz zum statischen Preloading gedacht, nicht als Komplettersatz. Während das statische Preloading nur das Programm und seine Daten lädt, optimiert PePr auch den Zugriff auf nutzerspezifische Daten. Dazu gehören Dateien im Benutzerverzeichnis (von denen kann das statische Preloading nicht wissen) und sprachspezifische Daten, wodurch Programme noch schneller starten. PePr kann dabei beliebige Programme preloaden.

Aktuelle Version von PePr ist Release 3 (7. September). Änderungen:

  • "ionice" benutzen.
  • Neue .desktop Datei benutzt KDE-autostart-phase=2.
  • umask auf 077 für pepr-update
  • Einige "" eingefügt um mit Leerzeichen klarzukommen.
  • Statisches Preloading ist per default aktiviert. Dateien die bereits statisch geladen werden, werden nicht nochmal geladen (kleiner Geschwindigkeitsvorteil). Dadurch schrumpfte mein persönliches PePr Profil von 81kB auf 45kB.


PePr installieren (10.0beta4 oder neuer)

Die Installation is ziemlich einfach, aber es funktioniert im Augenblick nur für KDE (Hilfe gesucht):

Speichere die Shell Scripte nach /usr/local/bin und mache ein chmod auf 755:
pepr.sh
pepr_parsepriv.sh
pepr_update.sh

Speichere den Autostarteintrag für KDE nach /opt/kde3/share/autostart/
pepr.desktop

Das Preload Paket ist standardmäßig installiert, es muss also nicht per Hand gemacht werden
Hinweis: All diese Programme stehen unter der GPL.

Konfiguration von PePr

Wenn alle Dateien gespeichert sind, starte eine KDE-Sitzung für den Benutzer für den du PePr einstellen willst. Öffne ein Terminal und gib den Befehl "pepr_update.sh" ein. Jetzt startest du alle Programme die PePr preloaden soll: dein E-Mail Programm, deinen Lieblingsbrowser oder ähnliches. Du kannst auch große Dateien öffnen die du häufig benutzt. Zum Beispiel deine Mailbox: Meine Mailboxes sind ein dutzende MB groß. Die vorher in den Cache laden zu lassen bringt einiges an Geschwindigkeit. Aber Vorsicht: Es muss natürlich noch in den RAM passen, PePr stopt das Preloading wenn der Speicher voll ist. Also nicht übertreiben. Pepr_update macht dabei ein strace auf alle Anwenungen die du startest und bekommt so mit, welche Dateien du verwenest. Auf diese Art 'lernt' es was es machen muss.

Wenn du damit fertig bist gehst du zur Konsole zurück und drückst ENTER. Jetzt fragt dich pepr_update nach dem Root Passwort. Das braucht es weil /usr/bin/prepare_preload aus irgendeinem Grund Root-Rechte braucht (hab es noch nicht genau analysiert, das Programm ist nicht von mir). Die fertigen Dateien werden nach ~/.pepr geschrieben.

Um deine PePr Einstellungen zu löschen, löscht du einfach das komplette Verzeichnis ~/.pepr. Um PePr zu deinstallieren löscht du alle Dateien die du nach obiger Anleitung gespeichert hast.


Feedback und Verbesserungsvorschläge an nordi at addcom dot de.


Preloading für Programme (ohne PePr)

Seit Suse Linux 10.0beta4 gehört Preloading zur Standardinstallation. Einfach Suse installieren und es ist da. Defaultmäßig ist es für Firefox, OpenOffice, Mozilla, Gimp, Khelpcenter und KDE aktiviert. Falls es dich genauer interessiert, schau dir das Paket "preload" mal genauer an.

Von einigen Leuten kam die Frage wie man Preloading für bestimmte Anwendungen abschalten kann wenn man sie nicht installiert hat. Zuerst mal wird für nicht installierte Programme auch keinerlei Preloading durchegeführt. Wenn du z.B. Mozilla nicht installiert hast wird auch kein Preloading durchgeführt. Wenn du trotzdem Preloading für bestimmte Programme deaktivieren willst lösche die entpsprechenden Dateien in /etc/preload.d/ und /var/cahce/preload/.


Preloading ohne KDE

Preloading für Anwendungen funktioniert im Augenblick nur wenn du KDE als Fenstermanager bentzt. Damit es auch für andere Fenstermanager funktioniert fügst du folgende Zeile ans Ende der Datei /etc/init.d/boot.local an:

   /usr/bin/ionice -c3 /usr/bin/appspreloader.sh &

Wenn du das gemacht hast kannst du die Datei /opt/kde3/share/autostart/appspreload.desktop löschen. Die ist jetzt nämlich nutzlos.

Außerdem wird KDE selbst noch pregeloadet, was die Startzeit um einiges verbessert. Folgendermaßen kannst du auch Gnome preloaden:

*downloade die Gnome preload Datei und speichere sie nach /etc/preload.d/
*als root, starte "update_preload"
*editiere /etc/init.d/boot.local und hänge die folgende Zeile an:
     /usr/bin/ionice -c3 /sbin/preload < /var/cache/preload/gnome.preload &

Das reduziert die Startzeit von Gnome auf meinem System von 25 auf 10 Sekunden. Wenn du wenig RAM hast (256MB ist in diesem Fall wenig) könnte dieser Effekt kleiner oder sogar Null sein.


Benchmarks durchführen

Wenn du Benchmarks durchführen möchtest musst du eins unbedingt beachten: Wenn du ein Programm gestartet hast, dann sind alle seine Daten im Cache. Wenn du etwas einmal mit und einmal ohne Preloading testen willst musst du dazwischen dein System neu starten!

Benchmarkergebnisse die den Wirkung von Preloading zeigen gibt es hier. Beachte den Unterschied zwischen einer Suse Linux 10.0 beta3 (kein Preloading) und beta4 (statisches Preloading)!


TODO

  • Schickes rpm Paket für PePr bauen
  • PePr funktioniert im Augenblick nur für KDE. Andere Fenstermanager sollten unterstützt werden, aber da kenn ich mich mit der Autostartfunktion nicht aus. Wichtig dabei ist, dass das Programm ganz zum Schluss ausgeführt werden muss. Jede Hilfe ist willkommen!


== Weitere Programme preloaden == (nicht nötig bei PePr) Wenn du weitere Programme preloaden willst machst du folgendes:

*Erstelle ein Profil des Programmes mit strace -fF -e open,process program_name 2>program_name_strace
*Parse die Datei mit parse_strace program_name_strace
*Das Ergebnis steht in program_name_strace_preload. Verschiebe diese Datei nach /etc/preload.d/program_name
*Starte update_preload als Benutzer root
*Editiere /usr/bin/appspreloader.sh. Hänge eine Zeile an, die ungefähr so aussieht:

preload "/usr/bin/opera" "opera"

Dabei gehe ich davon aus, dass das Programm das gestartet wird /usr/bin/opera ist und du die Datei von eben nach /etc/preload.d/opera verschoben hattest.