多年来,我使用各种各样的linux操作系统,已经进入了使用prelink的习惯,以加快应用程序的加载速度。
但是,每次重新安装包时,运行预链接的好处都会被否定,因为它,它的所有依赖项及其依赖项都需要重新链接。
这种预先链接可能会导致多个问题,其中之一是二进制MD5无效,这对于比较MD5与上游修订相比是有问题的,或者使用MD5来确定二进制文件是否已经改变,因此不希望在去除软件包时被清除。
最近,电脑已经快了很多,利润预收率现在几乎不值得注意。
使用前链还是一个理性的概念,还是可以随便丢弃,留下来作为过去的时代?
直到2009年7月23日才能阅读,除非您订阅了LWN.net,但您可能会发现http://lwn.net/Articles/341244/有用。
我不会说它应该被任意丢弃,但是我肯定会说它的使用应该给予更多的思考。
在经常更新的现代高端机器上,预链接可能不是有用的优化。 但是,仍然有一些值得使用的情况。 例如,在较旧的或较低端的机器上,或者在相当静态且不经历频繁更改或更新的机器上。 如果你有很高的程序重复运行速度(我可以想到几种情况,你可能会有程序快速连续运行,或者并行运行可能会提高性能)。
总而言之,你需要考虑你的具体情况,然后决定这些好处是否超过了额外的工作和努力。
我想说prelink在多用户桌面服务器(如学校使用的LTSP服务器和网吧等)上绝对有用。 预链接不仅可以加快应用程序的加载速度,而且还可以提高RAM利用率和由于用户之间的争用而导致的磁盘抖动,从而允许服务器上同时存在更多的用户。
我认为随着内存价格的下降,链接变得不那么有用。 如果你还想稍微加快速度,你可能会考虑预加载 。
我把这个决定留给操作系统版本。 如果默认操作系统select使用cron定期调用prelink,那么罚款也许是没有用的。 我希望发行者的创作者在select默认添加/删除prelink选项之前已经考虑过了。 所以我和他们一起去,而不是自己再分析一下。
Gentoo使用prelink。 他们通过忽略计算散列的预链接信息来解决md5sum问题。
预链接将永远给你提速,尽pipe随着硬件变得更快,它可能会越来越不明显。 要知道你的硬件的唯一方法是closures预链接,看看你喜欢的应用程序启动放缓。
旁注:OS X也用来做一个链接的forms,但是已经放弃了链接caching,链接维护自己。 最好的两个世界,没有二元变化,没有真正的开销与正常链接。 我希望Linux在某种程度上提出这个想法:)
更新:我最近尝试了在Linux上的预链接 ,并为许多文件和过程的cscope汇编我得到了5%的速度提升。