Friday, January 15, 2010

Sondasplorer - A bytecode instrumentalization framework

Sondasplorer is the new personal project which I am working on.


Sondasplorer is a framework that allows us to add probes to existing classes and methods according to necessities, which let us to isolate the complexity of modifying the Java bytecode. This framework let us use existing Sondasplorer probes or even create ours in a very easy and friendly way.

Sondasplorer is designed to be extremally fast being suitable to be used in both Preproduction and Production environments. We can make similar things to commercial tools as PerformaSure and Introscope !!!

In Sondasplorer framework a probe is a Java class which purpose is to assess and/or modify any parameter in runtime. For example we can:
  • Assess methods total execution time
  • Assess methods exclusive execution time
  • Assess execution errors
  • Investigate methods calling parameters
  • Assess methods invocation count
  • Generate a performance execution tree
  • Detect memory leaks
  • Alter existing classes funcionality in a transparent way
  • What your imagination can create
For example, there exists a probe specialized in PreparedStatements that let us to assess the execution time and to view which parameters they were called with!

The probes can send the collected information to remote managers where the raw information can be processed, stored and viewed both in runtime and offline. We can have a battery of probes as our working toolkit.

The bytecode modification (instrumentalization) is realized in a dynamic and transparent way meaning that it is not neccesary to alter existing applications to add probes. We have only to indicate the classes and/or methods we want to instrumentalize and the framework will automatically modify the classes just in the time of being loaded.

Every Java application can be instrumentalized, including standalone and web applications running in application servers (Websphere, Tomcat, etc).

It is possible to enable and disable probes on demand. That allow us, for example, to enable the full-trace of a probe only when is needed and during the neccesary time. This is very useful in Preproduction environments where it is not possible to enable the full-trace mode from the beginning of a heavy test.

Following I have attached some captures of a probe I am currently developing called WebProbe that let us analyze the performance of web applications:




As you can see, we can have multiples views over the same collected data set and even better, we can define our views adapted to our necessities.

The characteristcs will be better specified in new entries.

If you consider Sondasplorer interesting, any help would be really appreciated!!


No comments:

Post a Comment