[MAIN]
 
[OVERVIEW]
 
[REQUIREMENTS]
 
[DOWNLOAD]
 
[DOCUMENTATION]
This work partially funded by NASA GSRP (NGT 5-50165) and does not represent the position or opinions of the United States Government

Overview of IDB

Abstract

IDB is a framework for profiling the performance of parallel and object oriented scientific applications. At the heart of the framework is the probe library (probelib) which collects performance data in a scalable way. This data is stored in a relational database where it can be queried using a front-end visualization tool or interactively using SQL.

Performance data is tightly coupled with the programs control flow, as opposed to the underlying architecture. Scalability is ensured by maintaining aggregate statistics and instrumenting the relevant nodes of the control flow graph. The nodes that are probed map to specific performance critical events, these are:

  • Functions (PROC)
  • Loops (LOOP)
  • Function calls (CALL)
  • Communications or synchronization events (COMM)

Aggregate statistics are collected at each of these events. The order in which they are encountered at run-time define the Control Flow Hierarchy of the application. Every time the application is run, the control flow hierarchy (CFH) and associated statistical data populate a performance database.

In addition to collecting the basic wall time and CPU time statistics, IDB can be integrated with PAPI to provide hardware performance counters.

IDB Components

The IDB framework is comprised of three components

Automated Instrumenter

There are four critical performance events that can occur in a program, these are PROCedures, LOOPs, CALLs, and COMMunications or synchronizations. Calls to the Probelib API can be placed at these events using an automated instrumentation tool.

The instrumenter parses C or C++ files to generate a syntax tree. The user is presented with a catalog of classes, methods, functions, loops and calls to selects from. Probelib calls are introduced at the selected locations.
[more on using the automated instrumentation tool]

Populating the Database

After the source code has been instrumented it is compiled and linked against the Probelib library. As the program is run, the instrumentation database is populated with performance data.
[more on the probelib API]

Visualization Tool

The visualization tool connects to the database server and allows the user to generate customized performance visualizations. It is able to connect to database servers running locally or over a network. Queries to the database are displayed graphically based on user selections. The modular design of this tool demonstrates how visualization plug-ins are developed to pull specialized data from the database.
[more on the Visualization Tool]


Last updated on March 22, 2001
(c) 1999-2001 Jonathan Chen, Jeffrey Nesheiwat and Boleslaw Szymanski