Instrumentation / Profiling Software
Paul Pazandak
Object Services & Consulting, Inc.
Given the need within the DASADA project for software-based instrumentation tools that we can use to insert (Java-based) probes, I performed a reasonable scan on the internet for available systems. Using this list I derived a classification system (hence it could evolve) to help describe the available systems. We make this available for informational purposes and for anyone interested in (java-based) instrumentation and profiling software. If anyone wants to contribute, please forward references/reviews of the given systems (tools written in other languages welcome). [Disclaimer: As probe tools are secondary to our contract the reviews are not intented to be comprehensive in nature.]
Note: I've also added some non-Java based probe references at the bottom.
Classification Scheme
I have divided the tools into the following categories and sub-categories:
- Environmental
- (or application-external) these tools instrument an application without any application-specific code alteration through indirect means.
- OS / JVM
level - a special case whereby the underlying OS is instrumented
- External Application (Non-OS) level
- these tools provide application-external means to probe the application, such as instrumenting the communication path by use of a web proxy
- Application-Internal
- Tools which enable one to instrument the application directly.
- Source Code level
- Tool supports instrumenting of the source code
- Bytecode level
- Tool supports instrumenting of the byte code / binaries. In general, these tools do not supply probes, rather they provide the ability to instrument given that they enable one to edit bytecode.
- Canned/closed systems -
The differentiation here is that these vendors provide a canned tool to instrument. That is, a constrained ability to instrument applications with their probing code, not yours. These tools come with visualization tools tool.
other categories??
[Some systems fit into multiple categories.]
Java-based Systems/Tools
Environmental
External Application
- NetCool - Micromuse - COTS - Large suite of software monitors and testing tools.
- RMON - AdventNet - COTS - Network Monitoring
JVM
- Jinsight - IBM AlphaWorks - ROTS - instrumented JVM
- eTective - AverStar - COTS - instrumented JVM. Apparent ability to target specific components & points of interest. Support for Visibroker CORBA, COM based applications, and some web servers.
Application-Internal
Source Code
- JavaScope
NASun Microsystems - Discontinued/Unavailable -- Provided tool to instrument application and browser to view resulting data. Appears that it would instrument everything, no control over instrumentation techniques, location, or ability to add probes.
Bytecode (ROTS unless otherwise noted) Each provides at least a basic ability to modify java bytecode.
Canned Commercial Tools
C++
Environmental
Application-Internal
Source Code
Bytecode (e.g. DLLs)
- DProbes - IBM - LINUX-based - Dynamic Probes is a generic and pervasive debugging facility. It can be used for debugging a deep-rooted operating system problem in a live environment, for example in the page-manager of the kernel. The Dprobes facility can be used to insert software probes dynamically into executing code modules
- Dynamic Probe Class Library (DPCL) - IBM - an object based C++ class library toolkit that can be used to build apps that can dynamically insert probes into running applications.
NA
- Does not appear to be an active project / tool
The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the Defense Advanced Research Projects Agency or the U.S. Government
© Copyright 2000 Object Services and Consulting, Inc. All Rights reserved.