x.Link - Java Performance Engineering

x.Link is the intelligent Java J2EE profiling tool from Kimble.  The x.Link agent works with any JVMPI compliant Java virtual machine to instrument critical system functions in a J2EE application.  Written in efficient C++ the agent is a low overhead process enabling it to be deployed on test and production systems alike.

The x.Link agent intercepts Java Classes as they are loaded by the JVM.  It matches relevant J2EE methods based on user configurable filters.  These are then instrumented at the byte code level to provide detailed timing information.  The x.Link agent also provides a high resolution clock to provide accurate micro-second precise timing information far in excess of that available using the standard System class.

The instrumentation code logs timing metrics with a separate collector service that can be run on a machine connected anywhere on the network.  Clustered systems can run their own agents that all log to this single machine, giving a single point of contact for displaying user data.  The Collector machine also incorporates a lightweight Web server.  Users can view performance results with a web browser from their own workstation.

The x.Link instrumentation engine is available as a development kit for organizations wishing to program their own front ends.

x.Link is open source and is now available to developers via www.SourceForge.net

x.Link - a J2EE Performance Profiler

x.Link is a Java J2EE performance profiler.  Using byte code modification it aims to have a minimal impact on running systems and can even be used in production systems

I am developing x.Link as the current solutions to profile J2EE systems (Introscope, OptomizeIt etc) are beyond the reach of many development budgets.  It is a product that is directly applicable to my job, tuning Java J2EE projects.

The project consists of a lightweight collector agent, written in C++ which sends performance data to a backend server written in Java.  The server integrates the Jetty engine to provide a Web interface for users.  This is considerably more flexible in environments where the monitored system is separated from the user by a firewall.

Having started two OS projects (Cobra and JAMS) and having worked on others I know one of the most frustrating things is not having good documentation or an overview of the architecture of the project.  Eric Raymond also says that a successful OS project should only be released when it can be easily built and actually does something useful.  Hopefully x.Link will satisfy both concerns.

x.Link uses byte code modification in order to insert timing routines at the start and end of each method call.  Whilst not rocket science this isnít for the faint-hearted and developers who want to work on the sharp end, that is, the agent, would need a grasp of C++ and assembly language.  Hopefully there isnít too much to do here, beyond a clean up and bug fix.

The front end consists of Java servlets running under the Jetty Servlet engine (yes Iíve used existing libraries wherever possible to save development effort and leverage the excellent OS code that is out there).  To work on this you will need a knowledge of Java and Servlets.  Iíve used the Velocity template engine so there is work for people who know XML/HTML too.

Hopefully that hasnít put you off and you are still raring to go.  What follows are instructions to get you started and a tour of the essential architecture.