免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3616 | 回复: 4
打印 上一主题 下一主题

prelink是什么程序?狂占CPU。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-05 11:06 |只看该作者 |倒序浏览
如题。而且后来用top看不到它了,但CPU还是工作在100%。

论坛徽章:
0
2 [报告]
发表于 2008-12-05 11:29 |只看该作者
Most programs require libraries to function. Libraries can be integrated into a program once, by a linker, when it is compiled (static linking) or they can be integrated when the program is run by a loader, (dynamic linking). Dynamic linking has advantages in code size and management, but every time a program is run, the loader needs to find the relevant libraries. Because the libraries can move around in memory, this causes a performance penalty, and the more libraries that need to be resolved, the greater the penalty. prelink reduces this penalty by using the system's dynamic linker to reversibly perform this linking in advance ("prelinking" the executable file) by relocating. Afterward, the program only needs to spend time finding the relevant libraries on being run if, for some reason (perhaps an upgrade), the libraries have changed since being prelinked.

论坛徽章:
0
3 [报告]
发表于 2008-12-05 12:31 |只看该作者

回复 #1 Cyberman.Wu 的帖子

许多的应用程式使用共用函式库. 在这些程式被执行的时候, 共用函式库会被读进记忆体中, 并且跟程式中所参用到的符号(symbol)连结起来. 对大多的小程式而言, 通常这样的动态连结非常快. 但是对一些依存於大量函式库的 C++ 程式而言, 动态连结却可能花上不少的时间.

       在大多数的系统上, 函式库并不会常常被更动, 每次程式被执行时所进行的连结动作都是完全相同的,Prelink 利用这点, 将程式与函式库连结的方式弄出来记录在执行档中, 达成"预先连结"的效果. 你需要 glibc 中的 ld-linux.so 来进行连结, 要能够认出"预先连结"的纪录则需要 >=glibc-2.3.1-r2.

       "预先连结"能够节省应用程式的启动时间. 以典型的 KDE 程式为例, 程式的读取时间能够减少 50% 那么多. 唯一必要的维护只有每当被"预先连结"过的执行档所连结到的函式库有所更新时, 需要再次执行 prelink.

摘要

我们可以用一个就叫做 prelink 的程式来进行"预先连结". 它能够修改执行档的内容, 使启动的时间变短.
如果某个"预先连结"过的应用程式所依存的函式库有所变动, 你必须重新"预先连结"这个应用程式, 不然速度上的增快将继续无法作用. 也就是说, 每次你用 portage 更新一些套件而更新了一些函式库, 这些函式库必须重新被"预先连结"起来.
对执行档的更动是完全可逆的. prelink 拥有复原的功能.
新版的 Portage 能够应付 prelink 对执行档的 MD5sum 与 mtime 造成的改变.
你需要 glibc-2.3.1-r2 或更新版本, 以及 binutils-2.13.90.0.xx 或更新版本所编 译出的执行档.

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-07-11 22:20:00
4 [报告]
发表于 2008-12-05 14:14 |只看该作者
昨天虚拟机跑6个RHEL,同时给prelink + makewahtis + updatedb
掉……
差点崩溃

论坛徽章:
0
5 [报告]
发表于 2008-12-05 17:26 |只看该作者
在大多数的系统上, 函式库并不会常常被更动, 每次程式被执行时所进行的连结动作都是完全相同的,Prelink 利用这点, 将程式与函式库连结的方式弄出来记录在执行档中, 达成"预先连结"的效果.

学习了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP