# source:doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex@0a945fd

Last change on this file since 0a945fd was 0a945fd, checked in by Thierry Delisle <tdelisle@…>, 2 years ago

Minor fixes in compII

• Property mode set to 100644
File size: 40.6 KB
Line
1\documentclass[11pt]{article}
2\usepackage{fullpage}
3\usepackage[T1]{fontenc}
4\usepackage[utf8]{inputenc}
5\usepackage{xspace}
6\usepackage{xcolor}
7\usepackage{graphicx}
8\usepackage{epic,eepic}
9\usepackage{listings}                   % for code listings
10\usepackage{glossaries}
11\usepackage{textcomp}
12% cfa macros used in the document
13\input{common}
14
15\setlist{topsep=6pt,parsep=0pt}         % global reduce spacing between points
16\newcommand{\uC}{$\mu$\CC}
18\setlength{\abovecaptionskip}{5pt plus 3pt minus 2pt}
468However, only a small subset of the features are available in Ubuntu as of April 2020~\cite{wiki:ubuntu-linux}, which will limit performance comparisons.
469I do not believe this will affect the comparison result.
470
471\paragraph{Event Engine}
472Above the OS asynchronous abstraction is the event engine.
473This engine is responsible for multiplexing (batching) the synchronous I/O requests into asynchronous I/O requests and demultiplexing the results to appropriate blocked user threads.
474This step can be straightforward for simple cases, but becomes quite complex when there are thousands of user threads performing both reads and writes, possibly on overlapping file descriptors.
475Decisions that need to be made include:
476\begin{enumerate}
477\item
478whether to poll from a separate kernel thread or a regularly scheduled user thread,
479\item
480what should be the ordering used when results satisfy many requests,
481\item
482how to handle threads waiting for multiple operations, etc.
483\end{enumerate}
484
485\paragraph{Interface}
486Finally, for these non-blocking I/O components to be available, it is necessary to expose them through a synchronous interface because that is the \CFA concurrent programming style.
487The interface can be novel but it is preferable to match the existing POSIX interface when possible to be compatible with existing code.
488Matching allows C programs written using this interface to be transparently converted to \CFA with minimal effort.
489Where new functionality is needed, I will add novel interface extensions to fill gaps and provide advanced features.
490
491
492% ===============================================================================
493% ===============================================================================
494\section{Discussion}
495I believe that runtime system and scheduling are still open topics.
496Many state of the art'' production frameworks still use single-threaded event loops because of performance considerations, \eg~\cite{nginx-design}, and, to my knowledge, no widely available system language offers modern threading facilities.
497I believe the proposed work offers a novel runtime and scheduling package, where existing work only offers fragments that users must assemble themselves when possible.
498
499% ===============================================================================
500% ===============================================================================
501\section{Timeline}
502\begin{center}
503\begin{tabular}{ | r @{--} l | p{4in} | }
504\hline May 2020 & October 2020   & Creation of the performance benchmark. \\
505\hline November 2020 & March 2021   & Completion of the implementation. \\
506\hline March 2021 & April 2021  & Final Performance experiments. \\
507\hline May 2021 & August 2021 & Thesis writing and defence. \\
508\hline
509\end{tabular}
510\end{center}
511
512% B I B L I O G R A P H Y
513% -----------------------------
514\cleardoublepage
515\phantomsection         % allows hyperref to link to the correct page