1 | % T I T L E P A G E |
---|
2 | % ------------------- |
---|
3 | % Last updated June 14, 2017, by Stephen Carr, IST-Client Services |
---|
4 | % The title page is counted as page `i' but we need to suppress the |
---|
5 | % page number. Also, we don't want any headers or footers. |
---|
6 | \pagestyle{empty} |
---|
7 | \pagenumbering{roman} |
---|
8 | |
---|
9 | % The contents of the title page are specified in the "titlepage" |
---|
10 | % environment. |
---|
11 | \begin{titlepage} |
---|
12 | \begin{center} |
---|
13 | \vspace*{1.0cm} |
---|
14 | |
---|
15 | \Huge |
---|
16 | {\bf The \CFA Scheduler} |
---|
17 | |
---|
18 | \vspace*{1.0cm} |
---|
19 | |
---|
20 | \normalsize |
---|
21 | by \\ |
---|
22 | |
---|
23 | \vspace*{1.0cm} |
---|
24 | |
---|
25 | \Large |
---|
26 | Thierry Delisle \\ |
---|
27 | |
---|
28 | \vspace*{3.0cm} |
---|
29 | |
---|
30 | \normalsize |
---|
31 | A thesis \\ |
---|
32 | presented to the University of Waterloo \\ |
---|
33 | in fulfillment of the \\ |
---|
34 | thesis requirement for the degree of \\ |
---|
35 | Doctor of Philosophy \\ |
---|
36 | in \\ |
---|
37 | Computer Science \\ |
---|
38 | |
---|
39 | \vspace*{2.0cm} |
---|
40 | |
---|
41 | Waterloo, Ontario, Canada, 2021 \\ |
---|
42 | |
---|
43 | \vspace*{1.0cm} |
---|
44 | |
---|
45 | \copyright\ Thierry Delisle 2021 \\ |
---|
46 | \end{center} |
---|
47 | \end{titlepage} |
---|
48 | |
---|
49 | % The rest of the front pages should contain no headers and be numbered using Roman numerals starting with `ii' |
---|
50 | \pagestyle{plain} |
---|
51 | \setcounter{page}{2} |
---|
52 | |
---|
53 | \cleardoublepage % Ends the current page and causes all figures and tables that have so far appeared in the input to be printed. |
---|
54 | % In a two-sided printing style, it also makes the next page a right-hand (odd-numbered) page, producing a blank page if necessary. |
---|
55 | |
---|
56 | |
---|
57 | % E X A M I N I N G C O M M I T T E E (Required for Ph.D. theses only) |
---|
58 | % Remove or comment out the lines below to remove this page |
---|
59 | \begin{center}\textbf{Examining Committee Membership}\end{center} |
---|
60 | \noindent |
---|
61 | The following served on the Examining Committee for this thesis. The decision of the Examining Committee is by majority vote. |
---|
62 | \todo{External Examiners} |
---|
63 | \bigskip |
---|
64 | |
---|
65 | \noindent |
---|
66 | \begin{tabbing} |
---|
67 | Internal-External Member: \= \kill % using longest text to define tab length |
---|
68 | External Examiner: \> TBD \\ |
---|
69 | \> TBD \\ |
---|
70 | \end{tabbing} |
---|
71 | \bigskip |
---|
72 | |
---|
73 | \noindent |
---|
74 | \begin{tabbing} |
---|
75 | Internal-External Member: \= \kill % using longest text to define tab length |
---|
76 | Supervisor(s): \> Peter Buhr \\ |
---|
77 | \> Associate Professor, School of Computer Science \\ |
---|
78 | \> University of Waterloo \\ |
---|
79 | \end{tabbing} |
---|
80 | \bigskip |
---|
81 | |
---|
82 | \noindent |
---|
83 | \begin{tabbing} |
---|
84 | Internal-External Member: \= \kill % using longest text to define tab length |
---|
85 | Internal Member: \> Trevor Brown \\ |
---|
86 | \> Assistant Professor, School of Computer Science \\ |
---|
87 | \> University of Waterloo \\ |
---|
88 | \\ |
---|
89 | Internal Member: \> Martin Karsten \\ |
---|
90 | \> Associate Professor, School of Computer Science \\ |
---|
91 | \> University of Waterloo \\ |
---|
92 | \end{tabbing} |
---|
93 | \bigskip |
---|
94 | |
---|
95 | \noindent |
---|
96 | \begin{tabbing} |
---|
97 | Internal-External Member: \= \kill % using longest text to define tab length |
---|
98 | Internal-External Member: \> TBD \\ |
---|
99 | \> TBD \\ |
---|
100 | \> University of Waterloo \\ |
---|
101 | \end{tabbing} |
---|
102 | \bigskip |
---|
103 | |
---|
104 | \cleardoublepage |
---|
105 | |
---|
106 | % D E C L A R A T I O N P A G E |
---|
107 | % ------------------------------- |
---|
108 | % The following is a sample Declaration Page as provided by the GSO |
---|
109 | % December 13th, 2006. It is designed for an electronic thesis. |
---|
110 | \noindent |
---|
111 | I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners. |
---|
112 | |
---|
113 | \bigskip |
---|
114 | |
---|
115 | \noindent |
---|
116 | I understand that my thesis may be made electronically available to the public. |
---|
117 | |
---|
118 | \cleardoublepage |
---|
119 | |
---|
120 | % A B S T R A C T |
---|
121 | % --------------- |
---|
122 | |
---|
123 | \begin{center}\textbf{Abstract}\end{center} |
---|
124 | |
---|
125 | User-Level threading (M:N) is gaining popularity over kernel-level threading (1:1) in many programming languages. |
---|
126 | The user threading approach is often a better mechanism to express complex concurrent applications by efficiently running 10,000+ threads on multi-core systems. |
---|
127 | Indeed, over-partitioning into small work-units with user threading significantly eases load bal\-ancing, while simultaneously providing advanced synchronization and mutual exclusion capabilities. |
---|
128 | To manage these high levels of concurrency, the underlying runtime must efficiently schedule many user threads across a few kernel threads; |
---|
129 | which begs of the question of how many kernel threads are needed and should the number be dynamically reevaluated. |
---|
130 | Furthermore, scheduling must prevent kernel threads from blocking, otherwise user-thread parallelism drops. |
---|
131 | When user-threading parallelism does drop, how and when should idle kernel-threads be put to sleep to avoid wasted CPU resources. |
---|
132 | Finally, the scheduling system must provide fairness to prevent a user thread from monopolizing a kernel thread; |
---|
133 | otherwise other user threads can experience short/long term starvation or kernel threads can deadlock waiting for events to occur on busy kernel threads. |
---|
134 | |
---|
135 | This thesis analyses multiple scheduler systems, where each system attempts to fulfill the necessary requirements for user-level threading. |
---|
136 | The predominant technique for managing high levels of concurrency is sharding the ready-queue with one queue per kernel-thread and using some form of work stealing/sharing to dynamically rebalance workload shifts. |
---|
137 | Preventing kernel blocking is accomplish by transforming kernel locks and I/O operations into user-level operations that do not block the kernel thread or spin up new kernel threads to manage the blocking. |
---|
138 | Fairness is handled through preemption and/or ad-hoc solutions, which leads to coarse-grained fairness with some pathological cases. |
---|
139 | |
---|
140 | After testing and selecting specific approaches to these scheduling issues, a complete implementation was created and tested in the \CFA (C-for-all) runtime system. |
---|
141 | \CFA is a modern extension of C using user-level threading as its fundamental threading model. |
---|
142 | As one of its primary goals, \CFA aims to offer increased safety and productivity without sacrificing performance. |
---|
143 | The new scheduler achieves this goal by demonstrating equivalent performance to work-stealing schedulers while offering better fairness. |
---|
144 | The implementation uses several optimizations that successfully balance the cost of fairness against performance; |
---|
145 | some of these optimizations rely on interesting hardware optimizations present on modern CPUs. |
---|
146 | The new scheduler also includes support for implicit nonblocking \io, allowing applications to have more user-threads blocking on \io operations than there are \glspl{kthrd}. |
---|
147 | The implementation is based on @io_uring@, a recent addition to the Linux kernel, and achieves the same performance and fairness as systems using @select@, @epoll@, \etc. |
---|
148 | To complete the scheduler, an idle sleep mechanism is implemented that significantly reduces wasted CPU cycles, which are then available outside of the application. |
---|
149 | |
---|
150 | \cleardoublepage |
---|
151 | |
---|
152 | % A C K N O W L E D G E M E N T S |
---|
153 | % ------------------------------- |
---|
154 | |
---|
155 | \begin{center}\textbf{Acknowledgements}\end{center} |
---|
156 | |
---|
157 | \todo{Acknowledgements} |
---|
158 | \cleardoublepage |
---|
159 | |
---|
160 | % D E D I C A T I O N |
---|
161 | % ------------------- |
---|
162 | |
---|
163 | % \begin{center}\textbf{Dedication}\end{center} |
---|
164 | |
---|
165 | % This is dedicated to the one I love. |
---|
166 | % \cleardoublepage |
---|
167 | |
---|
168 | % T A B L E O F C O N T E N T S |
---|
169 | % --------------------------------- |
---|
170 | \renewcommand\contentsname{Table of Contents} |
---|
171 | \tableofcontents |
---|
172 | \cleardoublepage |
---|
173 | \phantomsection % allows hyperref to link to the correct page |
---|
174 | |
---|
175 | % L I S T O F T A B L E S |
---|
176 | % --------------------------- |
---|
177 | \addcontentsline{toc}{chapter}{List of Tables} |
---|
178 | \listoftables |
---|
179 | \cleardoublepage |
---|
180 | \phantomsection % allows hyperref to link to the correct page |
---|
181 | |
---|
182 | % L I S T O F F I G U R E S |
---|
183 | % ----------------------------- |
---|
184 | \addcontentsline{toc}{chapter}{List of Figures} |
---|
185 | \listoffigures |
---|
186 | \cleardoublepage |
---|
187 | \phantomsection % allows hyperref to link to the correct page |
---|
188 | |
---|
189 | % GLOSSARIES (Lists of definitions, abbreviations, symbols, etc. provided by the glossaries-extra package) |
---|
190 | % ----------------------------- |
---|
191 | \printglossary[type=\acronymtype] |
---|
192 | \cleardoublepage |
---|
193 | \phantomsection % allows hyperref to link to the correct page |
---|
194 | |
---|
195 | % TODOs and missing citations |
---|
196 | % ----------------------------- |
---|
197 | \listofcits |
---|
198 | \listoftodos |
---|
199 | \cleardoublepage |
---|
200 | \phantomsection % allows hyperref to link to the correct page |
---|
201 | |
---|
202 | |
---|
203 | % Change page numbering back to Arabic numerals |
---|
204 | \pagenumbering{arabic} |
---|
205 | |
---|