← Back to team overview

elementary-dev-community team mailing list archive

Re: Prelink

 

About the part where you say that maybe an application won't like it and we may end up with an "unexecutable", prelink skips incompatible apps (if you want i can send you a log from prelink working in my PC). I agree with you in the case of shutdown or blackout, however prelink can delete the prelink in a executable as easy as can put it. Also when i have some time (maybe this weekend) i will try to do some benchmarks in order to see wether it has a important impact or not.

On 09/05/12 19:24, Sergey "Shnatsel" Davidoff wrote:
2012/5/9 Sergio <sertorbe@xxxxxxxxx <mailto:sertorbe@xxxxxxxxx>>

    I readed about that but i found this web
    htpp://utcc.utoronto.ca/~cks/space/blog/linux/PrelinkingIntro
    <http://utcc.utoronto.ca/%7Ecks/space/blog/linux/PrelinkingIntro>
    which says:
    "prelinking and |DT_GNU_HASH| are complementary and systems can do
    both."
    Also AFAIK modifying the binaries are not bad unless you have a
    system which dectects wheter the binary is modified or not , which
    is only used on servers, a platform which elementary os doesn't focus.
    Also the document says that fedora/red hat uses this, and although
    is four years old this is still true.


Technically you can use both at once, but I doubt prelink will offer better startup times. I'd love to be proven wrong, though. If you measure startup times of some prelinked binaries and find measureable improvement over non-prelinked ones, we can look into integrating it. However, I still dislike the idea of modifying system executables for a number of reasons.

First, what happens if power goes out when a system executable is being overwritten or it's buffered but not synced to disk? Our default filesystem - ext4 - is not that great at recovery from such cases, it can't simply roll back to the older version because it's not copy-on-write. You may very well end up having a broken system executable.

The same may be true about shutting down the system - there's a huge series of workarounds for shutting down while updating the system already. I don't want to do the same for prelinking because it would require an insane amount of testing. Technically it's possible, but it's definitely out of scope of elementary OS and should be done upstream, in Ubuntu itself.

Second, what if some future app or library doesn't like prelinking for some reason? I know Prelink attempts graceful fallback, but some stuff like older Glib does break. There very well may be such libraries or binaries out there right now, we just don't know about them yet. And again, you may end up with a broken system.

On an unrelated note, please use "reply to all" to make other people on the list see your messages instead of replying to me directly.
--
Sergey "Shnatsel" Davidoff
OS integrator @ elementary



Follow ups

References