Optimization coaching for fork/join applications on the Java virtual machine.

2019 
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.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    42
    References
    0
    Citations
    NaN
    KQI
    []