Initial commit of master's thesis

This is the version I submitted to RWTH Aachen University at November 9,
2018.
This commit is contained in:
2018-11-12 12:56:59 +01:00
parent ffbcce77f9
commit af25b4b828
1136 changed files with 127398252 additions and 2 deletions

View File

@@ -0,0 +1,9 @@
\chapter{InfiniBand node configuration\label{a:infiniband_config}}
\begin{figure}[ht!]
\vspace{-0.0cm}
\lstinputlisting[caption=The configuration that was used to examine the InfiniBand node-type with the benchmark from \autoref{fig:villas_benchmark}. The bash variables were replaced by a script that controlled the benchmark.,
label=lst:infiniband_config,
style=customconfig]{listings/infiniband.conf}
\vspace{-1.4cm}
\end{figure}

View File

@@ -0,0 +1,3 @@
\chapter{VILLASnode node-type interface\label{a:nodetype_functions}}
\input{scripts/build/nodetype_functions}

View File

@@ -0,0 +1,204 @@
\chapter{Results benchmarks\label{a:results_benchmarks}}
\section{Influence of CQEs on latency of RDMA write\label{a:oneway_unsignaled_rdma}}
\input{tables/oneway_settings_unsignaled_rdma}
\begin{figure}[ht!]
\vspace{1.5cm}
\begin{subfigure}{\textwidth}
\includegraphics[width=14.75cm, keepaspectratio]{plots/oneway_unsignaled_rdma_hist/plot_0.pdf}
\end{subfigure}
\begin{subfigure}{\textwidth}
\centering
\vspace{0.05cm}
\includegraphics{plots/oneway_unsignaled_rdma_hist/legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{Results of the one-way benchmark with the settings from \autoref{tab:oneway_settings_unsignaled_rdma}. These were used to analyze the difference in latency between messages that did and did not cause a \acrfull{cqe}. The \textit{\gls{rdma} write} operation mode was used in this test.}\label{fig:oneway_unsignaled_rdma}
\end{figure}
\newpage
\section{Influence of constant burst size on latency\label{a:oneway_message_size_inline}}
\input{tables/oneway_settings_message_size_inline}
\begin{figure}[ht!]
\begin{subfigure}{0.351\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_inline_median/plot_0.pdf}
\caption{\gls{rc}}\label{fig:oneway_message_size_inline_a}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{0.312\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_inline_median/plot_1.pdf}
\caption{\gls{uc}}\label{fig:oneway_message_size_inline_b}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{0.312\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_inline_median/plot_2.pdf}
\caption{\gls{ud}}\label{fig:oneway_message_size_inline_c}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{\textwidth}
\centering
\vspace{0.15cm}
\includegraphics{plots/oneway_message_size_inline_median/legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{Results of the one-way benchmark with the settings from \autoref{tab:oneway_settings_message_size_inline}. While a triangle indicates $\tilde{t}_{lat}$ for a certain message size, the error bars indicate the upper and lower 10\% of $t_{lat}$ for that message size.}\label{fig:oneway_message_size_inline}
\end{figure}
\newpage
\section{Influence of intermediate pauses on latency\label{a:oneway_message_size_wait}}
\input{tables/oneway_settings_message_size_wait}
\begin{figure}[ht!]
\vspace{0.5cm}
\begin{subfigure}{0.351\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_wait_median/plot_0.pdf}
\caption{\gls{rc}}\label{fig:oneway_message_size_wait_a}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{0.312\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_wait_median/plot_1.pdf}
\caption{\gls{uc}}\label{fig:oneway_message_size_wait_b}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{0.312\textwidth}
\includegraphics[width=\linewidth, keepaspectratio]{plots/oneway_message_size_wait_median/plot_2.pdf}
\caption{\gls{ud}}\label{fig:oneway_message_size_wait_c}
\end{subfigure}
\hspace*{\fill} % separation between the subfigures
\begin{subfigure}{\textwidth}
\centering
\vspace{0.15cm}
\includegraphics{plots/oneway_message_size_wait_median/legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{Results of the one-way benchmark with the settings from \autoref{tab:oneway_settings_message_size_wait}. While a triangle indicates $\tilde{t}_{lat}$ for a certain message size, the error bars indicate the upper and lower 10\% of $t_{lat}$ for that message size.}\label{fig:oneway_message_size_wait}
\vspace{-0.5cm}
\end{figure}
\newpage
\section{Comparison of timer functions\label{a:timer_comparison}}
\begin{figure}[ht!]
\vspace{-0.5cm}
\begin{subfigure}{\textwidth}
\begin{minipage}{0.45cm}
\vspace{-1.3cm}
\caption{}\label{fig:timer_comparison_a}
\end{minipage}
\hfill
\begin{minipage}{14.75cm}
\includegraphics[width=14.75cm, keepaspectratio]{plots/nodetype_timer_comparison_wo_optimizations/infiniband_RC_0i_0j.pdf}
\end{minipage}
\end{subfigure}
\vspace{-0.2cm}
\begin{subfigure}{\textwidth}
\begin{minipage}{0.45cm}
\vspace{-1.3cm}
\caption{}\label{fig:timer_comparison_b}
\end{minipage}
\hfill
\begin{minipage}{14.75cm}
\includegraphics[width=14.75cm, keepaspectratio]{plots/nodetype_timer_comparison_wo_optimizations/infiniband_RC_1i_0j.pdf}
\end{minipage}
\end{subfigure}
\vspace{-0.2cm}
\begin{subfigure}{\textwidth}
\begin{minipage}{0.45cm}
\vspace{-1.3cm}
\caption{}\label{fig:timer_comparison_c}
\end{minipage}
\hfill
\begin{minipage}{14.75cm}
\includegraphics[width=14.75cm, keepaspectratio]{plots/nodetype_timer_comparison_w_optimizations/infiniband_RC_0i_0j.pdf}
\end{minipage}
\end{subfigure}
\vspace{-0.2cm}
\begin{subfigure}{\textwidth}
\begin{minipage}{0.45cm}
\vspace{-1.3cm}
\caption{}\label{fig:timer_comparison_d}
\end{minipage}
\hfill
\begin{minipage}{14.75cm}
\includegraphics[width=14.75cm, keepaspectratio]{plots/nodetype_timer_comparison_w_optimizations/infiniband_RC_1i_0j.pdf}
\end{minipage}
\end{subfigure}
\begin{subfigure}{\textwidth}
\centering
\includegraphics{plots/nodetype_timer_comparison_w_optimizations/histogram_legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{Comprehensive plots of the results from \autoref{tab:timer_comparison}. Subfigure (a) and (b) show the results in the unoptimized environment with \texttt{timerfd} and \gls{tsc}, respectively. Subfigure (c) and (d) show the results for the same settings, but in the optimized environment.}\label{fig:timer_comparison}
\vspace{-3.0cm}
\end{figure}
\newpage
\section{3D plots InfiniBand nodes (UC \& UD)\label{a:rate_size_3d_UC_UD}}
\begin{figure}[ht!]
\begin{subfigure}{\textwidth}
\includegraphics[width=15.2cm, keepaspectratio]{plots/nodetype_3d_IB/median_3d_graph_UC.pdf}
\end{subfigure}
\begin{subfigure}{\textwidth}
\vspace{0.2cm}
\centering
\includegraphics{plots/nodetype_3d_IB/3d_UC_legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{The influence of the message size and generation rate on $\tilde{t}_{lat}$ between two InfiniBand nodes that communicate over an \acrfull{uc}.}\label{fig:rate_size_3d_UC}
\end{figure}
\begin{figure}[ht!]
\begin{subfigure}{\textwidth}
\includegraphics[width=15.2cm, keepaspectratio]{plots/nodetype_3d_IB/median_3d_graph_UD.pdf}
\end{subfigure}
\begin{subfigure}{\textwidth}
\vspace{0.2cm}
\centering
\includegraphics{plots/nodetype_3d_IB/3d_UD_legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{The influence of the message size and generation rate on $\tilde{t}_{lat}$ between two InfiniBand nodes that communicate over \acrfull{ud}.}\label{fig:rate_size_3d_UD}
\end{figure}
\newpage
\section{3D plot shmem node\label{a:shmem_3d}}
\begin{figure}[ht!]
\vspace{5.5cm}
\begin{subfigure}{\textwidth}
\includegraphics[width=15.2cm, keepaspectratio]{plots/nodetype_3d_shmem/median_3d_graph_XX.pdf}
\end{subfigure}
\begin{subfigure}{\textwidth}
\vspace{0.2cm}
\centering
\includegraphics{plots/nodetype_3d_shmem/3d_XX_legend.pdf}
\vspace{-0.15cm}
\end{subfigure}
\caption{The influence of signal generation rate and the message size on the median latency between two \textit{shmem}.}\label{fig:shmem_3d}
\end{figure}
\newpage
\section{Missed steps nanomsg and zeromq nodes\label{a:missed_steps_nanomsg_zeromq}}
\input{tables/missed_steps_nanomsg_zeromq}

10
appendices/tuned.tex Normal file
View File

@@ -0,0 +1,10 @@
\chapter{Tuned daemon profile\label{a:tuned_profile}}
This appendix shows the \textit{latency-performance} \texttt{tuned} profile that was used during the benchmarks that were run on the \glspl{hca} and VILLASnode.
\begin{figure}[ht!]
\vspace{0.5cm}
\lstinputlisting[caption=The \texttt{tuned} default profile \textit{latency-performance}. Comments are omitted for the sake of brevity.,
label=lst:tuned_latency_performance,
style=customconfig]{listings/tuned_latency_performance.conf}
\vspace{-0.2cm}
\end{figure}

12
appendices/verbs.tex Normal file
View File

@@ -0,0 +1,12 @@
\chapter{OpenFabrics Verbs\label{a:openfabrics}}
Experimental functions are not included in this appendix. Furthermore, the \gls{rdma} verbs \gls{api} is omitted because it is not used in the present work. A comprehensive documentation on all verbs can be found in the \gls{rdma} Aware Networks Programming User Manual~\cite{mellanox2015RDMA}.
\section{IB verbs API}
This section presents the default InfiniBand verbs API.
\input{scripts/build/ib_verbs}
\newpage
\section{RDMA CM API}
This section presents the RDMA communication manager API, as presented in \autoref{sec:rdmacm}.
\input{scripts/build/rdma_cm_verbs}

View File

@@ -0,0 +1,28 @@
\chapter{VILLASnode structs\label{a:villas_structs}}
This appendix presents a few structures which help to understand the VILLASnode architecture from \autoref{chap:architecture}. A full overview of all header files can be found on the VILLASnode Git repository\footnote{\url{https://git.rwth-aachen.de/acs/public/villas/VILLASnode}}.
\section{\texttt{struct sample}\label{a:sec:structsample}}
\begin{figure}[ht!]
\lstinputlisting[caption=The C structure of a VILLASnode sample.,
label=lst:struct_sample,
style=customc]{listings/struct_sample.h}
\vspace{-0.2cm}
\end{figure}
\newpage
\section{\texttt{struct node}\label{a:sec:structnode}}
\begin{figure}[ht!]
\lstinputlisting[caption=The C structure of a VILLASnode node.,
label=lst:struct_node,
style=customc]{listings/struct_node.h}
\vspace{-0.2cm}
\end{figure}
\newpage
\section{\texttt{struct node\_type}\label{a:sec:structnodetype}}
\begin{figure}[ht!]
\lstinputlisting[caption=The C structure of a VILLASnode node-type.,
label=lst:struct_nodetype,
style=customc]{listings/struct_nodetype.h}
\vspace{-0.2cm}
\end{figure}