Modern Concurrency Platforms Require Modern System-Call Techniques
Please always quote using this URN: urn:nbn:de:bvb:29-opus4-176555
- 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 codeWriting 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.…
Author: | Florian SchmausORCiD, Florian Fischer, Timo HönigORCiD, Wolfgang Schröder-Preikschat |
---|---|
Persistent identifiers - URN: | urn:nbn:de:bvb:29-opus4-176555 |
Persistent identifiers - DOI: | https://doi.org/10.25593/issn.2191-5008/CS-2021-02 |
ISSN: | ISSN 2191-5008 |
Series (Volume number): | Technical reports / Department Informatik (CS-2021-02) |
Document Type: | Report |
Language: | English |
Year of publication: | 2021 |
Date of online publication (Embargo Date): | 2021/11/23 |
Publishing Institution: | Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) |
Release Date: | 2021/11/24 |
Tag: | concurrency platform; concurrent programming; operating systems; parallel programming |
Notes: | This work was partially funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) – project number~146371743 – TRR 89 "Invasive Computing". |
Institutes: | Technische Fakultät |
Dewey Decimal Classification: | 0 Informatik, Informationswissenschaft, allgemeine Werke / 00 Informatik, Wissen, Systeme / 003 Systeme |
open_access (DINI-Set): | open_access |
Licence (German): | ![]() |