Homunculus Reticulli
Homunculus Reticulli

Reputation: 68476

Shared library loading and performance

I am writing a server side application in C/C++ which consists of 1 main daemon and several child processes.

I want the child processes to be extremely lightweight so that they can be spawned/killed without too much overhead (over and above that imposed by the OS).

I am building the main daemon and the children apps to make extensive use of shared libraries. In fact, the main daemon loads up all the shared libraries required by the child applications, and sets up the required (shared) memory structures etc.

My underlying assumption is that since the shared libraries (some of which are huge) are already loaded by the main daemon, the child applications will be able to launch quickly and simply attach to the loaded libraries - without having to load the shared libs, and thus resulting in a slightly fast time to be spawned - is this assumption correct?

[[Added]]

I am working on Ubuntu 10.0.4 LTS

Upvotes: 2

Views: 414

Answers (1)

Rohan
Rohan

Reputation: 53386

The code segment of your shared libraries will be shared by all processes, no particular restriction w.r.t who loaded/spawned. However, it may take variable time depending upon how many symbols are used in the process, as those will be resolved during load.

But if you are forking, there isn't much to do so it will be fast with respect to launching new binary.

Upvotes: 1

Related Questions