Changes in / [0a6da484:21923bd]
- Location:
- doc/theses/thierry_delisle_PhD/comp_II
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex
r0a6da484 r21923bd 447 447 $select$ entails significant complexity and is being replaced in UNIX operating-systems, which make it a less interesting alternative. 448 448 Another popular interface is $epoll$\cite{epoll}, which is supposed to be cheaper than $select$. 449 However, $epoll$ also does not handle the file system and anectodal evidence suggest it has problem with linux pipes and $TTY$s. 450 A popular cross-platform alternative is $libuv$\cite{libuv}, which offers asynchronous sockets and asynchronous file system operations (among other features). 449 However, $epoll$ also does not handle the file system and seems to have problem to linux pipes and $TTY$s\cit. 450 A very recent alternative that I am investigating is $io_uring$\cite{io_uring}. 451 It claims to address some of the issues with $epoll$ but is too recent to be confident that it does. 452 Finally, a popular cross-platform alternative is $libuv$\cite{libuv}, which offers asynchronous sockets and asynchronous file system operations (among other features). 451 453 However, as a full-featured library it includes much more than I need and could conflict with other features of \CFA unless significant effort is made to merge them together. 452 A very recent alternative that I am investigating is $io_uring$\cite{io_uring}.453 It claims to address some of the issues with $epoll$ and my early investigating suggest that the claim is accurate.454 $io_uring$ uses a much more general approach where system calls are register to a queue and later executed by the kernel, rather than relying on system calls to return an error instead of blocking and subsequently waiting for changes on file descriptors.455 I believe this approach allows for fewer problems, \eg the manpage for $open$\cite{open} states:456 \begin{quote}457 Note that [the $O_NONBLOCK$ flag] has no effect for regular files and block devices;458 that is, I/O operations will (briefly) block when device activity is required, regardless of whether $O_NONBLOCK$ is set.459 Since $O_NONBLOCK$ semantics might eventually be implemented, applications should not depend upon blocking behavior when specifying this flag for regular files and block devices.460 \end{quote}461 This makes approach based on $epoll$/$select$ less reliable since they may not work for every file descriptors.462 For this reason, I plan to use $io_uring$ as the OS abstraction for the \CFA runtime, unless further work shows problems I haven't encountered yet.463 However, only a small subset of the features are available in Ubuntu as of April 2020\cite{wiki:ubuntu-linux}, which will limit performance comparisons.464 I do not believe this will affect the comparison result.465 454 466 455 \paragraph{Event Engine} … … 488 477 % =============================================================================== 489 478 \section{Discussion} 490 I believe that runtime system and scheduling are still open topics. 491 Many ``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 wideyl available system language offers modern threading facilities. 492 I believe the proposed work offers a novel runtime and scheduling package, where existing work only offers fragments that users must assemble themselves when possible. 479 493 480 494 481 % =============================================================================== 495 482 % =============================================================================== 496 483 \section{Timeline} 497 \begin{center} 498 \begin{tabular}{ | r @{--} l | p{4in} | } 499 \hline May 2020 & October 2020 & Creation of the performance benchmark. \\ 500 \hline November 2020 & March 2021 & Completion of the implementation. \\ 501 \hline March 2021 & April 2021 & Final Performance experiments. \\ 502 \hline May 2017 & August 2021 & Thesis writing and defense. \\ 503 \hline 504 \end{tabular} 505 \end{center} 484 506 485 507 486 % B I B L I O G R A P H Y -
doc/theses/thierry_delisle_PhD/comp_II/local.bib
r0a6da484 r21923bd 265 265 % Linux Man Pages 266 266 % =============================================================================== 267 @manual{open,268 title = "open(2) Linux User's Manual",269 year = "2020",270 month = "February",271 }272 273 267 @manual{epoll, 274 268 title = "epoll(7) Linux User's Manual", … … 312 306 author={KARSTEN, MARTIN}, 313 307 journal={URL: https://git.uwaterloo.ca/mkarsten/libfibre} 314 }315 316 @misc{nginx-design,317 title={Inside NGINX: How We Designed for Performance \& Scale},318 url = "https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/",319 308 } 320 309 … … 346 335 note = "[Online; accessed 14-April-2020]" 347 336 } 348 349 @misc{wiki:ubuntu-linux,350 author = "{Wikipedia contributors}",351 title = "Ubuntu version history : Table of versions --- {W}ikipedia{,} The Free Encyclopedia",352 year = "2020",353 url = "https://en.wikipedia.org/wiki/Ubuntu_version_history#Table_of_versions",354 note = "[Online; accessed 15-April-2020]"355 }
Note: See TracChangeset
for help on using the changeset viewer.