diff --git a/slides/slides.tex b/slides/slides.tex index ece4303..3fb26e1 100644 --- a/slides/slides.tex +++ b/slides/slides.tex @@ -280,11 +280,63 @@ unwind_context_t _eh_elf( \section{Benchmarking} \begin{frame}{Benchmarking requirements} - \todo{} + \begin{enumerate} + \item Thousands of samples (single unwind: $10\,\mu{}s$) + \item Interesting enough program to unwind: nested functions, complex + FDEs + \item Mitigate caching: don't always unwind from the \emph{same} point + \item Yet be fair: don't always unwind from totally different places + \item Distribute evenly: if possible, also from within libraries + \end{enumerate} + + \pause{}\vspace{1em} + + \begin{itemize} + \item 2 $\implies$ exit hand-crafted program, exit CSmith + \item 5 $\implies$ cannot call the unwinding procedure by hand + \end{itemize} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{} +\subsection{Unwinding using perf} + +\begin{frame}{Presentation of perf} + \textbf{A profiler is used to\ldots} + \begin{itemize} + \item get readings of the \alert{time spent in each function} + \item detect ``hot paths'': functions you ought to optimize + \item \ldots{}and \alert{benchmark \ehelfs{}}! + \end{itemize} + + \vspace{1em}\pause{} + \textbf{How does it work?} + \begin{itemize} + \item{} \alert{Polling profiler}: stops at regular intervals to perform + analyses + \item{} Upon polling, \alert{dumps the stack} to a file + \item{} In the analysis phase (after the program terminated), + \alert{unwinds all the stacks gathered} to get call paths + \end{itemize} +\end{frame} + +\begin{frame}{perf instrumentation} + \textbf{Instrumenting perf matches all the requirements!} + \vspace{1em}\pause{} + + \begin{itemize} + \item{} \alert{Plug \ehelfs{} into perf}: use \ehelfs{} instead of + DWARF to analyze stack dumps + \item{} Implement \alert{unwinding performance counters} inside perf + \bigskip{} + + \item{} Use perf on \alert{hackbench}, a kernel stress-test program + \begin{itemize} + \item Small program + \item Lots of calls + \item Relies on libc, libpthread + \end{itemize} + \end{itemize} +\end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{A glance at future work}