Home Blog Java Development How the YourKit Profiler Helps Us Support Our Customers
Follow Me on Pinterest

AIE can be used as a comprehensive information application development platform. When it's used this way customers can develop arbitrarily complex applications that can have a variety of performance and memory runtime profiles. So whether we are testing an upcoming feature or helping a customer in the field debug a production application, we often turn to the YourKit Java profiler. Aside from the IDE I use every day (Eclipse), YourKit is hands down the most useful developer's tool I use.

Why YourKit is Awesome

BSD license/API

The YourKit license allows unrestricted shipment and embedding of the server agent. This enables us to ship the agent with our core product. Since the API supports runtime activation and deactivation of profiling, we can include the profiling capability in all executing instances of AIE. Often performance and memory utilization issues can only be observed in the field while running real applications against real data. This capability allows us to have this support ready to turn on, while having minimal impact on runtime performance or stability. Captured profiling snapshots can then be sent back to the office for analysis.

yourkit-ticket.jpg

Customer Service

Whenever we have had an issue with using YourKit, they have responded exceptionally quickly with fixes and updates. They also have a great forum with quick turn around on questions from the development staff. Even if some of the fancier features (which I love but could live without) were not present, this kind of customer service is what makes us feel that we are working with a company we can depend on. This is the type of partnership focus that makes a software company great to work with, and what we always strive to achieve at Attivio. Examples of issues YourKit has addressed for us:

  • They quickly added support for the runtime specification of the agent listener port. AIE uses several ports, each located at standard offset from a user-specified baseport. This feature allows the profiler port to play nicely with our standard configurations.
  • They added the -disableall option to allow easily disabling all instrumentation and default profiling activities. AIE runs with this option by default. This new feature allows us to be future-proofed against new instrumentation options.
  • In large memory environments, dumping the entire JVM heap can take a long time. They added a new option -disableoomedumper in less than 5 business days. See http://forums.yourkit.com/viewtopic.php?f=2&t=3266.

UI/Analysis

YourKit has all the standard profiler capabilities and some great UI to go along with it. The list below is not at all comprehensive, but includes some of my favorites. It is clear that YourKit has put a lot of thought and effort into providing a tool that helps you work with the snapshot you've got, which is critical for diagnosing production issues.

Threads Visualization

Sometimes in a multi-threaded application it can be difficult to understand what is going on at a specific time in the application. The YourKit profiler has a threads visualization that helps with this. Its color-coded view shows the state of threads over time and allows you to view the stack traces of all threads at a particular point in time.

YourKit Screenshot

CPU Telemetry

When it comes to solving CPU performance issues, the CPU telemetry view is our standard first stop. The Hot Spots link usually directs us to the culprit very quickly. When the problem is more complex than that, the Merged Callees tab allows us to find all the places a particular method is called and allows easy navigation up and down the call stack. The image below shows the ability to select a subset of time in order to further fine tune this analysis:

YourKit Screenshot

Monitor Tracking

Sometimes a performance problem is not due to an inefficient algorithm, but due to multiple threads competing for a shared resource. The monitor view helps to track down these types of issues. For each thread, the time it has spent waiting or blocked is displayed along with the stack traces of the various cases.

YourKit Screenshot

There's a lot more I don't have time to address. But YourKit is continually innovating and preparing for the future. Probes are an exciting new feature we plan on using that will allow customization and fine-tuning of profiling. There is JRockit and Java 7 support as well.

Trackback(0)
Comments (0)add comment

Write comment
smaller | bigger

security image
Write the displayed characters


busy