Linux加载共享对象的性能

时间:2015-04-05 18:12:01

标签: linux dlopen

关于如何加载共享对象(.so)文件,我有一个设计决定。

我将最终对我的选项进行基准测试,但我想得到我的同事stackoverflow同事的反馈。

通常,stackoverflow每个“问题”需要一个问题,但是这些问题是如此密切相关,我将它们放在一个“问题”中。

现在我有很多(1000-4000).so文件,每个.so文件都有一个用dlsym()解析的符号。我有许多共享这些.so文件的进程。这些进程中的每一个都是从一个共同的父进行分支。

以下是关于使用dlopen / dlsym / dlclose加载.so文件的性能的一些问题:

  1. 将1000个.so文件合并到一个.so文件中会有多大的优势? (例如,将有1个dlopen()和许多dlsym()s。)(考虑在任何一个进程中只需要20个左右.so文件)。
  2. 如果将.so文件加载到一个进程中,它是否会加载到另一个进程中? (例如,它是否使用Copy On Write,以便分别执行dlopen的两个进程实际共享.so的物理内存?)。

  3. 在fork之前在父进程中加载​​.so文件有多大优势? (例如:fork只需复制.so的页表而不是加载它。)

  4. 在尝试对我的选项进行基准测试时,我应该考虑的其他因素是什么?

0 个答案:

没有答案