# Changeset c5af4f9 for doc/theses/thierry_delisle_PhD/thesis/text/io.tex

Ignore:
Timestamp:
Feb 25, 2022, 12:28:44 PM (7 months ago)
Branches:
Children:
41870a5
Parents:
08ed947
Message:

Small fixes to io.tex and reworked start of existing work.

File:
1 edited

### Legend:

Unmodified
 r08ed947 \chapter{User Level \io} As mentioned in Section~\ref{prev:io}, User-Level \io requires multiplexing the \io operations of many \glspl{thrd} onto fewer \glspl{proc} using asynchronous \io operations. Different operating systems offer various forms of asynchronous operations and as mentioned in Chapter~\ref{intro}, this work is exclusively focused on the Linux operating-system. Different operating systems offer various forms of asynchronous operations and, as mentioned in Chapter~\ref{intro}, this work is exclusively focused on the Linux operating-system. \section{Kernel Interface} Since completions are sent to the instance where requests were submitted, all instances with pending operations must be polled continously \footnote{As will be described in Chapter~\ref{practice}, this does not translate into constant cpu usage.}. Note that once an operation completes, there is nothing that ties it to the @io_uring@ instance that handled it. There is nothing preventing a new operation with, for example, the same file descriptors to a different @io_uring@ instance. A complicating aspect of submission is @io_uring@'s support for chains of operations, where the completion of an operation triggers the submission of the next operation on the link. To remove this requirement, a \gls{thrd} would need the ability to yield to a specific \gls{proc}'', \ie, park with the promise that it will be run next on a specific \gls{proc}, the \gls{proc} attached to the correct ring.} , greatly simplifying both allocation and submission. In this design, allocation and submission form a ring partitionned ring buffer as shown in Figure~\ref{fig:pring}. In this design, allocation and submission form a partitionned ring buffer as shown in Figure~\ref{fig:pring}. Once added to the ring buffer, the attached \gls{proc} has a significant amount of flexibility with regards to when to do the system call. Possible options are: when the \gls{proc} runs out of \glspl{thrd} to run, after running a given number of threads \glspl{thrd}, etc. Possible options are: when the \gls{proc} runs out of \glspl{thrd} to run, after running a given number of \glspl{thrd}, etc. \begin{figure}