- Timestamp:
- Sep 13, 2022, 3:07:25 PM (22 months ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation
- Children:
- 3606fe4
- Parents:
- 1c334d1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/thierry_delisle_PhD/thesis/text/conclusion.tex
r1c334d1 rfc96890 2 2 3 3 Building the \CFA runtime has been a challenging project. 4 The work was divided between high-level concurrency design and a user-level threading runtime (Masters' s thesis), and low-level support of the user-level runtime using OS kernel-threading and its (multiple) I/O subsystems (Ph.D. thesis).4 The work was divided between high-level concurrency design and a user-level threading runtime (Masters' thesis), and low-level support of the user-level runtime using OS kernel threading and its (multiple) I/O subsystems (Ph.D. thesis). 5 5 Because I am the main developer for both components of this project, there is strong continuity across the design and implementation. 6 6 This continuity provides a consistent approach to advanced control flow and concurrency, with easier development, management and maintenance of the runtime in the future. 7 7 8 I believed my Masters' swork would provide the background to make the Ph.D. work reasonably straightforward.8 I believed my Masters' work would provide the background to make the Ph.D. work reasonably straightforward. 9 9 However, I discovered two significant challenges. 10 10 … … 20 20 Second, the kernel locking, threading, and I/O in the Linux operating system offer very little flexibility and are not designed to facilitate user-level threading. 21 21 There are multiple concurrency aspects in Linux that require carefully following a strict procedure to achieve acceptable performance. 22 To be fair, many of these concurrency aspects were designed 30-40 years ago, when there were few multi -processor computers and concurrency knowledge was just developing.22 To be fair, many of these concurrency aspects were designed 30-40 years ago, when there were few multiprocessor computers and concurrency knowledge was just developing. 23 23 Unfortunately, little has changed in the intervening years. 24 24 … … 26 26 The positive is that @io_uring@ supports the panoply of I/O mechanisms in Linux; 27 27 hence, the \CFA runtime uses one I/O mechanism to provide non-blocking I/O, rather than using @select@ to handle TTY I/O, @epoll@ to handle network I/O, and managing a thread pool to handle disk I/O. 28 Merging all these different I/Omechanisms into a coherent scheduling implementation would require much more work than what is present in this thesis, as well as detailed knowledge of multiple I/O mechanisms.28 Merging all these different \io mechanisms into a coherent scheduling implementation would require much more work than what is present in this thesis, as well as detailed knowledge of multiple I/O mechanisms. 29 29 The negative is that @io_uring@ is new and developing. 30 30 As a result, there is limited documentation, few places to find usage examples, and multiple errors that required workarounds. … … 75 75 76 76 \section{Future Work} 77 While the \CFA runtime achieves a better compromise ,than other schedulers, in terms of performance and fairness, I believe further improvements can be made to reduce or eliminate the few cases where performance does deteriorate.77 While the \CFA runtime achieves a better compromise than other schedulers, in terms of performance and fairness, I believe further improvements can be made to reduce or eliminate the few cases where performance does deteriorate. 78 78 Fundamentally, achieving performance and starvation freedom will always be goals with opposing needs even outside of scheduling algorithms. 79 79 80 80 \subsection{Idle Sleep} 81 A difficult challenge, not fully addressed in this thesis, is idle -sleep.81 A difficult challenge, not fully addressed in this thesis, is idle sleep. 82 82 While a correct and somewhat low-cost idle-sleep mechanism is presented, several of the benchmarks show notable performance degradation when too few \ats are present in the system. 83 83 The idle sleep mechanism could therefore benefit from a reduction of spurious cases of sleeping. … … 88 88 \begin{itemize} 89 89 \item 90 The mechanism uses a hand -shake between notification and sleep to ensure that no \at is missed.90 The mechanism uses a handshake between notification and sleep to ensure that no \at is missed. 91 91 \item 92 The hand -shake correctness is critical when the last \proc goes to sleep but could be relaxed when several \procs are awake.92 The handshake correctness is critical when the last \proc goes to sleep but could be relaxed when several \procs are awake. 93 93 \item 94 94 Furthermore, organizing the sleeping \procs as a LIFO stack makes sense to keep cold \procs as cold as possible, but it might be more appropriate to attempt to keep cold CPU sockets instead.
Note: See TracChangeset
for help on using the changeset viewer.