- Timestamp:
- Jul 18, 2022, 8:06:18 AM (22 months ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation, qualifiedEnum
- Children:
- 6a896b0, d677355
- Parents:
- 4f3807d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/thierry_delisle_PhD/thesis/text/eval_micro.tex
r4f3807d r847bb6f 7 7 All of these benchmarks are run on two distinct hardware environment, an AMD and an INTEL machine. 8 8 9 For all benchmarks, \texttt{taskset}is used to limit the experiment to 1 NUMA Node with no hyper threading.9 For all benchmarks, @taskset@ is used to limit the experiment to 1 NUMA Node with no hyper threading. 10 10 If more \glspl{hthrd} are needed, then 1 NUMA Node with hyperthreading is used. 11 11 If still more \glspl{hthrd} are needed then the experiment is limited to as few NUMA Nodes as needed. … … 35 35 \end{figure} 36 36 The most basic evaluation of any ready queue is to evaluate the latency needed to push and pop one element from the ready-queue. 37 Since these two operation also describe a \texttt{yield}operation, many systems use this as the most basic benchmark.37 Since these two operation also describe a @yield@ operation, many systems use this as the most basic benchmark. 38 38 However, yielding can be treated as a special case, since it also carries the information that the number of the ready \glspl{at} will not change. 39 39 Not all systems use this information, but those which do may appear to have better performance than they would for disconnected push/pop pairs. … … 57 57 This is to avoid the case where one of the \glspl{proc} runs out of work because of the variation on the number of ready \glspl{at} mentionned above. 58 58 59 The actual benchmark is more complicated to handle termination, but that simply requires using a binary semphore or a channel instead of raw \texttt{park}/\texttt{unpark} and carefully picking the order of the \texttt{P} and \texttt{V}with respect to the loop condition.59 The actual benchmark is more complicated to handle termination, but that simply requires using a binary semphore or a channel instead of raw @park@/@unpark@ and carefully picking the order of the @P@ and @V@ with respect to the loop condition. 60 60 Figure~\ref{fig:cycle:code} shows pseudo code for this benchmark. 61 61 … … 116 116 \section{Yield} 117 117 For completion, I also include the yield benchmark. 118 This benchmark is much simpler than the cycle tests, it simply creates many \glspl{at} that call \texttt{yield}.119 As mentionned in the previous section, this benchmark may be less representative of usages that only make limited use of \texttt{yield}, due to potential shortcuts in the routine.118 This benchmark is much simpler than the cycle tests, it simply creates many \glspl{at} that call @yield@. 119 As mentionned in the previous section, this benchmark may be less representative of usages that only make limited use of @yield@, due to potential shortcuts in the routine. 120 120 Its only interesting variable is the number of \glspl{at} per \glspl{proc}, where ratios close to 1 means the ready queue(s) could be empty. 121 121 This sometimes puts more strain on the idle sleep handling, compared to scenarios where there is clearly plenty of work to be done. … … 184 184 185 185 To achieve this the benchmark uses a fixed size array of semaphores. 186 Each \gls{at} picks a random semaphore, \texttt{V}s it to unblock a \at waiting and then \texttt{P}s on the semaphore.186 Each \gls{at} picks a random semaphore, @V@s it to unblock a \at waiting and then @P@s on the semaphore. 187 187 This creates a flow where \glspl{at} push each other out of the semaphores before being pushed out themselves. 188 188 For this benchmark to work however, the number of \glspl{at} must be equal or greater to the number of semaphores plus the number of \glspl{proc}. 189 Note that the nature of these semaphores mean the counter can go beyond 1, which could lead to calls to \texttt{P}not blocking.189 Note that the nature of these semaphores mean the counter can go beyond 1, which could lead to calls to @P@ not blocking. 190 190 191 191 \todo{code, setup, results}
Note: See TracChangeset
for help on using the changeset viewer.