Dieser Tipp ist mit etwas Vorsicht zu genießen, weil er einen gewissen Eingriff in das System darstellt, der womöglich zu Problemen führen kann. Das Resultat ist aber womöglich eine Verkürzung der Ladezeiten besonders größerer Programme sowie mehr freier Arbeitsspeicher.
Bei einem Linux-System sind die meisten Programme als dynamische Binaries kompiliert. Das bedeutet, dass die Bibliotheken, die das Programm zur Ausführung benötigt, nicht Bestandteil des Programms selbst sein müssen. Im Rahmen einer Distribution bedeutet das, dass Bibliothek A automatisch zur Sammlung der vorhandenen Bibliotheken zählt und installiert wird; wenn Anwendungen X, Y und Z A benötigen, muss A nicht in alle drei Anwendungen einkompiliert werden, sondern wird zur Laufzeit einmal von einem Programm, das 'Linker' genannt wird, zur Verfügung gestellt. Bei einem System aus statischen Binaries müssten die Programme X, Y und Z jeweils ihre eigene, einkompilierte Version von A mitbringen, die jeweils beim Programmstart mitgeladen wird und deshalb sowohl Ladezeit als auch Festplatten- und Arbeitsspeicher verschlingt. Wenn alle drei Programm gleichzeitig laufen, laufen auch drei Versionen von Bibliothek A.
Prelinking geht nun noch einen Schritt weiter und sorgt dafür, dass das Linking schon vor dem Aufruf der Programme geschieht; dadurch fällt die Arbeit des Linkers weg, der sonst jedes Mal die Binary analysieren müsste, und der Ladevorgang beschleunigt sich.
Auf Ubuntu-Versionen vor Feisty soll dies spürbare Auswirkungen haben; Feisty benutzt anscheinend einen anderen Prozess fürs Linken, der Prelinking unnötig macht (vgl.
http://ubuntuforums.org/showthread.php?t=74197 - hier gibt es auch eine interessante Diskussion zum Thema). Eine weitere kurze Anleitung für die Installation von Prelinking unter Ubuntu gibt es hier:
http://bin-false.org/?p=10Verschiedene Distributionen haben Prelinking vielleicht bereits eingerichtet, andere nicht. Deshalb gebe ich hier keine Anleitung, wie man Prelinking aktiviert, das müsst ihr für eure Distribution selber herausfinden. Meine Distribution ist Gentoo, ich musste Prelink nur emergen und ausführen, einen Guide gibt es hier:
http://www.gentoo.org/doc/en/prelink-howto.xmlOb Prelink bei euch bereits installiert ist, lässt sich (als Root) einfach herausfinden:
which prelink
Wenn die ausführbare Datei gefunden wird, ist Prelink installiert, aber das heißt nicht unbedingt, dass es auch benutzt wird. Ihr solltet überprüfen, ob es auch einen aktiven Prelink-Cronjob gibt.
Bei mir hatte Prelinking den Effekt, dass manche Programme (z.B. Open Office, Gimp) spürbar schneller starten, selbst der Bootvorgang hat sich verkürzt. Leider habe ich vorher keine genauen Messungen vorgenommen, aber es ist durchaus mehr als ein Placebo-Effekt. Vor allem fällt mir aber auf, dass ich nach dem Booten satte 40 MB mehr freien Arbeitsspeicher habe, seit ich das System auf Prelinking umgestellt habe, auch wenn mir noch nicht ganz klar ist, warum das so ist, da das System auch vorher schon aus dynamischen Binaries bestand. Genauer gesagt, nach dem kompletten Aufbau des X-Servers mit den automatisch gestarteten Programmen waren bisher von 786 MB RAM exakt 600 MB frei, jetzt sind es 641 MB. Die Auslagerung bleibt in beiden Fällen inaktiv.
Probleme habe ich bisher keine beobachtet.
Robin