More slides
This commit is contained in:
parent
46be751a37
commit
225903591b
1 changed files with 54 additions and 2 deletions
|
@ -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}
|
||||
|
|
Loading…
Add table
Reference in a new issue