source: doc/theses/mubeen_zulfiqar_MMath/performance.tex @ 4f7ad4b

ADTast-experimentalpthread-emulationqualifiedEnum
Last change on this file since 4f7ad4b was 94d91e17, checked in by m3zulfiq <m3zulfiq@…>, 2 years ago

completed performance/evaluations chapter

  • Property mode set to 100644
File size: 24.0 KB
Line 
1\chapter{Performance}
2\label{c:Performance}
3
4\section{Machine Specification}
5
6The performance experiments were run on three different multicore systems to determine if there is consistency across platforms:
7\begin{itemize}
8\item
9{\bf Nasus} AMD EPYC 7662, 64-core socket $\times$ 2, 2.0 GHz, GCC version 9.3.0
10\item
11{\bf Algol} Huawei ARM TaiShan 2280 V2 Kunpeng 920, 24-core socket $\times$ 4, 2.6 GHz, GCC version 9.4.0
12\end{itemize}
13
14
15\section{Existing Memory Allocators}\label{sec:curAllocatorSec}
16With dynamic allocation being an important feature of C, there are many stand-alone memory allocators that have been designed for different purposes. For this thesis, we chose 7 of the most popular and widely used memory allocators.
17
18\subsection{dlmalloc}
19dlmalloc (FIX ME: cite allocator with download link) is a thread-safe allocator that is single threaded and single heap. dlmalloc maintains free-lists of different sizes to store freed dynamic memory. (FIX ME: cite wasik)
20\\
21\\
22{\bf Version:} 2.8.6\\
23{\bf Configuration:} Compiled with pre-processor USE\_LOCKS.\\
24{\bf Compilation command:}\\
25cc -g3 -O3 -Wall -Wextra -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -fPIC -shared -DUSE\_LOCKS -o libdlmalloc.so malloc-2.8.6.c
26
27\subsection{hoard}
28Hoard (FIX ME: cite allocator) is a thread-safe allocator that is multi-threaded and using a heap layer framework. It has per-thread heaps that have thread-local free-lists, and a global shared heap. (FIX ME: cite wasik)
29\\
30\\
31{\bf Version:} 3.13\\
32{\bf Configuration:} Compiled with hoard's default configurations and Makefile.\\
33{\bf Compilation command:}\\
34make all
35
36\subsection{jemalloc}
37jemalloc (FIX ME: cite allocator) is a thread-safe allocator that uses multiple arenas. Each thread is assigned an arena. Each arena has chunks that contain contagious memory regions of same size. An arena has multiple chunks that contain regions of multiple sizes.
38\\
39\\
40{\bf Version:} 5.2.1\\
41{\bf Configuration:} Compiled with jemalloc's default configurations and Makefile.\\
42{\bf Compilation command:}\\
43./autogen.sh\\
44./configure\\
45make\\
46make install
47
48\subsection{pt3malloc}
49pt3malloc (FIX ME: cite allocator) is a modification of dlmalloc. It is a thread-safe multi-threaded memory allocator that uses multiple heaps. pt3malloc heap has similar design to dlmalloc's heap.
50\\
51\\
52{\bf Version:} 1.8\\
53{\bf Configuration:} Compiled with pt3malloc's Makefile using option "linux-shared".\\
54{\bf Compilation command:}\\
55make linux-shared
56
57\subsection{rpmalloc}
58rpmalloc (FIX ME: cite allocator) is a thread-safe allocator that is multi-threaded and uses per-thread heap. Each heap has multiple size-classes and each size-class contains memory regions of the relevant size.
59\\
60\\
61{\bf Version:} 1.4.1\\
62{\bf Configuration:} Compiled with rpmalloc's default configurations and ninja build system.\\
63{\bf Compilation command:}\\
64python3 configure.py\\
65ninja
66
67\subsection{tbb malloc}
68tbb malloc (FIX ME: cite allocator) is a thread-safe allocator that is multi-threaded and uses private heap for each thread. Each private-heap has multiple bins of different sizes. Each bin contains free regions of the same size.
69\\
70\\
71{\bf Version:} intel tbb 2020 update 2, tbb\_interface\_version == 11102\\
72{\bf Configuration:} Compiled with tbbmalloc's default configurations and Makefile.\\
73{\bf Compilation command:}\\
74make
75
76\section{Experiment Environment}
77We used our micro becnhmark suite (FIX ME: cite mbench) to evaluate these memory allocators \ref{sec:curAllocatorSec} and our own memory allocator uHeap \ref{sec:allocatorSec}.
78
79\section{Results}
80FIX ME: add experiment, knobs, graphs, description+analysis
81
82%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83%% CHURN
84%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
85
86\subsection{Churn Benchmark}
87
88Churn benchmark tested memory allocators for speed under intensive dynamic memory usage.
89
90This experiment was run with following configurations:
91
92-maxS            : 500
93
94-minS            : 50
95
96-stepS           : 50
97
98-distroS         : fisher
99
100-objN            : 100000
101
102-cSpots          : 16
103
104-threadN         : \{ 1, 2, 4, 8, 16 \} *
105
106* Each allocator was tested for its performance across different number of threads. Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN.
107
108Results are shown in figure \ref{fig:churn} for both algol and nasus.
109X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors.
110Y-axis shows the total time experiment took to finish.
111
112\begin{figure}
113\centering
114    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/churn} }
115    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/churn} }
116\caption{Churn}
117\label{fig:churn}
118\end{figure}
119
120%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
121%% THRASH
122%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123
124\subsection{Cache Thrash}
125
126Thrash benchmark tested memory allocators for active false sharing.
127
128This experiment was run with following configurations:
129
130-cacheIt        : 1000
131
132-cacheRep       : 1000000
133
134-cacheObj       : 1
135
136-threadN        : \{ 1, 2, 4, 8, 16 \} *
137
138* Each allocator was tested for its performance across different number of threads. Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN.
139
140Results are shown in figure \ref{fig:cacheThrash} for both algol and nasus.
141X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors.
142Y-axis shows the total time experiment took to finish.
143
144\begin{figure}
145\centering
146    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/cache-time-0-thrash} }
147    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/cache-time-0-thrash} }
148\caption{Cache Thrash}
149\label{fig:cacheThrash}
150\end{figure}
151
152%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
153%% SCRATCH
154%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
155
156\subsection{Cache Scratch}
157
158Scratch benchmark tested memory allocators for program induced allocator preserved passive false sharing.
159
160This experiment was run with following configurations:
161
162-cacheIt        : 1000
163
164-cacheRep       : 1000000
165
166-cacheObj       : 1
167
168-threadN        : \{ 1, 2, 4, 8, 16 \} *
169
170* Each allocator was tested for its performance across different number of threads. Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN.
171
172Results are shown in figure \ref{fig:cacheScratch} for both algol and nasus.
173X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors.
174Y-axis shows the total time experiment took to finish.
175
176\begin{figure}
177\centering
178    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/cache-time-0-scratch} }
179    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/cache-time-0-scratch} }
180\caption{Cache Scratch}
181\label{fig:cacheScratch}
182\end{figure}
183
184%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
185%% SPEED
186%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
187
188\subsection{Speed Benchmark}
189
190Speed benchmark tested memory allocators for runtime latency.
191
192This experiment was run with following configurations:
193
194-maxS    :  500
195
196-minS    :  50
197
198-stepS   :  50
199
200-distroS :  fisher
201
202-objN    :  1000000
203
204-threadN    : \{ 1, 2, 4, 8, 16 \} *
205
206* Each allocator was tested for its performance across different number of threads. Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN.
207
208Results for speed benchmark are shown in 12 figures, one figure for each chain of speed benchmark.
209X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors.
210Y-axis shows the total time experiment took to finish. Less time an allocator takes to complete allocation, better it is so lower the better.
211
212\begin{itemize}
213\item Fig. \ref{fig:speed-3-malloc} shows results for chain: malloc
214\item Fig. \ref{fig:speed-4-realloc} shows results for chain: realloc
215\item Fig. \ref{fig:speed-5-free} shows results for chain: free
216\item Fig. \ref{fig:speed-6-calloc} shows results for chain: calloc
217\item Fig. \ref{fig:speed-7-malloc-free} shows results for chain: malloc-free
218\item Fig. \ref{fig:speed-8-realloc-free} shows results for chain: realloc-free
219\item Fig. \ref{fig:speed-9-calloc-free} shows results for chain: calloc-free
220\item Fig. \ref{fig:speed-10-malloc-realloc} shows results for chain: malloc-realloc
221\item Fig. \ref{fig:speed-11-calloc-realloc} shows results for chain: calloc-realloc
222\item Fig. \ref{fig:speed-12-malloc-realloc-free} shows results for chain: malloc-realloc-free
223\item Fig. \ref{fig:speed-13-calloc-realloc-free} shows results for chain: calloc-realloc-free
224\item Fig. \ref{fig:speed-14-malloc-calloc-realloc-free} shows results for chain: malloc-realloc-free-calloc
225\end{itemize}
226
227%speed-3-malloc.eps
228\begin{figure}
229\centering
230    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-3-malloc} }
231    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-3-malloc} }
232\caption{Speed benchmark chain: malloc}
233\label{fig:speed-3-malloc}
234\end{figure}
235
236%speed-4-realloc.eps
237\begin{figure}
238\centering
239    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-4-realloc} }
240    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-4-realloc} }
241\caption{Speed benchmark chain: realloc}
242\label{fig:speed-4-realloc}
243\end{figure}
244
245%speed-5-free.eps
246\begin{figure}
247\centering
248    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-5-free} }
249    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-5-free} }
250\caption{Speed benchmark chain: free}
251\label{fig:speed-5-free}
252\end{figure}
253
254%speed-6-calloc.eps
255\begin{figure}
256\centering
257    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-6-calloc} }
258    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-6-calloc} }
259\caption{Speed benchmark chain: calloc}
260\label{fig:speed-6-calloc}
261\end{figure}
262
263%speed-7-malloc-free.eps
264\begin{figure}
265\centering
266    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-7-malloc-free} }
267    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-7-malloc-free} }
268\caption{Speed benchmark chain: malloc-free}
269\label{fig:speed-7-malloc-free}
270\end{figure}
271
272%speed-8-realloc-free.eps
273\begin{figure}
274\centering
275    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-8-realloc-free} }
276    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-8-realloc-free} }
277\caption{Speed benchmark chain: realloc-free}
278\label{fig:speed-8-realloc-free}
279\end{figure}
280
281%speed-9-calloc-free.eps
282\begin{figure}
283\centering
284    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-9-calloc-free} }
285    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-9-calloc-free} }
286\caption{Speed benchmark chain: calloc-free}
287\label{fig:speed-9-calloc-free}
288\end{figure}
289
290%speed-10-malloc-realloc.eps
291\begin{figure}
292\centering
293    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-10-malloc-realloc} }
294    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-10-malloc-realloc} }
295\caption{Speed benchmark chain: malloc-realloc}
296\label{fig:speed-10-malloc-realloc}
297\end{figure}
298
299%speed-11-calloc-realloc.eps
300\begin{figure}
301\centering
302    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-11-calloc-realloc} }
303    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-11-calloc-realloc} }
304\caption{Speed benchmark chain: calloc-realloc}
305\label{fig:speed-11-calloc-realloc}
306\end{figure}
307
308%speed-12-malloc-realloc-free.eps
309\begin{figure}
310\centering
311    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-12-malloc-realloc-free} }
312    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-12-malloc-realloc-free} }
313\caption{Speed benchmark chain: malloc-realloc-free}
314\label{fig:speed-12-malloc-realloc-free}
315\end{figure}
316
317%speed-13-calloc-realloc-free.eps
318\begin{figure}
319\centering
320    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-13-calloc-realloc-free} }
321    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-13-calloc-realloc-free} }
322\caption{Speed benchmark chain: calloc-realloc-free}
323\label{fig:speed-13-calloc-realloc-free}
324\end{figure}
325
326%speed-14-{m,c,re}alloc-free.eps
327\begin{figure}
328\centering
329    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-14-m-c-re-alloc-free} }
330    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-14-m-c-re-alloc-free} }
331\caption{Speed benchmark chain: malloc-calloc-realloc-free}
332\label{fig:speed-14-malloc-calloc-realloc-free}
333\end{figure}
334
335%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
336%% MEMORY
337%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
338
339\subsection{Memory Benchmark}
340
341Speed benchmark tested memory allocators for their memory footprint.
342
343This experiment was run with following two configurations for each allocator:\\
344
345Configuration 1:
346
347-threadA :  1
348
349-threadF :  1
350
351-maxS    :  500
352
353-minS    :  50
354
355-stepS   :  50
356
357-distroS :  fisher
358
359-objN    :  100000
360
361-consumeS:  100000\\
362
363Configuration 2:
364
365-threadA :  4
366
367-threadF :  4
368
369-maxS    :  500
370
371-minS    :  50
372
373-stepS   :  50
374
375-distroS :  fisher
376
377-objN    :  100000
378
379-consumeS:  100000
380
381Difference between the two configurations is the number of producers and consumers.
382Configuration 1 has one producer and one consumer.
383While configuration 2 has four producers where each producer has four consumers.
384
385\begin{table}[h!]
386\centering
387    \begin{tabular}{ |c|c|c| }
388     \hline
389    Memory Allocator & Configuration 1 Result & Configuration 2 Result\\
390     \hline
391    cfa & Fig. \ref{fig:mem-1-prod-1-cons-100-cfa} & Fig. \ref{fig:mem-4-prod-4-cons-100-cfa}\\
392     \hline
393    dl & Fig. \ref{fig:mem-1-prod-1-cons-100-dl} & Fig. \ref{fig:mem-4-prod-4-cons-100-dl}\\
394     \hline
395    glibc & Fig. \ref{fig:mem-1-prod-1-cons-100-glc} & Fig. \ref{fig:mem-4-prod-4-cons-100-glc}\\
396     \hline
397    hoard & Fig. \ref{fig:mem-1-prod-1-cons-100-hrd} & Fig. \ref{fig:mem-4-prod-4-cons-100-hrd}\\
398     \hline
399    je & Fig. \ref{fig:mem-1-prod-1-cons-100-je} & Fig. \ref{fig:mem-4-prod-4-cons-100-je}\\
400     \hline
401    pt3 & Fig. \ref{fig:mem-1-prod-1-cons-100-pt3} & Fig. \ref{fig:mem-4-prod-4-cons-100-pt3}\\
402     \hline
403    rp & Fig. \ref{fig:mem-1-prod-1-cons-100-rp} & Fig. \ref{fig:mem-4-prod-4-cons-100-rp}\\
404     \hline
405    tbb & Fig. \ref{fig:mem-1-prod-1-cons-100-tbb} & Fig. \ref{fig:mem-4-prod-4-cons-100-tbb}\\
406     \hline
407    \end{tabular}
408\caption{Memory benchmark results}
409\label{table:mem-benchmark-figs}
410\end{table}
411
412Results for memory benchmark are shown in 16 figures, two figures for each of the 8 allocators, one for each configuration.
413Table \ref{table:mem-benchmark-figs} shows the list of figures that contain memory benchmar results.
414
415Each figure has 2 graphs, one for each experiment environment.
416Each graph has following 5 subgraphs that show program's memory usage and statistics throughout the program lifetime.
417
418\begin{itemize}
419\item \textit{\textbf{current\_req\_mem(B)}} shows the amount of dynamic memory requested and currently in-use of the benchmark.
420\item \textit{\textbf{heap}}* shows the memory requested by the program (allocator) from the system that lies in the heap area.
421\item \textit{\textbf{mmap\_so}}* shows the memory requested by the program (allocator) from the system that lies in the mmap area.
422\item \textit{\textbf{mmap}}* shows the memory requested by the program (allocator or shared libraries) from the system that lies in the mmap area.
423\item \textit{\textbf{total\_dynamic}} shows the total usage of dynamic memory by the benchmark program which is a sum of heap, mmap, and mmap\_so.
424\end{itemize}
425
426* These statistics are gathered by monitoring the \textit{/proc/self/maps} file of the process in linux system.
427
428For each subgraph, x-axis shows the time during the program lifetime at which the datapoint was generated.
429Y-axis shows the memory usage in bytes.
430
431For the experiment, at a certain time in the prgram's life, the difference betweem the memory requested by the benchmark (\textit{current\_req\_mem(B)})
432and the memory that the process has recieved from system (\textit{heap}, \textit{mmap}) should be minimum.
433This difference is the memory overhead caused by the allocator and shows the level of fragmentation in the allocator.
434
435%mem-1-prod-1-cons-100-cfa.eps
436\begin{figure}
437\centering
438    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-cfa} }
439    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-cfa} }
440\caption{Memory benchmaark results with 1 producer for cfa memory allocator}
441\label{fig:mem-1-prod-1-cons-100-cfa}
442\end{figure}
443
444%mem-1-prod-1-cons-100-dl.eps
445\begin{figure}
446\centering
447    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-dl} }
448    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-dl} }
449\caption{Memory benchmaark results with 1 producer for dl memory allocator}
450\label{fig:mem-1-prod-1-cons-100-dl}
451\end{figure}
452
453%mem-1-prod-1-cons-100-glc.eps
454\begin{figure}
455\centering
456    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-glc} }
457    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-glc} }
458\caption{Memory benchmaark results with 1 producer for glibc memory allocator}
459\label{fig:mem-1-prod-1-cons-100-glc}
460\end{figure}
461
462%mem-1-prod-1-cons-100-hrd.eps
463\begin{figure}
464\centering
465    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-hrd} }
466    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-hrd} }
467\caption{Memory benchmaark results with 1 producer for hoard memory allocator}
468\label{fig:mem-1-prod-1-cons-100-hrd}
469\end{figure}
470
471%mem-1-prod-1-cons-100-je.eps
472\begin{figure}
473\centering
474    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-je} }
475    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-je} }
476\caption{Memory benchmaark results with 1 producer for je memory allocator}
477\label{fig:mem-1-prod-1-cons-100-je}
478\end{figure}
479
480%mem-1-prod-1-cons-100-pt3.eps
481\begin{figure}
482\centering
483    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-pt3} }
484    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-pt3} }
485\caption{Memory benchmaark results with 1 producer for pt3 memory allocator}
486\label{fig:mem-1-prod-1-cons-100-pt3}
487\end{figure}
488
489%mem-1-prod-1-cons-100-rp.eps
490\begin{figure}
491\centering
492    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-rp} }
493    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-rp} }
494\caption{Memory benchmaark results with 1 producer for rp memory allocator}
495\label{fig:mem-1-prod-1-cons-100-rp}
496\end{figure}
497
498%mem-1-prod-1-cons-100-tbb.eps
499\begin{figure}
500\centering
501    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-tbb} }
502    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-tbb} }
503\caption{Memory benchmaark results with 1 producer for tbb memory allocator}
504\label{fig:mem-1-prod-1-cons-100-tbb}
505\end{figure}
506
507%mem-4-prod-4-cons-100-cfa.eps
508\begin{figure}
509\centering
510    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-cfa} }
511    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-cfa} }
512\caption{Memory benchmaark results with 4 producers for cfa memory allocator}
513\label{fig:mem-4-prod-4-cons-100-cfa}
514\end{figure}
515
516%mem-4-prod-4-cons-100-dl.eps
517\begin{figure}
518\centering
519    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-dl} }
520    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-dl} }
521\caption{Memory benchmaark results with 4 producers for dl memory allocator}
522\label{fig:mem-4-prod-4-cons-100-dl}
523\end{figure}
524
525%mem-4-prod-4-cons-100-glc.eps
526\begin{figure}
527\centering
528    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-glc} }
529    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-glc} }
530\caption{Memory benchmaark results with 4 producers for glibc memory allocator}
531\label{fig:mem-4-prod-4-cons-100-glc}
532\end{figure}
533
534%mem-4-prod-4-cons-100-hrd.eps
535\begin{figure}
536\centering
537    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-hrd} }
538    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-hrd} }
539\caption{Memory benchmaark results with 4 producers for hoard memory allocator}
540\label{fig:mem-4-prod-4-cons-100-hrd}
541\end{figure}
542
543%mem-4-prod-4-cons-100-je.eps
544\begin{figure}
545\centering
546    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-je} }
547    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-je} }
548\caption{Memory benchmaark results with 4 producers for je memory allocator}
549\label{fig:mem-4-prod-4-cons-100-je}
550\end{figure}
551
552%mem-4-prod-4-cons-100-pt3.eps
553\begin{figure}
554\centering
555    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-pt3} }
556    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-pt3} }
557\caption{Memory benchmaark results with 4 producers for pt3 memory allocator}
558\label{fig:mem-4-prod-4-cons-100-pt3}
559\end{figure}
560
561%mem-4-prod-4-cons-100-rp.eps
562\begin{figure}
563\centering
564    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-rp} }
565    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-rp} }
566\caption{Memory benchmaark results with 4 producers for rp memory allocator}
567\label{fig:mem-4-prod-4-cons-100-rp}
568\end{figure}
569
570%mem-4-prod-4-cons-100-tbb.eps
571\begin{figure}
572\centering
573    \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-tbb} }
574    \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-tbb} }
575\caption{Memory benchmaark results with 4 producers for tbb memory allocator}
576\label{fig:mem-4-prod-4-cons-100-tbb}
577\end{figure}
578
579%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
580%% ANALYSIS
581%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note: See TracBrowser for help on using the repository browser.