DOE OSTI · 1660747
Analyzing the Performance Trade-Off in Implementing User-Level Threads
Abstract
User-level threads have been widely adopted as a means of achieving lightweight concurrent execution without the costs of OS-level threads. Nevertheless, the costs of managing user-level threads represent a performance barrier that dictates how fine grained the concurrency exposed by an application can be without incurring significant overheads; this in turn may translate into insufficient parallelism to exploit highly parallel systems. This article is a deep dive into the fundamental costs in implementing user-level threads. We first identify that one of the highest sources of fork-join overheads stems from deviations, events that incur context switching during the execution of a thread and disrupt a run-to-completion execution. We then conduct an in-depth investigation of a wide spectrum of methods with respect to how they handle deviations while covering both parent- and child-first scheduling policies. Our methodology involves a comprehensive instruction- and cache-level analysis of all methods on several modern CPU architectures. Finally, the primary finding of our evaluation is that dynamic promotion methods that assume the absence of deviation and dynamically provide context-switching support offer the best trade-off between performance and capability when the likelihood of deviation is low.
Explore related subjects
Keep this discovery
Explore connections, maps & timelines
Iwasaki, Shintaro, Amer, Abdelhalim, Taura, Kenjiro, Balaji, Pavan. 2020-02-28. Analyzing the Performance Trade-Off in Implementing User-Level Threads. https://doi.org/10.1109/tpds.2020.2976057
Cite the original work for its findings. Save a collection to share your selection of sources.