Włodzimierz Funika1, Marian Bubak1,2, Marcin Smętek1 and Roland Wismüller3 1 Institute of Computer Science, AGH, Kraków, Poland
2 Academic Computer Center – CYFRONET AGH, Kraków, Poland3 Fachgruppe BVS – Universitaet Siegen, Segen, Germany
1 .Introduction
Performance evaluation of RMI calls involves the analysis of RMI structure and communication. RMI’s key points from the viewpoint of performance analysis are:• RMI call start/end on the client side,• RMI call start/end on the server side, • information stored in RMI registry.
2. Goals
We aim at building a comprehensive tool support for distributed Java application by providing uniformed, extensible monitoring facilities to understand an application’s behaviour. This concept had been incorporated into the J-OCM monitoring system, complying to the OMIS (On-line Monitoring Interface Specification).
RMI-based distributed application
J-OCM
Server
Registry
Invoke MethodRegisterObject
Lookup Object
Client
Client
Tool
3. General Architecture Concept
NodeDistribution
Unit
Client.class
Agent
LocalMonitor
sun.rmi.*
Node
JVMServer.class
Agent
LocalMonitor
sun.rmi.*
Node
JVM
transport
7. Implementation
4. Approach to the Monitoring of RMI calls
The approach we used for monitoring RMI calls in the J-OCM relies on modification of two classes from sun.rmi package:1. sun.rmi.UnicastServerRef2. sun.rmi.UnicastRef
Communication between instrumented package and J-OCM is enabled with JNI (Java Native Interface) and native Agent (library loaded to JVM). A call of a function with JNI causes notification of the event to the J-OCM.5. RMI calls identification
The problem of associating the events raised by the client and those raised by the server can be solved by sending additional information (rmi_id, token of thread-initiator) from the client to the server .
• The tool visualizes interaction between clients and servers in two example RMI calls with space-time diagram• Captured RMI-bound events are mapped into relevant time intervals which enable to observe time spent in RMI execution phases
• The tool visualizes interaction between clients and servers in two example RMI calls with space-time diagram• Captured RMI-bound events are mapped into relevant time intervals which enable to observe time spent in RMI execution phases
8. Start-up procedure
In order to start the monitoring of an Java RMI application we must perform following commands:
java –Xbootclasspath/p:$INSTRUMENTED_CLASS_DIR -Xdebug -XrunAgent Server
java –Xbootclasspath/p:$INSTRUMENTED_CLASS_DIR –Xdebug -XrunAgent Client
Afterwards, monitoring Agents will register the launched JVM in its Local Monitor to make them visible for tools. Since that moment any tool can get monitoring information about RMI calls.
9. References
1. R. Wismüller, J. Trinitis and T. Ludwig: A Universal Infrastructure for the Run-time Monitoring of Parallel and Distributed Applications. In: Proc. Euro-Par'98, Southampton, UK, LNCS 1470, pp. 173-180, Springer, 1998
2. M. Bubak, W. Funika, M.Smetek, Z. Kilianski, and R. Wismüller: Architecture of Monitoring System for Distributed Java Applications. In: Dongarra, J., Laforenza, D., Orlando, S. (Eds.), Proc. Euro PVM/MPI 2003, Venice, Italy, Sept. 29 - Oct. 2 2003, LNCS 2840, pp. 447-454, Springer, 2003
6. Role of tokens
An every monitored object (node, jvm) is identified by token – object’s name as well as a platform independent way of addressing, e.g. the thread token t_1_j_1_n_1 allows to find out where it is running (thread 1 on JVM 2 , on node 1).
rmi_invoke_start
rmi_result_send
rmi_dispatch_start
rmi_execution_end
rmi_execution_start
rmi_request_receive
rmi_result_receive
rmi_invoke_end