Lightweight Preemptible Functions
2020 USENIX Annual Technical Conference (USENIX ATC '20). Virtual Boston, MA, July 15–17, 2020.
Sol Boucher1, Anuj Kalia2, David G. Andersen1, Michael Kaminsky3
1 Carnegie Mellon University
2 Microsoft Research, Carnegie Mellon University
3 BrdgAI, Carnegie Mellon University
Lamenting the lack of a natural userland abstraction for preemptive interruption and asynchronous cancellation, we propose lightweight preemptible functions, a mechanism for synchronously performing a function call with a precise timeout that is lightweight, e- cient, and composable, all while being portable between programming languages. We present the design of libinger, a library that provides this abstraction, on top of which we build libturquoise, arguably the rst generalpurpose and backwards-compatible preemptive thread library implemented entirely in userland. Finally, we demonstrate this software stack’s applicability to and performance on the problems of combatting head-ofline blocking and time-based DoS attacks.