Libs vorladen??



  • Hallo,

    ich will mir ein kleiner Tool schreiben, das bestimmte Bibliotheken vorladet, doch ich weis noch nicht so recht, wie man Bibliotheken vorladed ...

    reicht ein einfaches dlopen()? oder muss man noch was machen?

    thx schonmal

    MfG



  • Was meinst du denn mit "vorladen"? 😕 Pre-Caching damit die Dateien als Cache im Arbeitsspeicher landen? ➡ Einmal komplett einlesen.



  • ehm naja, damit z.B dann X server oder GTK-Basierende Anwendungen schneller starten ...

    wie meinst du das mit Complett einmal einlesen? Meinst du die Adresse vom jedem Symbol holen?

    MfG



  • Ach so meinst du das... Ja, dafür müsstest du aber dein Programm die ganze Zeit im Hintergrund laufen lassen, damit das SO auch im Speicher bleibt. Ist aber unnötig, da beim Start von z. B. GDM sowieso schon die GTK+-Libs geladen werden.

    Mit komplett einlesen meinte ich einfach die Datei einmal vom Anfang bis zum Ende mit fread o. ä. einzulesen und dann das Programm zu beenden. Damit landet sie jedenfalls schon mal im Arbeitsspeicher, beim "Laden" als SO muss der ELF-Header aber trotzdem geparst und die Symbole erst gelesen werden.



  • So sollte es also dann gehen:

    mein Program:
    - mit dlopen die libs laden aber nicht dlclose aufrufen
    - im Hintergrund laufen lassen

    oder?

    MfG



  • Ja schon, das bringt bloß nichts, weil die SO's sowieso im Speicher sind und bleiben, wenn der X-Server (X-Libs) bzw. GDM (GTK+-Libs) läuft.



  • na doch,

    ich will das Tool dann im Hintergrund bei der Init laufenlassen, damit wenn meine rc.init durch ist, und es in den runlevel 5 geswitch wird, X nicht mehr so lange zu starten braucht 😉 Zurzeit bin ich bei 4 Sekunden startzeit von X und Slim

    MfG



  • Dann brauch aber dein init-Skript umso länger. 😉



  • ne das nicht, weil ich das Tool in background starte
    /sbin/preload &

    aber es scheint nicht zu Funktionieren .... hmm wieso?

    Ich öffne alle Libs die ich brauche mit dlopen und dann lasse ich einfach ne while laufen .... mit sleep(10).

    hat jemand eine Idee?

    MfG



  • kows schrieb:

    ne das nicht, weil ich das Tool in background starte

    Ist doch egal, es frisst trotzdem Rechenzeit und nimmt diese somit anderen Prozessen weg, womit diese wiederum langsamer werden.

    kows schrieb:

    hat jemand eine Idee?

    Die Auswirkungen sind zu minimal, als dass du da real was merken würdest.


Anmelden zum Antworten