Optimize the OS loader for dual core and new SMP systems

Registered by maxalt on 2006-06-20

Depending on threading abilities of microprocessor, optimize the OS loader to parallelize loading and linking process. For faster linking, it'd improve the OS loader’s speed by creating loading threads. The mechanism would modify glibc code with possibility of creating a number of loading threads that could load and dynamically link libraries in parallel. As an example of such optimization, with _dl_map_object_from_fd() each of threads would retrieve various information carried in the executable by link-time procedure of locating symbols. In this way hashing mechanism for objects with large amount of symbols can be parallelized in dl_lookup_symbol_x(), calling the expensive hashing algorithm do_lookup_x().

Blueprint information

Status:
Not started
Approver:
None
Priority:
Low
Drafter:
None
Direction:
Needs approval
Assignee:
maxalt
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Decided not to plan this feature for Edgy, due being intrusive into OS and overhead of run-time switching to optimized loader.
Possible optimization for threading are in loading and linking :
- hashing algorithm in do_lookup_x() to parallelize in multiple threads depending on number of symbols
- parallelize library loading by sorting library physical locations on the HD
- speed up strncmp() for faster comparison for each linking symbol

The interception of the loader can be done by switching to parallel loader during install time, or redirection to it during known in advance long loads.

This spec will be merged with the glibc optimizaiton spec.
See wiki.canonical.com/MaxAlt for further optimization details

(?)

Work Items