Monitoring of distributed Java applications

https://doi.org/10.1016/S0167-739X(02)00175-9Get rights and content

Abstract

The paper presents an approach to distributed Java monitoring based on an extension to the on-line monitoring interface specification that defines relationships between a monitoring system and on-line tools used to support the development of Java applications. The extension aims at defining a standard for an open interface that supports on-line software development tools. The paper also presents the implementation ideas on building a monitoring infrastructure based on the specification. This comprises the architecture of the infrastructure, the mechanism of interaction with the Java virtual machine, and sample scenarios of interactions between the tool and the monitoring system. The infrastructure provides a uniform monitoring support for different kinds of tools, like debuggers or performance analysers.

Introduction

Tools supporting parallel and distributed programming play an important role in the development of applications. Owing to its inherently distributed nature, the possibility of loading remote classes, and its platform independence, Java has become a widespread programming language for distributed applications in heterogeneous environments. Whereas Java applications are getting larger and more and more complex, the scarcity of powerful programming tools that allow to examine and eventually control the behaviour of these applications is becoming apparent. This is a concern especially when dealing with distributed programming. Although there are some tools for profiling distributed Java applications, like JProf [1], Jprobe [10] or JaViz [2], tools allowing to observe an application’s behaviour in more detail or even to control it, are rare. Java debuggers, for example, usually do not support applications distributed across multiple Java virtual machines (JVMs), a notable exception is JBuilder [3]. Furthermore, the incompatibility of tools does not allow to investigate different aspects of a program’s execution like, e.g. the high-level communication behaviour on the one hand and the detailed execution behaviour of single threads on the other.

Generally speaking, the term monitoring comprises techniques and mechanisms to observe and potentially manipulate applications. Tools used to monitor distributed applications have to consider all elements of the distributed system and must control the whole application distributed over different machines. Monitoring tools can be classified into two categories: on-line and off-line tools. The on-line tools run concurrently with the application, thus a user can interactively observe and influence the state of the application. In the case of off-line tools, information on the application’s execution is being stored on disk, usually as a trace file. After the application is finished, a tool uses the data gathered in the trace file for analysis activities.

To be able to observe and possibly manipulate a program’s execution, on-line tools need a specialized module which is called monitoring system. Usually this module is tightly integrated with the tool, but even in the case of Java, it must directly interface with the operating system and in addition depends on the specific implementation of the JVM. As a result, tools tend to be rather complex and cannot be easily ported to different target platforms. Due to this, the user would either need the monitoring module be adapted to the new platform, in order to be able to use the tool for performance analysis on other platform, or be forced to search for a new tool which if found most probably will not provide the same functionality as the previously used tool. This is one of the reasons why the users’ demands on tool capabilities are far from having been satisfied. In addition, tools come into conflict with each other when applied to the same application, e.g. debugger and performance analyser. A solution to these problems is to have a clearly separated monitoring system that provides a uniform interface for different kinds of on-line tools. The availability of such a system also greatly facilitates the development of new tools.

In practice, for distributed Java applications, there are no suitable monitoring systems at the moment. Although some approaches (e.g. [4], [8]) exist, they are usually targeted towards resource management or profiling only. Our approach to build a universal monitoring system is based on OMIS [15] and the OCM [16]. The OMIS project defines a standardized interface between the tools and the monitoring system. OMIS is not restricted to a single kind of tools, especially it supports tools oriented towards debugging as well as performance analysis and resource management. Originally, OMIS has been designed to support parallel systems, and its reference implementation, the monitoring system OCM has been targeted towards PVM and MPI applications.

The main goal of this paper is to present an approach to extend the OMIS specification for Java applications and the implementation concepts for building a monitoring infrastructure based on this specification. More specifically, at the beginning the paper discusses the deficiencies of existing tools’ functionality compared to the needs of Java monitoring, followed by an overview of the concepts of the extended version of the OMIS specification that supports Java applications. Next we present the architecture of the monitoring system compliant to this specification and the mechanism of interaction with the JVM. The last part of the paper focuses on sample scenarios of interactions between a tool and the monitoring system and their implications for implementation concepts.

Section snippets

Current state of tools vs. needs of Java monitoring

The tools intended to support the development and use of distributed and parallel applications constitute a well established area in computer science. In the recent years a lot of tools emerged [5], [6]: ParaDyn, Pablo, AIMS, Vampir, VT, Medea, ParaGraph, etc. However, normal monitoring tools cannot be used with Java without adapting them quite heavily. This is due to the special runtime environment of Java: Java programs are interpreted by the JVM, rather than being executed as machine code

The on-line monitoring interface specification and Java applications

The OMIS specification focuses on the definition of an interface between tools and a monitoring system. This is based on a special language that allows tools to build complex requests by combining primitive ones in order to achieve the needed flexibility. The individual monitoring functions that can be requested via an expression in this language are called services.

The services relate to elements of the monitored applications called system objects. The set of system objects creates a view of

Architecture of the monitoring system

The OMIS specification extension tries to establish a monitoring interface which is as independent as possible from the implementation of the JVM [19].

However, any instance of the monitoring system must be implemented for the fixed target architecture and use the fixed access interface to the JVM. It should be noted that there is more than one such interface which are not standardized, e.g. SUN provides its own interface which is different from that provided by Microsoft. As the interface

Interaction with JVM

Low-level interactions with the JVM are a critical part of the monitoring system. The component responsible for this activity (JVMLM) has to provide functionality that allows to realize services defined in the interface specification.

One of the possible approaches is using the interfaces which enable a tool to access the JVM. They are used to obtain requests from a tool, handle them and forward to a relevant mechanism within the JVM. The results of the request are sent back to the tool. The

Monitoring scenarios

