Modern Concurrency Platforms Require Modern System-Call Techniques

Language
en
Document Type
Report
Issue Date
2021-11-24
Issue Year
2021
Authors
Schmaus, Florian
Fischer, Florian
Hönig, Timo
Schröder-Preikschat, Wolfgang
Editor
Abstract

Writing well-maintainable parallel programs that efficiently utilize many processor cores is still a significant challenge. Threads are hard to use, and so are event-based schemes. Furthermore, threads are affected by the blocking anomaly, that is, the loss of parallelism when threads execute a blocking system call—often resulting in low core utilization and unnecessarily high response times. This paper introduces pseudo-blocking system calls built upon modern asynchronous queue-based system-call techniques (like Linux’s io_uring) circumventing the blocking anomaly. They are similar to Go’s programming model, where one develops against a blocking interface to keep the code structure clean. However, instead of using synchronous non-blocking system calls as the underlying technique, our approach internally uses an asynchronous queue-based interface. We further present a novel architec- ture for concurrency platforms, like Cilk and Go, enabling low latencies and high throughput via pseudo-blocking system calls. Finally, we discuss future OS enhancements that would improve our proposed architecture. We imple- mented and evaluated a concurrency platform based on the concept of pseudo-blocking system calls. Our platform can outperform state-of-the-art systems like Go by 1.17 × in a file-content search benchmark. It is able to increase the throughput of a echo-server benchmark by 4 % when compared to Go, and by 17.8 % when compared to Rust’s Tokio while improving the tail latency.

Series
Technical reports / Department Informatik
Series Nr.
CS-2021-02
Notes
This work was partially funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) – project number~146371743 – TRR 89 Invasive Computing.
Faculties & Collections
Zugehörige ORCIDs