\clearpage \begin{appendices} \section{Implementation} \label{app:impl} \begin{table}[!ht] \begin{tabular}{l l} Repository: & \url{https://cgit.brentj.es/cmix.git/} \\ Documentation: & \url{https://dump.brentj.es/cmix/} \\ \end{tabular} \end{table} \section{PC specifications} \label{app-specs} \begin{table}[!ht] \centering \begin{tabular}{|l l|} \hline CPU: &Intel Core i7 960 @ 3.20GHz\\ Microcode: &0x19 \\ RAM: &3x 4GB @ 1066 MHz DDR3 \\ Bogomips: &6619.51 \\ OS: &Arch Linux \\ Turbo Boost: &off \\ \hline \end{tabular} \caption{Basic PC specs} \end{table} \begin{table}[!ht] \noindent \centering \begin{tabular}{|l r r r|} \hline System Benchmarks Index Values &BASELINE & RESULT & INDEX\\\hline Dhrystone 2 using register variables &116700.0 &28324596.9 &2427.1\\\hline Double-Precision Whetstone & 55.0 & 3683.4 & 669.7\\\hline Execl Throughput & 43.0 & 4629.5 &1076.6\\\hline File Copy 1024 bufsize 2000 maxblocks & 3960.0 & 982540.2 &2481.2\\\hline File Copy 256 bufsize 500 maxblocks & 1655.0 & 275396.4 &1664.0\\\hline File Copy 4096 bufsize 8000 maxblocks & 5800.0 & 1976435.4 &3407.6\\\hline Pipe Throughput & 12440.0 & 1939188.3 &1558.8\\\hline Pipe-based Context Switching & 4000.0 & 115504.5 & 288.8\\\hline Process Creation & 126.0 & 5137.2 & 407.7\\\hline Shell Scripts (1 concurrent) & 42.4 & 1885.8 & 444.8\\\hline Shell Scripts (8 concurrent) & 6.0 & 1093.4 &1822.3\\\hline System Call Overhead & 15000.0 & 2935648.7 &1957.1\\\hline \hline System Benchmarks Index Score & & &1178.4\\\hline \hline \end{tabular} \caption{Unix Bench index results to give a comparable baseline} \end{table} \section{Compiler options} \label{app-ccopts} both C and C++ optimization related compiler flags: \begin{table}[!ht] \begin{tabularx}{\columnwidth}{p{0.12\columnwidth} p{0.88\columnwidth}} -flto: &Link\ time\ optimization\\ -O3: &3rd\ level\ optimizations\\ \end{tabularx} \end{table} \section{Some scripts to do result processing} The script that converts the output from the statsd to a \LaTeX\xspace table format. \begin{lstlisting} cut -d ',' -f 2,5,8,11,14,17,20,23,26,29,32,35 | awk 'BEGIN {FS=",";}; {if (NR == 1) {print "prepre (s) & premix (s) & prepost (s) & realpre (s) & realmix (s) & realpost (s) \\\\\hline\\hline";} else{ OFMT="%.2f"; c=1000000000; print ($5-$6)/c,"&",($1-$2)/c,"&",($3-$4)/c,"&",($11-$12)/c,"&",($7-$8)/c,"&",($9-$10)/c,"\\\\\\hline";}}' \end{lstlisting} Script that calculates the mean and standard deviation of each column. \begin{lstlisting} tail -n +2 | cut -d ',' -f 2,5,8,11,14,17,20,23,26,29,32,35 | awk 'BEGIN {FS=",";}; { OFMT="%.2f"; c=1000000000; print ($5-$6)/c,($1-$2)/c,($3-$4)/c,($11-$12)/c,($7-$8)/c,($9-$10)/c;}' | awk '{for(i=1;i<=NF;i++) {sum[i] += $i; sumsq[i] += ($i)^2}} END {for (i=1;i<=NF;i++) {printf " & %.3f (%.3f)", sum[i]/NR, sqrt((sumsq[i]-sum[i]^2/NR)/NR)} printf("\n")}' \end{lstlisting} \clearpage \section{averaged results} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 0.752 (0.018) & 0.582 (0.009) & 0.274 (0.007) & 0.097 (0.005) & 0.027 (0.005) & 0.027 (0.004) \\\hline Node2 & 0.752 (0.013) & 0.583 (0.009) & 0.274 (0.013) & 0.095 (0.008) & 0.026 (0.005) & 0.026 (0.005) \\\hline Node3 & 0.742 (0.015) & 0.582 (0.010) & 0.274 (0.006) & 0.097 (0.005) & 0.063 (0.005) & 0.126 (0.007) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using ed25519 and running 100 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 3.494 (0.025) & 3.484 (0.020) & 2.257 (0.035) & 1.151 (0.061) & 0.004 (0.005) & 0.008 (0.004) \\\hline Node2 & 3.484 (0.018) & 3.486 (0.012) & 2.282 (0.029) & 1.177 (0.079) & 0.004 (0.005) & 0.007 (0.004) \\\hline Node3 & 3.482 (0.018) & 3.488 (0.013) & 2.287 (0.032) & 1.180 (0.069) & 0.002 (0.004) & 0.259 (0.012) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using 2048 bit multiplicative group and running 100 clients.} \end{table} %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 1.495 (0.040) & 1.107 (0.020) & 0.483 (0.013) & 0.157 (0.005) & 0.054 (0.005) & 0.054 (0.005) \\\hline Node2 & 1.469 (0.038) & 1.106 (0.012) & 0.483 (0.010) & 0.156 (0.005) & 0.053 (0.005) & 0.054 (0.005) \\\hline Node3 & 1.457 (0.022) & 1.104 (0.013) & 0.484 (0.011) & 0.154 (0.014) & 0.115 (0.005) & 0.212 (0.009) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using ed25519 and running 200 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 7.035 (0.053) & 6.978 (0.019) & 5.283 (0.097) & 4.066 (0.262) & 0.013 (0.005) & 0.029 (0.003) \\\hline Node2 & 6.973 (0.023) & 6.980 (0.016) & 5.300 (0.076) & 4.108 (0.246) & 0.014 (0.005) & 0.029 (0.003) \\\hline Node3 & 6.983 (0.021) & 6.976 (0.022) & 5.301 (0.115) & 4.080 (0.271) & 0.012 (0.004) & 0.549 (0.005) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using 2048 bit multiplicative group and running 200 clients.} \end{table} %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 2.270 (0.127) & 1.635 (0.025) & 0.696 (0.016) & 0.200 (0.010) & 0.081 (0.003) & 0.081 (0.004) \\\hline Node2 & 2.219 (0.045) & 1.651 (0.027) & 0.694 (0.016) & 0.202 (0.004) & 0.080 (0.004) & 0.080 (0.003) \\\hline Node3 & 2.181 (0.040) & 1.647 (0.022) & 0.694 (0.016) & 0.203 (0.005) & 0.151 (0.005) & 0.289 (0.013) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using ed25519 and running 300 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 10.590 (0.061) & 10.534 (0.023) & 9.192 (0.224) & 8.981 (0.572) & 0.029 (0.004) & 0.064 (0.005) \\\hline Node2 & 10.549 (0.035) & 10.539 (0.031) & 9.247 (0.193) & 9.026 (0.585) & 0.029 (0.004) & 0.064 (0.005) \\\hline Node3 & 10.556 (0.028) & 10.538 (0.026) & 9.195 (0.245) & 9.028 (0.466) & 0.031 (0.002) & 0.814 (0.008) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using 2048 bit multiplicative group and running 300 clients.} \end{table} \vfill \clearpage %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 2.966 (0.057) & 2.177 (0.028) & 0.907 (0.045) & 0.247 (0.005) & 0.105 (0.005) & 0.106 (0.005) \\\hline Node2 & 2.898 (0.058) & 2.172 (0.031) & 0.898 (0.021) & 0.247 (0.005) & 0.104 (0.005) & 0.104 (0.005) \\\hline Node3 & 2.846 (0.053) & 2.155 (0.040) & 0.900 (0.024) & 0.247 (0.005) & 0.180 (0.004) & 0.367 (0.014) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using ed25519 and running 400 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline Node & prepre (s (\textsigma)) & premix (s (\textsigma)) & prepost (s (\textsigma)) & realpre (s (\textsigma)) & realmix (s (\textsigma)) & realpost (s (\textsigma)) \\\hline\hline Node1 & 15.233 (0.027) & 15.228 (0.028) & 14.763 (0.306) & 16.099 (0.799) & 0.049 (0.003) & 0.104 (0.005) \\\hline Node2 & 15.282 (0.030) & 15.225 (0.027) & 14.954 (0.297) & 16.344 (0.588) & 0.049 (0.004) & 0.105 (0.007) \\\hline Node3 & 15.284 (0.038) & 15.234 (0.034) & 14.947 (0.348) & 16.294 (0.765) & 0.050 (0.003) & 1.166 (0.010) \\\hline \end{tabular} \end{footnotesize} \caption{Node time average over 50 runs with standard deviation in seconds using 2048 bit multiplicative group and running 400 clients.} \end{table} %----------------------------------------------------------------------- \vfill \clearpage \section{Raw Result tables} \label{app-tables} \newcommand{\rtable}[2]{ \begin{table}[!ht] \centering \begin{scriptsize} \begin{tabular}{|r|r|r|r|r|r|} \hline \input{#1} \end{tabular} \end{scriptsize} \caption{#2} \end{table} } \vspace{2.355em} \rtable{results/node1_100_ec.tab}{Timings of Node 1 elliptic curve algorithm with 100 clients} \rtable{results/node2_100_ec.tab}{Timings of Node 2 elliptic curve algorithm with 100 clients} \rtable{results/node3_100_ec.tab}{Timings of Node 3 elliptic curve algorithm with 100 clients} \rtable{results/node1_100_mg.tab}{Timings of Node 1 multiplicative group algorithm with 100 clients} \rtable{results/node2_100_mg.tab}{Timings of Node 2 multiplicative group algorithm with 100 clients} \rtable{results/node3_100_mg.tab}{Timings of Node 3 multiplicative group algorithm with 100 clients} %--------------------------------------------------------------------------------- \rtable{results/node1_200_ec.tab}{Timings of Node 1 elliptic curve algorithm with 200 clients} \rtable{results/node2_200_ec.tab}{Timings of Node 2 elliptic curve algorithm with 200 clients} \rtable{results/node3_200_ec.tab}{Timings of Node 3 elliptic curve algorithm with 200 clients} \rtable{results/node1_200_mg.tab}{Timings of Node 1 multiplicative group algorithm with 200 clients} \rtable{results/node2_200_mg.tab}{Timings of Node 2 multiplicative group algorithm with 200 clients} \rtable{results/node3_200_mg.tab}{Timings of Node 3 multiplicative group algorithm with 200 clients} %--------------------------------------------------------------------------------- \rtable{results/node1_300_ec.tab}{Timings of Node 1 elliptic curve algorithm with 300 clients} \rtable{results/node2_300_ec.tab}{Timings of Node 2 elliptic curve algorithm with 300 clients} \rtable{results/node3_300_ec.tab}{Timings of Node 3 elliptic curve algorithm with 300 clients} \rtable{results/node1_300_mg.tab}{Timings of Node 1 multiplicative group algorithm with 300 clients} \rtable{results/node2_300_mg.tab}{Timings of Node 2 multiplicative group algorithm with 300 clients} \rtable{results/node3_300_mg.tab}{Timings of Node 3 multiplicative group algorithm with 300 clients} %--------------------------------------------------------------------------------- \rtable{results/node1_400_ec.tab}{Timings of Node 1 elliptic curve algorithm with 400 clients} \rtable{results/node2_400_ec.tab}{Timings of Node 2 elliptic curve algorithm with 400 clients} \rtable{results/node3_400_ec.tab}{Timings of Node 3 elliptic curve algorithm with 400 clients} \rtable{results/node1_400_mg.tab}{Timings of Node 1 multiplicative group algorithm with 400 clients} \rtable{results/node2_400_mg.tab}{Timings of Node 2 multiplicative group algorithm with 400 clients} \rtable{results/node3_400_mg.tab}{Timings of Node 3 multiplicative group algorithm with 400 clients} %--------------------------------------------------------------------------------- \rtable{results/node1_500_ec.tab}{Timings of Node 1 elliptic curve algorithm with 500 clients} \rtable{results/node2_500_ec.tab}{Timings of Node 2 elliptic curve algorithm with 500 clients} \rtable{results/node3_500_ec.tab}{Timings of Node 3 elliptic curve algorithm with 500 clients} \rtable{results/node1_500_mg.tab}{Timings of Node 1 multiplicative group algorithm with 500 clients} \rtable{results/node2_500_mg.tab}{Timings of Node 2 multiplicative group algorithm with 500 clients} \rtable{results/node3_500_mg.tab}{Timings of Node 3 multiplicative group algorithm with 500 clients} %--------------------------------------------------------------------------------- \clearpage %Keep this as last appendix. %\section{Reference manual} %\includepdf[pages=1]{appendices/refman.pdf} %\includepdf[pages=2-]{appendices/refman.pdf} \end{appendices}