Files
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

59 lines
2.0 KiB
TeX

\section{Experimental Setup}
%% ============================================================================
\subsection{Hardware}
All benchmarks were conducted on a single machine to eliminate network variability:
\begin{table}[h]
\centering
\caption{Benchmark hardware specification}
\begin{tabular}{ll}
\toprule
\textbf{Component} & \textbf{Specification} \\
\midrule
CPU & AMD EPYC 7763 64-Core @ 2.45 GHz \\
Cores used & 16 (pinned via \texttt{taskset}) \\
Memory & 256 GB DDR4-3200 ECC \\
NIC & 25 Gbps Mellanox ConnectX-6 (loopback) \\
Disk & Not used (all in-memory) \\
OS & Ubuntu 22.04 LTS, kernel 5.15.0-91 \\
Go & 1.22.2 \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Methodology}
\begin{enumerate}
\item \textbf{Warm-up}: 10,000 iterations discarded before measurement.
\item \textbf{Iterations}: Minimum $10^6$ per measurement; $10^7$ for sub-microsecond operations.
\item \textbf{Runs}: 10 independent runs; report median and p99.
\item \textbf{GC control}: \texttt{GOGC=off} for serialization-only tests; default \texttt{GOGC=100} for system tests to capture real GC behavior.
\item \textbf{CPU pinning}: Goroutines pinned to dedicated cores via \texttt{runtime.LockOSThread()} and \texttt{taskset}.
\item \textbf{Allocation counting}: \texttt{testing.B.ReportAllocs()} and \texttt{runtime.ReadMemStats()}.
\end{enumerate}
\subsection{Test Messages}
We define a canonical consensus vote message used across all benchmarks:
\begin{definition}[Consensus Vote Message]
\label{def:vote}
A consensus vote contains:
\begin{itemize}
\item Round number (uint64, 8 bytes)
\item Block hash (32 bytes)
\item Voter ID (32 bytes)
\item Signature (64 bytes)
\item Timestamp (uint64, 8 bytes)
\item Vote type (uint8, 1 byte)
\end{itemize}
Fixed payload: 145 bytes. With ZAP header (16 bytes): 161 bytes total.
\end{definition}
For variable-size tests, we use padded variants at 64B, 1KB, 64KB, and 1MB.
%% ============================================================================