Optimization Coaching for Fork/Join Applications on the Java Virtual Machine
Developing parallel applications that exploit the hardware resources remains challenging. We tackle this issue for fork/join applications running on a single Java Virtual Machine (JVM) in a shared-memory multicore. An optimal fork/join application should maximize parallelism while minimizing overheads, and maximize locality while minimizing contention. Unfortunately, achieving these goals is challenging due to the complexity of tuning fork/join applications. As a result, fork/join applications often suffer from several performance issues such as excessive object creation and reclaiming, suboptimal forking, load imbalance, and inappropriate synchronization. In contrast to the extensive manual experimentation commonly required to properly tune fork/join applications, we devise a coaching tool able to automatically point developers to specific parts of such applications where performance problems originate and suggest concrete code modifications to fix them. Given the increasing popularity of fork/join parallelism on the JVM, many applications can benefit from our approach, including applications using standard Java APIs such as Streams and CompletableFuture.
Tue 2 Apr
|11:00 - 11:30|
Fabio NiephausHasso Plattner Institute, University of Potsdam, Tim FelgentreffOracle Labs, Potsdam, Tobias PapeHasso Plattner Institute, Germany, Robert HirschfeldHasso-Plattner-Institut (HPI), GermanyPre-print
|11:30 - 12:00|
|12:00 - 12:30|
Shoaib AkramGhent University