Abstract-Achieving high performance for parallel or distributed programs often requires substantial amounts of information about the programs themselves, about the systems on which they are executing, and about specific program runs. The monitoring system presented in this paper collects, analyzes, and makes application-dependent monitoring information available to the programmer and to the executing program. The system may be used for off-line program analysis, for on-line debugging, and for making on-line, dynamic changes to parallel or distributed programs to enhance their performance. We employ a highlevel, uniform data model for the representation of program information and monitoring data. We show how this model may be used for the specification of program views and attributes for monitoring, and we demonstrate how such specifications can be translated into efficient, program-specific monitoring code that uses alternative mechanisms for the distributed analysis and collection to be performed for the specified views. The model's utility has been demonstrated on a wide variety of parallel machines, including several kinds of multiprocessors and a local area network. This paper discusses the program monitor used by a system for experimental parallel programming. This programming system, called the Issos system, was able to utilize monitoring information to modify a program during its execution (dynamically) or prior to or after its execution (statically). Such changes, henceforth termed adaptations, were initiated by programmers, or were performed under program control without programmer intervention (e.g., for dynamic load balancing). In this fashion, the monitor and program construction system jointly facilitated the experimental evaluation of the performance of parallel or distributed programs. The three interesting attributes of the Issos monitor are the following. Application-dependent monitoring: The monitor allows programmers to specify the information to be collected, analyzed, and displayed for each application program, resulting in the generation of efficient, program-specific configurations of the monitor's collection and analysis mechanisms. Dynamic, distributed data collection and analysis: The monitor both collects and analyzes information regarding the execution of a program in real-time. As a result, the monitor may be used to generate on-line displays of execution information, and it may be combined with tools that use such on-line information in order to change or steer the running program. Furthermore, for dynamic program changes that concern the improvement of program performance (program tuning), the overhead and latency of distributed information collection and analysis must not significantly reduce the performance gains realized by those changes. In response to these needs, the monitor is designed to permit tradeoffs in the amount of information collected and analyzed, the extent and the accuracy of analysis, and the extent of program adaptation. Such tradeoffs are realized in part by use of alternative means of information collection, such as tracing versus sampling. Use of a language-independent datu model: The monitor is independent from specific target programming or program execution systems. What is to be monitored is specified via the entity-relationship (ER) model [9]. Such monitoring specifications are stated with novel language constructs that also specify the desired latency and precision of monitoring, thereby permitting the configuration of collection and analysis mechanisms for different uses of the monitoring system and for different distributed and parallel execution environments. In addition, use of 1045-9219/93$03.00 0 1993 IEEE
Dynamic monitoring of the Issos system is discussed in REF , which provides an excellent overview of the structure of a dynamic monitoring system for distributed systems.
Application-dependent dynamic monitoring of distributed and parallel systems
IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS
Computer Science