Ignore:
Timestamp:
Aug 5, 2022, 4:18:02 PM (3 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, master, pthread-emulation
Children:
62c5a55
Parents:
511a9368
Message:

Filled in several citations and did some of the todos

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/thierry_delisle_PhD/thesis/text/eval_macro.tex

    r511a9368 r8040286  
    1010
    1111\section{Memcached}
    12 Memcached~\cit{memcached} is an in memory key-value store that is used in many production environments, \eg \cit{Berk Atikoglu et al., Workload Analysis of a Large-Scale Key-Value Store,
    13 SIGMETRICS 2012}.
    14 This also server also has the notable added benefit that there exists a full-featured front-end for performance testing called @mutilate@~\cit{mutilate}.
     12Memcached~\cite{memcached} is an in memory key-value store that is used in many production environments, \eg \cite{atikoglu2012workload}.
     13This also server also has the notable added benefit that there exists a full-featured front-end for performance testing called @mutilate@~\cite{GITHUB:mutilate}.
    1514Experimenting on memcached allows for a simple test of the \CFA runtime as a whole, it will exercise the scheduler, the idle-sleep mechanism, as well the \io subsystem for sockets.
    1615This experiment does not exercise the \io subsytem with regards to disk operations.
     
    9897Most of the implementation is fairly straight forward however the inclusion of file \io introduces a new challenge that had to be hacked around.
    9998
    100 Normally, webservers use @sendfile@\cit{sendfile} to send files over the socket.
    101 @io_uring@ does not support @sendfile@, it supports @splice@\cit{splice} instead, which is strictly more powerful.
     99Normally, webservers use @sendfile@\cite{MAN:sendfile} to send files over the socket.
     100@io_uring@ does not support @sendfile@, it supports @splice@\cite{splice} instead, which is strictly more powerful.
    102101However, because of how linux implements file \io, see Subsection~\ref{ononblock}, @io_uring@'s implementation must delegate calls to splice to worker threads inside the kernel.
    103102As of Linux 5.13, @io_uring@ caps the numer of these worker threads to @RLIMIT_NPROC@ and therefore, when tens of thousands of splice requests are made, it can create tens of thousands of \glspl{kthrd}.
     
    108107When the saturation point of the server is attained, latency will increase and inevitably some client connections will timeout.
    109108As these clients close there connections, the server must close these sockets without delay so the OS can reclaim the resources used by these connections.
    110 Indeed, until they are closed on the server end, the connection will linger in the CLOSE-WAIT tcp state~\cit{RFC793} and the tcp buffers will be preserved.
     109Indeed, until they are closed on the server end, the connection will linger in the CLOSE-WAIT tcp state~\cite{rfc:tcp} and the tcp buffers will be preserved.
    111110However, this poses a problem using blocking @sendfile@ calls.
    112111The calls can block if they do not have suffcient memory, which can be caused by having too many connections in the CLOSE-WAIT state.
Note: See TracChangeset for help on using the changeset viewer.