- Timestamp:
- Aug 5, 2022, 4:18:02 PM (3 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation
- Children:
- 62c5a55
- Parents:
- 511a9368
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/thierry_delisle_PhD/thesis/text/eval_macro.tex
r511a9368 r8040286 10 10 11 11 \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}. 12 Memcached~\cite{memcached} is an in memory key-value store that is used in many production environments, \eg \cite{atikoglu2012workload}. 13 This also server also has the notable added benefit that there exists a full-featured front-end for performance testing called @mutilate@~\cite{GITHUB:mutilate}. 15 14 Experimenting 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. 16 15 This experiment does not exercise the \io subsytem with regards to disk operations. … … 98 97 Most of the implementation is fairly straight forward however the inclusion of file \io introduces a new challenge that had to be hacked around. 99 98 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.99 Normally, 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. 102 101 However, 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. 103 102 As 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}. … … 108 107 When the saturation point of the server is attained, latency will increase and inevitably some client connections will timeout. 109 108 As 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.109 Indeed, 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. 111 110 However, this poses a problem using blocking @sendfile@ calls. 112 111 The 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.