Changeset 8040286 for doc/theses/thierry_delisle_PhD/thesis/text/core.tex
- 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/core.tex
r511a9368 r8040286 15 15 For threading, a simple and common execution mental-model is the ``Ideal multi-tasking CPU'' : 16 16 17 \begin{displayquote}[Linux CFS\cit {https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt}]17 \begin{displayquote}[Linux CFS\cite{MAN:linux/cfs}] 18 18 {[The]} ``Ideal multi-tasking CPU'' is a (non-existent :-)) CPU that has 100\% physical power and which can run each task at precise equal speed, in parallel, each at [an equal fraction of the] speed. For example: if there are 2 tasks running, then it runs each at 50\% physical power --- i.e., actually in parallel. 19 19 \label{q:LinuxCFS} … … 183 183 This suggests to the following approach: 184 184 185 \subsection{Dynamic Entropy}\cit {https://xkcd.com/2318/}185 \subsection{Dynamic Entropy}\cite{xkcd:dynamicentropy} 186 186 The Relaxed-FIFO approach can be made to handle the case of mostly empty subqueues by tweaking the \glsxtrlong{prng}. 187 187 The \glsxtrshort{prng} state can be seen as containing a list of all the future subqueues that will be accessed. 188 188 While this concept is not particularly useful on its own, the consequence is that if the \glsxtrshort{prng} algorithm can be run \emph{backwards}, then the state also contains a list of all the subqueues that were accessed. 189 Luckily, bidirectional \glsxtrshort{prng} algorithms do exist, \eg some Linear Congruential Generators\cit {https://en.wikipedia.org/wiki/Linear\_congruential\_generator} support running the algorithm backwards while offering good quality and performance.189 Luckily, bidirectional \glsxtrshort{prng} algorithms do exist, \eg some Linear Congruential Generators\cite{wiki:lcg} support running the algorithm backwards while offering good quality and performance. 190 190 This particular \glsxtrshort{prng} can be used as follows: 191 191 \begin{itemize} … … 220 220 \input{base.pstex_t} 221 221 \caption[Base \CFA design]{Base \CFA design \smallskip\newline A pool of subqueues offers the sharding, two per \glspl{proc}. 222 Each \gls{proc} can access all of the subqueues. 222 Each \gls{proc} can access all of the subqueues. 223 223 Each \at is timestamped when enqueued.} 224 224 \label{fig:base} … … 245 245 \end{figure} 246 246 247 A simple solution to this problem is to use an exponential moving average\cit {https://en.wikipedia.org/wiki/Moving\_average\#Exponential\_moving\_average} (MA) instead of a raw timestamps, shown in Figure~\ref{fig:base-ma}.247 A simple solution to this problem is to use an exponential moving average\cite{wiki:ma} (MA) instead of a raw timestamps, shown in Figure~\ref{fig:base-ma}. 248 248 Note, this is more complex because the \at at the head of a subqueue is still waiting, so its wait time has not ended. 249 249 Therefore, the exponential moving average is actually an exponential moving average of how long each dequeued \at has waited.
Note: See TracChangeset
for help on using the changeset viewer.