linux prelink.cache,启动时间 – Pre Linking - 嵌入式 Linux 知识库

Contents

Description

Pre-Linking is a mechanism for linking programs to shared libraries

ahead of time. In general, every time an application is run it must have

its external symbols resolved – looked up in the shared library symbol

table, and fixed up in the program binary to refer to the correct

offsets in the library. To use prelinking, a special utility is run

which does this resolution and fixup once for the program. This saves

the cost of linking at runtime.

There is an existing package from RedHat which provides this feature.

A drawback of this is that if the shared library is changed, the fixups

are no longer correct, and the program must be fixed-up again. This is

much less of an issue in an embedded situation, where the programs and

libraries are less likely to change than in a desktop or server Linux

system.

Overview of linking

There is an excellent paper with an overview of dynamic linking issues

at: Pre Linking

Overview

This paper describes not only pre-linking, but lazy linking and more

exotic systems, like compile-on-load.

Expected Improvement

[This is not measured yet.]

We expect that with use of prelinking, there will be a slight reduction

in boot time for Linux system, in the area of initial application

loading.

We need to use this system and measure the effect of prelinking for a

determined set of applications.

Resources

RedHat prelinking system

A white paper is at:

prelink

prelink currently supports the following architectures: alpha, arm,

cris, i386, ia64, ppc32, ppc64, s390, sh, sparc32, sparc64, x86_64. At

present the glibc dynamic linker is required to prelink executables and

load prelinked code, uClibc does not support it.

Instructions for using prelinking with Gentoo

The following page has information on how to use prelinking with a

Gentoo system:

Related Projects

RelCache vs. Red Hat prelink

Resident – Resident Good (comparisons with prebind)

Specifications

None so far.

Patches

No kernel patches required for kernels 2.4.10 and later.

Case Studies

Case 1 – Panasonic mobile phone prelink

Panasonic used pre-linking on their Linux-based mobile phones. These

used a 2.4.x Linux kernel, for an ARM processor. Measuring the time to

load a single multimedia application with regular dynamic linking and

pre-linking, showed that pre-linking could save a lot of time.

Hardware

ARM9 (unspecified CPU frequency)

Kernel Version

2.4.20 (based on Monta Vista Linux CEE 3.1), glibc 2.3

Time without change

2479 ms

Time with change

125 ms

Source

Case 2

Case 3

Future Work

This item is a work-in-progress, and we are just getting started.

Material from CELF presentations

ARM Prelink

Japan Jamboree #3

http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree3

In the presentation of “Making Mobile Phone with CE Linux”, the

evaluation of Prelink on ARM architecture was mentioned.

by Mr. Mizuyama (Panasonic Mobile)

MIPS Prelink

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值