kirancodes.me
To Proof Maintenance & Beyond!

Understanding and overcoming parallelism bottlenecks in ForkJoin applications

Gustavo Pinto, Anthony Canino, Fernando Castor, Guoqing Xu, Yu David Liu

Abstract

ForkJoin framework is a widely used parallel programming framework upon which both core concurrency libraries and real-world applications are built. Beneath its simple and user-friendly APIs, ForkJoin is a sophisticated managed parallel runtime unfamiliar to many application programmers: the framework core is a work-stealing scheduler, handles fine-grained tasks, and sustains the pressure from automatic memory management. ForkJoin poses a unique gap in the compute stack between high-level software engineering and low-level system optimization. Understanding and bridging this gap is crucial for the future of parallelism support in JVM-supported applications. This paper describes a comprehensive study on parallelism bottlenecks in ForkJoin applications, with a unique focus on how they interact with underlying system-level features, such as work stealing and memory management. We identify 6 bottlenecks, and found that refactoring them can significantly improve performance and energy efficiency. Our field study includes an in-depth analysis of Akka — a real-world actor framework — and 30 additional open-source ForkJoin projects. We sent our patches to the developers of 15 projects, and 7 out of the 9 projects that replied to our patches have accepted them.

BibTeX
@inproceedings{Pinto-al:ASE17,
  author    = {Gustavo Pinto and
               Anthony Canino and
               Fernando Castor and
               Guoqing Xu and
               Yu David Liu},
  title     = {Understanding and overcoming parallelism bottlenecks in {ForkJoin} applications},
  booktitle = {ASE},
  pages     = {765--775},
  publisher = {{IEEE} Computer Society},
  year      = {2017},
}

Related papers