Departament D'Arquitectura de Computadors

Flexible Composition Infrastructure

When building a runnable process image from an executable file, modern operating systems should fill a large functionality gap between the code provided by the executable file and the functionality provided by the kernel. Today, many services are supposed to be implemented out of the executable file itself.

These execution environments contain predominantly generic definitions of services. The flexible composition infrastructure enables application-specific control over which definitions of services are present in the execution environment, as well as over the establishment of bindings. The main goal of this project is to make possible application-specific execution environments.

Documentation
Albert Serra, Xavier Martorell, Nacho Navarro
Dynamically-linking extensions and the memoization experience
Technical Report UPC-DAC-1999-17

Albert Serra, Nacho Navarro
Extending the Execution Environment with DITools
Technical Report UPC-DAC-1999-26

Marc Gonzalez, Xavier Martorell, Jose Oliver, Albert Serra, Eduard Ayguade, Jesus Labarta, Nacho Navarro
Performance Analysis for OpenMP Applications
Technical Report UPC-DAC-1999-31
Albert Serra, Xavier Martorell, Ernest Artiaga, Yolanda Becerra, Marisa Gil, Nacho Navarro
Herramientas para la extensibilidad en entornos de ejecución paralelos
Jornadas de Paralelismo, La Manga del Mar Menor, Murcia. September 1999. (slides)
Marc Gonzalez, Albert Serra, Xavier Martorell, Jose Oliver, Eduard Ayguade, Jesus Labarta, Nacho Navarro
Applying Interposition Techniques for Performance Analysis of OpenMP Parallel Applications
In Proc. of IPDPS. May 2000.
Albert Serra, Nacho Navarro, Toni Cortes
DITools: Application-level Support for Dynamic Extension and Flexible Composition
To be published in Proc. of the USENIX Annual Technical Conference. June 2000.


Related work

DITools (Dynamic Interposition Tools)

This set of interposition-based tools brings an environment in which dynamically-linked executables can be extended at runtime with unforeseen functionality. These tools combine dynamic loading of code and dynamic linking in order to extend application programs at runtime.

The purpose of extensions is up to the programmer. They can be used to introduce and remove functionality, to modify the execution environment without changing its behavior (e.g. for service specialization), and even to alter the behaviour of the environment (e.g. for service enhancements or patches).

The tools consist of four main pieces: the DI Runtime (interposition services required by any configuration), a DI Backend (configuration--specific routines to be used to extend applications), a DI Configuration (information to assist the DI runtime for a particular use of the tool), and the DI Shell (the utility used to start a DI session).



Typical DITools scenario: A program has been extended using the performance monitoring backend. Four objects are shown: the main executable (top-left), the parallel runtime (top-right), the DI Runtime (bottom-left) and the DI Backend (bottom-center). The upper box encloses objects that are normally loaded when this application is launched. The lower box encloses objects that have been added because the program has been launched during a dynamic interposition session. Two linkage tables are also shown: one for the main object, and the other for the performance monitoring backend.

The DITools package has been ported to IRIX (64-bit and N32 ABIs) and Linux.


Example

DIFlow: Simple backend for tracing cross-module interactions


Related tools and projects

A list of tools and projects that have been prototyped or built on top of the DITools infrastructure:

  • Trace generation tools for Paraver
  • CPU Manager for processor allocation in shared memory multiprocessors
  • Loop scheduling research
  • Java research
  • Contact person(s)