mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
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.
59 lines
2.0 KiB
TeX
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.
|
|
|
|
%% ============================================================================
|