OVATION Visualizer Users Guide
Main Visualizer View
The Remote Call Visualizer is a Java application that displays a graph of remote calls between clients and servers. It can display calls between individual objects or calls between threads. Execute it with the following command (available in the $OVATION_ROOT/bin directory as a shell script or a Windows batch file):runRemoteCallVisualizerWhen the Remote Call Visualizer is started, it displays and empty canvas. You can load a log file by using the "File" menu and selecting the "Open" item. Openning a log file should cause the Main Visualizer to look something like this:
In that display, notice how all of the CORBA calls are squeezed together in a very small space. This is not useful. Use the slider on the bottom of the screen to make the display more readable:
In the display, you can see that the client called “log_calls” on the “Country Server” servant, and then the call returns. Within that call, Country Server calls “one_more_call” on the “Extra Server” servant, which end in an exception (represented by the red line returning from Extra Server to Country Server).
To get a better feel for the timing of the calls, we can use the “Time Scale” menu to display a time scale. The timescale menu can be used to adjust the scaling of the interactions displayed in the Main Visualizer View. In the diagram above, the time scale "tick" marks show that the "log_calls" invocation seems to have taken about 20 ms to complete.
In our example, we can see that there is much more data than can fit in the Visualizer’s viewport. The Bird’s Eye View display shows all of the data, and indicates which portion of the data is currently visible. On the “View” menu, select “Bird’s Eye View” to see the following display:
The black rectangle shows which part of the display is visible in the Visualizer’s viewport. As you scroll, it moves. You can also drag that black rectangle to move the visible portion of the data.
Remote Call Visualizer Views
The Remote Call Visualizer has several views of the remote call data, including a view that shows interaction between distributed objects and a view that shows interaction between threads. There is also a “Tree View” for each of these that allows you to expand and collapse the view by its attributes – e.g. host, process, and distributed object (all of which are available in the View menu).Users can create their own views through the “Edit Views...” menu item. It brings up a dialog box in which you can select your own view attributes and the order in which they’re displayed to create a custom view. Your new view will be added to the “View” menu.
The “Edit Views...” dialog shows that there are six predefined views. Select a view to display its attributes. In this window, we can see that the “Host”, “Task or Process” and “Object” attributes are used to build the view, and they will be displayed in that order. The two list boxes at the bottom allow you to select the attributes for your new view and order them. By default, all attributes are part of the view. Use the “=>” key to remove attributes from your new view. When finished, type a name for the new view and press “Add View.”
When you press “OK” or “Apply”, you’ll see your new view in the “View” menu.
Attribute Wildcards
In the test case we’re using as an example, there are five participants in our CORBA communication – the main thread of the client, the “Main Server”, the "Country Server", the "Aust Server", and the “Extra Server”. Such a small number of participants are easy to keep track of in one window.However, the CORBA client and server participants of a much larger program may not fit so easily on one screen, and may become unwieldy. For this reason, the Remote Call Visualizer has a wildcarding capability. Any one of the attributes – host, process name, thread, frame rate, component, object, interface, and operation – captured by the collector may be wildcarded on the display.
To edit the Visualizer’s wildcards, select “Edit Wildcards…” from the “View” menu. The window displayed looks like this:
The list box on the left displays the attributes that the OVATION
collector collects – host, process name, thread, frame rate, component,
object, interface, and operation. Selecting an attribute such as
“Object” displays the list of wildcards for object names (none so far),
and the list of values collected for objects (“Main Server”, “Aust
Server”, and “Extra Server”, etc.).
We can add a new wildcard for object names. We’ll enter “*Server” in the text box, and press “Add Wildcard”. The new wildcard is added to the list of wildcards for Task or Process names. When we select “*Server” from the Wildcards list box, “Main Server”, “Country Server”, "Aust Server" and "Extra Server" are highlighted to indicate which object names are affected by the wildcard. Press “OK” or “Appl;y” to apply the new wildcard. The main Remote Call Visualizer window changes as follows:
The “Find” Capability
While debugging a large application, it can be difficult to find a call to a certain host, thread, operation, object, etc. The “Find” capability finds an operation whose host, task, thread, interface, operation, or object matches one selected by the user.The “Find” capability is accessed through the “Find” menu. Selecting “Find…” brings up the following dialog box:
All possible attributes of a call are listed in the list box on the left. When you select an attribute, all of the values of that attribute are listed on the right. We’ll select “log_calls” from the “Values” dialog box to search for the first call with the operation name “log_calls” . The Visualizer finds the first occurrence of the operation “log_calls”, highlights it in a thick blue line, and centers the display on it:
Selecting “Find Next” from the dialog box or from the “Find” menu finds the next occurrence of “log_calls”.
The “Dwell” Capability
As you move the mouse around the Visualizer, you’ll notice that as the mouse passes over the blue and yellow lines of each CORBA call, the lines of the call turn green, and the operation name is displayed at the mouse location. This is the “dwell” capability.The “Dwell” capability works with a Client/Server Call Window to display additional information about the highlighted call. The Call Window can be displayed by selecting “Call Window…” from the “View” menu. As the mouse passes over each CORBA call, information about the call is displayed in the call window:
While a call is highlighted in green, clicking the right mouse displays
the following popup menu:
These menu selections allow the user to filter the display based on the
selected call. The four filters are as follows:
- Show Forward Call Tree: Starting with the selected call, trace forward through the call’s call tree to show all calls that are made either directly or indirectly by the selected call.
- Show Reverse Call Tree: Starting with the selected call, trace backwards through the call’s call tree to show all calls that either directly or indirectly caused the selected call to be made.
- Show Only Calls From This Client: Display all of the calls from the selected client.
- Show Only Calls To This Server: Display all of the calls to the selected server.
- Show All Calls: Show all of the calls once again; in other words, go back to the default case
Filtering the Display
Some applications may have a large number of IDL interfaces and/or operations. This plethora of information may cause the Visualizer to become cluttered. The Remote Call Visualizer allows the display to be filtered based on IDL interfaces and/or operations.The "Interface Filter" menu lists all of the IDL interfaces that are known by the Visualizer. The check mark next to each interface indicates that the Visualizer is displaying information for both known IDL interfaces. Unchecking interfaces will cause data pertaining to that interface to be removed from the display. To gain greater control over the filtering, select either the “Select Interfaces...” or “Select Operations...” menu items. “Select Interfaces...” brings up a dialog which lists all IDL interfaces in two list boxes to indicate which ones have been selected. Its functionality is the same as that of the “Interface Filter” menu. “Select Operations...” beings up a dialog which lists all IDL operations, and allows for a finer granularity of filtering:
Filtering Precedence
An interface that is filtered out via the “Interface” filter takes precedence over settings in the the “Operation” filter. If an interface is filtered out, then the operation filters for that interface are ignored. “Select All” turns on every interface and operation; however, “Deselect All” merely turns off every interface.Persistence
The data set in these two filters is persisted between Visualizer sessions for each log file.Sequence Diagram View
The Sequence Diagram view of the OVATION Visualizer depicts the
interactions between components in a CORBA application using UML
notation. This view can be displayed by selecting "Sequence
Diagram View" from the "View" menu. The diagram below shows the
main display of the Sequence Diagram View. At the top of the
diagram itself are a series of boxes containing the names of the process
for which interaction data has been collected by the OVATION Probe
Framework. The names of these processes must be specified in the
"svc.conf" file prior to Probe Framework data collection (see svc.conf configuration
instructions).
The solid arrows traveling from one process to another represent
the CORBA remote calls made in between the processes. The names of
the methods invoked in those calls appear in the middle of the arrows.
The dashed arrows represent the return of the remote invocations.
Calls that do not have dashed return arrows represent one-way
CORBA invocations.
The gray bars that span the beginning and end of remote method calls
are time loci, whose size represent the relative amount of time spent
within the execution of each call. The size of the time loci as
well as the vertical spacing of each of the method invocations can be
controlled by moving the vertical time slider component that appears on
the left side of the diagram. Moving the slider down increases the
timespan ratio and spreads the method invocations and time loci further
apart on the y-axis.
The processes (boxes) that make and receive remote invocations can moved within the diagram to bring two or more processes that may originally be far apart in the diagram closer together. Moving the processes around in the diagram can be done simply by clicking on the process boxes and dragging them around the diagram canvas. Multiple boxes can be selected for moving around by holding down the Shift button on the keyboard and clicking the boxes that need to be moved. The selected boxes can then be moved by dragging any one of those selected in the diagram.
There is a toggle tool bar just above the canvas that can change the amount of details in the sequence diagram. The tool bar has toggle buttons to show or hide method parameter types, the time latencies of CORBA remote invocations (in milliseconds), and user-defined milestone data that may have been gathered by the OVATION Milestone Probe (see Milestone Probe section). Milestones appear in the sequence diagrams as a cyan-colored horizontal line that spans the width of the diagram. User-defined text may appear in the milestone line, as shown below.
Exceptions thrown during remote method invocations are detected by
the OVATION Probe Framework and displayed in the Sequence Diagram
Visualizer in red (as seen
during the call to "gatherArrayElements()" in the diagram above).
Interface Filtering
The Inteface Filter menu can be used to select which interfaces or
methods will appear in the Sequence Diagram Visualizer. The menu
offers the ability to select or deselect all interfaces as well as
selecting interfaces and operations individually. As interfaces
and operations are selected and deselected for display, the Sequence
Diagram Visualizer will update itself automatically.
The "Select Interfaces..." and "Select Operations..." menu items bring
up a dialog window that shows the currently available interfaces and
operations (respectively) that are either included or excluded for
display. The name that appears is the selection dialog is the
fully qualified IDL interface name (IDL:<Interface Module
name>/<Interface name>:<version number>).
JPEG File Creation
Both the Main Visualizer and the Sequence Diagram Visualizer have
the ability to save the current display into a JPEG image file.
From the "File" menu, select the "Save As JPEG..." item and use
the "Save" dialog to type in a name for the JPEG image file to be
created. If a file already exists by the name that has been
entered (e.g. "Some Image file.jpg"), a confirmation dialog will appear
asking whether the existing file should be overwritten.
Event Channel Visualization
The OVATION Probe Framework is capable of gathering CORBA Event Channel data through its RTEC Probe. Event Channel data gathered by the RTEC Probe identifies event supplier and event consumer relationships between components that are part of a distributed application. Visualization of the RTEC Probe Event Channel data is currently supported through the use of the open source GraphViz toolkit and drawing program. GraphViz can run on both Microsoft Windows and Linux platforms (the two platforms currently supported by OVATION), and can be downloaded at the GraphViz website: http://www.research.att.com/sw/tools/graphviz/download.html. The OVATION Visualizer uses GraphViz (and its Java supporting library Grappa) to visualize Event Channel data and the relationships between event suppliers and event consumers. When an OVATION log file containing RTEC Probe data is opened by the OVATION Visualizer, the Event Channel Visualizer window is launched showing the consumer and supplier relationships captured by the RTEC Probe. The diagram below shows what this visualization looks like:
Though the diagram only depicts a single line between an event
supplier and the consumer of the event, the RTEC Probe may have captured
many event publish (push) and consume (pull) messages. The
Visualizer is designed to hide duplicate event depiction and show only
the first event push/pull episode.
Since the OVATION Event Channel Visualizer depends on GraphViz, the GraphViz binary executable files must be "visable" in the runtime Path in order for event channel data to be drawn correctly. On the Windows platform, the GraphViz installer automatically adds the '<GraphViz_InstallDirectory>\bin' to the PATH environment variable. For Linux, however, adding the '<GraphViz_InstallDirectory>\bin' directory to the PATH environment variable is a manual step that must be done by the user. If the GraphViz binary executables are not in the system path when the OVATION Visualizer is started, an error message will be displayed: