Abstract: As a lightweight substitute for kernel-level threads (KLTs) provided by an OS kernel, user-level threads (ULTs) have been extensively studied for decades to exploit fine-grained and irregular parallelism on modern multicore processors. Current major ULT implementations do not support preemption; in contrast to KLTs, ULTs yield their executions to others only at predetermined scheduling points. Lack of the preemption capability leads to bad responsiveness for high-priority threads and causes a deadlock at blocking operations, limiting the mainstream use of ULTs.
We deeply investigate implementations and overheads of preemptive ULTs that are suited for building general ULT libraries. In particular, we explore two types of preemptive ULTs. One is an existing technique that makes ULT yield in a signal handler. This technique is lightweight but requires async-signal-safety for threads. We newly devised KLT switching, which allows non-async-signal-safe ULTs. Our microbenchmarks show that these techniques can be as lightweight as traditional non-preemptive ULTs while providing the preemption capability as KLTs do. Our preliminary evaluation with applications demonstrates productivity and performance improvement brought by preemptive ULTs.
Bio:Shumpei Shiina is a first year Master’s student at the University of Tokyo. He received the B.E. degree in 2019. His research interests include thread schedulers, user-level threading techniques, and task parallel algorithms. He has published a paper about a scheduling algorithm called almost deterministic work stealing at SC19.