In this section we present some examples how the mechanisms defined in the interface specification can be used to monitor different aspects of Java distributed applications. This should provide insight into how to take advantage of the services defined to build complex requests. We also illustrate the behaviour of the monitoring system components during the execution of example requests, using UML sequence diagrams. This provides an outline of the requests flow in the system.

In order to show

Conclusions

In the paper an approach to specifying an interface between on-line tools for distributed Java applications and a monitoring system that supports the operation of these tools has been presented. In addition, we discussed selected aspects of the operation and implementation of such a monitoring system.

The interface between the tools and the monitoring system is based on a Java-specific extension to the OMIS specification. The structure of the environment comprises a central component for

Acknowledgements

The authors are very grateful to Prof. Michael Gerndt for valuable discussions. This work has been carried out within a Polish–German collaboration and was supported by KBN under grant 4 T11C 032 23.

Marian Bubak obtained MSc degree in Technical Physics and PhD in Computer Science from the University of Mining and Metallurgy (AGH), Kraków, Poland. At present he is an Adjunct at the Institute of Computer Science AGH and a Staff Member at the Academic Computing Center CYFRONET. Since 2000 he is also the Dean of the Faculty of Computer Science at the School of Banking and Management in Kraków. His research interests include parallel and distributed computing; he is author and co-author of

References (27)

  • G. Pennington, R. Watson, JProf—A JVMPI Based Profiler....
  • I.H. Kazi, D.P. Jose, B. Ben-Hamida, C.J. Hescott, C. Kwok, J. Konstan, D.J. Lilja, P.-C. Yew, JaViz: A client/server...
  • Borland: JBuilder 3.5 Datasheet....
  • P. Bellavista, A. Corradi, C. Stefanelli, Java-based on-line monitoring of heterogeneous resources and systems, in:...
  • APART: Index of Basic Modules and Related Work....
  • S. Browne, J.J. Dongarra, K. London, Review of performance analysis tools for MPI parallel programs, Technical Report,...
  • S. Shende, A.D. Malony, Integration and applications of the TAU performance system in parallel Java environments, in:...
  • T. Sheehan, A. Malony, S. Shende, A runtime monitoring framework for the TAU profiling system, in: Proceedings of the...
  • W.P. Alexander, R.F. Berry, F.E. Levine, R.J. Urquhart, A unifying approach to performance analysis in the Java...
  • Sitraka: JProbe Performance Tuning Solutions....
  • Optimizeit Toolset....
  • Visual Analysis Tools for VAJava....
  • JinSight—Visualization and Analysis....
  • Cited by (9)

    • Flexible resource monitoring of Java programs

      2014, Journal of Systems and Software
      Citation Excerpt :

      For monitoring at development time such overheads are often not so problematic, as these monitoring activities are typically not time critical. In contrast, monitoring at runtime observes characteristics of the SUM while it is actually being executed in the field (Zanikolas and Sakellariou, 2005), e.g., to validate quality requirements, to analyze the quality of service, to observe the compliance of service level agreements or even to manipulate the SUM (Bubak et al., 2003). In the runtime case, overheads are very problematic as they affect the user's perception of the system's quality as well as the precision of the observed data, which, in turn, may affect the adequacy of subsequent reactions.

    • Dynamic business metrics-driven resource provisioning in cloud environments

      2012, Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
    • Performance monitoring and analysis system for MUSCLE-based applications in PL-grid

      2011, Proceedings - 7th IEEE International Conference on e-Science Workshops, eScienceW 2011
    • Towards user-defined performance monitoring of distributed Java applications

      2006, e-Science 2006 - Second IEEE International Conference on e-Science and Grid Computing
    • Towards the performance visualization of Web-service based applications

      2006, Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
    View all citing articles on Scopus

    Marian Bubak obtained MSc degree in Technical Physics and PhD in Computer Science from the University of Mining and Metallurgy (AGH), Kraków, Poland. At present he is an Adjunct at the Institute of Computer Science AGH and a Staff Member at the Academic Computing Center CYFRONET. Since 2000 he is also the Dean of the Faculty of Computer Science at the School of Banking and Management in Kraków. His research interests include parallel and distributed computing; he is author and co-author of about 130 papers and co-editor of eight proceedings of international conferences.

    He served as a Program Committee Member and organizer of several international conferences in both computational and computer science (e.g. HPCN, Physics Computing, EuroPVM/MPI, SupEur, HiPer, ICCS). He was leader of several Polish and international projects in the high performance computing area; at present he is the leader of the architecture team of the EU CrossGrid Project.

    Włodzimierz Funika received his MSc degree in Mathematics from the University of Kishinev and PhD in Computer Science from the University of Mining and Metallurgy (AGH) in Kraków. He is currently with the Institute of Computer Science AGH. From 1978 to 1993 he was with the Centre of Automation and Metrology of Moldavian Academy of Sciences. His main research interests are in parallel and distributed programming, programming tools construction, operating systems, database systems.

    Roland Wismüller is a Professor at the Institute of Software Sciences at the University of Vienna, Austria. He received a Diploma in Computer Science in 1988 and a PhD in 1994 from Technische Universität München, Germany, where he is still leading the research group on parallel programming tools. He has been working in the field of tools for parallel and distributed programming for over 12 years, with an emphasis on debugging and monitoring. His current research focus are frameworks to support interoperable tools. Further interests include automatic performance analysis, debugging of optimized code and parallelizing compilers.

    Piotr Mętel obtained his MSc in Computer Science from the University of Mining and Metallurgy in Kraków in 2001.

    Rafał Orłowski studied Computer Science at the Institute of Computer Science of the University of Mining and Metallurgy in Kraków and obtained his MSc degree in 2001.

    View full text