Measuring Java Util Concurrent parking contention in the IBM J9 Virtual Machine
University of New Brunswick
Java Util Concurrent (JUC) is a widely used library providing support for multithreaded applications. JUC provides a variety of tools such as explicit locks, thread pools, blocking queues etc. Many of these constructs use thread parking as a means of synchronizing threads. Measuring thread parking contention can potentially provide information which can be used to accelerate Java applications through the identification of bottlenecks. To the best of our knowledge, no such tool exists, possessing the ability to run as part of the JVM while not otherwise modifying the JUC base classes. IBM's J9 Virtual Machine, which is an implementation of a Java Virtual Machine (JVM), has been modified to store parking contention data and output the results to the screen or to Java dumps. We also show that our tool has a negligible effect on the performance of the JVM. Furthermore, we have investigated coding patterns involving JUC locks and have used our tool to identify bottlenecks and consequently accelerate the Java code. We conclude that our instrumentation to the JUC thread parking implementation provides useful information to developers hoping to optimize application performance.