Add general sections
This commit is contained in:
parent
4d0db5caad
commit
5d716351da
3 changed files with 135 additions and 17 deletions
|
@ -4,6 +4,8 @@
|
||||||
%% Attention: pas plus d'un recto-verso!
|
%% Attention: pas plus d'un recto-verso!
|
||||||
% Ne conservez pas les questions
|
% Ne conservez pas les questions
|
||||||
|
|
||||||
|
\section*{Internship synthesis}
|
||||||
|
|
||||||
\subsection*{The general context}
|
\subsection*{The general context}
|
||||||
|
|
||||||
The standard debugging data format for ELF binary files, DWARF, contains a lot
|
The standard debugging data format for ELF binary files, DWARF, contains a lot
|
||||||
|
@ -26,7 +28,7 @@ needs to perform a whole lot of stack unwindings. Even worse, exception
|
||||||
handling relies on stack unwinding in order to find a suitable catch-block!
|
handling relies on stack unwinding in order to find a suitable catch-block!
|
||||||
|
|
||||||
The most widely used library used for stack unwinding,
|
The most widely used library used for stack unwinding,
|
||||||
\texttt{libunwind}~\cite{libunwind}, essentially makes use of aggressive but
|
\prog{libunwind}~\cite{libunwind}, essentially makes use of aggressive but
|
||||||
fine-tuned caching and optimized code to mitigate this problem.
|
fine-tuned caching and optimized code to mitigate this problem.
|
||||||
|
|
||||||
\subsection*{The research problem}
|
\subsection*{The research problem}
|
||||||
|
@ -62,17 +64,17 @@ frame), and having a lot of samples is quite complex, since one must avoid
|
||||||
unwinding the same frame over and over again, which would only benchmark the
|
unwinding the same frame over and over again, which would only benchmark the
|
||||||
caching mechanism. The other problem is to distribute evenly the unwinding
|
caching mechanism. The other problem is to distribute evenly the unwinding
|
||||||
measures across the various program positions, including directly into the
|
measures across the various program positions, including directly into the
|
||||||
loaded libraries (\eg{} the \texttt{libc}).
|
loaded libraries (\eg{} the \prog{libc}).
|
||||||
|
|
||||||
The solution eventually chosen was to modify \texttt{perf}, the standard
|
The solution eventually chosen was to modify \prog{perf}, the standard
|
||||||
profiling program for Linux, in order to gather statistics and benchmarks of
|
profiling program for Linux, in order to gather statistics and benchmarks of
|
||||||
its unwindings, and produce an alternative version of \texttt{libunwind} using
|
its unwindings, and produce an alternative version of \prog{libunwind} using
|
||||||
the compiled debugging data, in order to interface it with \texttt{perf},
|
the compiled debugging data, in order to interface it with \prog{perf},
|
||||||
allowing to benchmark \texttt{perf} with both the standard stack unwinding data
|
allowing to benchmark \prog{perf} with both the standard stack unwinding data
|
||||||
and the alternative experimental compiled format. As a free and enjoyable
|
and the alternative experimental compiled format. As a free and enjoyable
|
||||||
side-effect, the experimental unwinding data is perfectly interfaced with
|
side-effect, the experimental unwinding data is perfectly interfaced with
|
||||||
\texttt{libunwind}, and thus interfaceable at practically no cost with any
|
\prog{libunwind}, and thus interfaceable at practically no cost with any
|
||||||
existing project using the common library \texttt{libunwind}.
|
existing project using the common library \prog{libunwind}.
|
||||||
|
|
||||||
% What is your solution to the question described in the last paragraph?
|
% What is your solution to the question described in the last paragraph?
|
||||||
%
|
%
|
||||||
|
@ -94,13 +96,13 @@ in this report), the compiled version is up to 25 times faster than the DWARF
|
||||||
version, while it remains only around 2.5 times bigger than the original data.
|
version, while it remains only around 2.5 times bigger than the original data.
|
||||||
|
|
||||||
Even though the implementation is more a research prototype than a release
|
Even though the implementation is more a research prototype than a release
|
||||||
version, is still reasonably robust, compared to \texttt{libunwind}, which is
|
version, is still reasonably robust, compared to \prog{libunwind}, which is
|
||||||
built for robustness. Corner cases are frequent while analyzing stack data, and
|
built for robustness. Corner cases are frequent while analyzing stack data, and
|
||||||
even more when analyzing them through a profiler; yet the prototype fails only
|
even more when analyzing them through a profiler; yet the prototype fails only
|
||||||
on around 200 cases more than libunwind on a 27000 samples test (1099 failures,
|
on around 200 cases more than \prog{libunwind} on a 27000 samples test (1099
|
||||||
against 885 for libunwind).
|
failures, against 885 for \prog{libunwind}).
|
||||||
|
|
||||||
The prototype, unlike libunwind, does not support $100\,\%$ of the DWARF
|
The prototype, unlike \prog{libunwind}, does not support $100\,\%$ of the DWARF
|
||||||
instruction present in the DWARF5 standard~\cite{dwarf5std}. It is also limited
|
instruction present in the DWARF5 standard~\cite{dwarf5std}. It is also limited
|
||||||
to the x86\_64 architecture, and relies to some extent on the Linux operating
|
to the x86\_64 architecture, and relies to some extent on the Linux operating
|
||||||
system. But none of those limitations are real problems in practice. As argued
|
system. But none of those limitations are real problems in practice. As argued
|
||||||
|
@ -119,7 +121,7 @@ programs, particularly if one wants to profile many times in order to analyze
|
||||||
the impact of multiple changes. It can also be useful for exception-heavy
|
the impact of multiple changes. It can also be useful for exception-heavy
|
||||||
programs~\qtodo{cite Stephen's software?}. Thus, it might be interesting to
|
programs~\qtodo{cite Stephen's software?}. Thus, it might be interesting to
|
||||||
implement a more stable version, and try to interface it cleanly with
|
implement a more stable version, and try to interface it cleanly with
|
||||||
mainstream tools, such as \texttt{perf}.
|
mainstream tools, such as \prog{perf}.
|
||||||
|
|
||||||
It might also be interesting to investigate whether it is possible to reach
|
It might also be interesting to investigate whether it is possible to reach
|
||||||
even greater speeds by using some more complex compilation process that would
|
even greater speeds by using some more complex compilation process that would
|
||||||
|
@ -136,3 +138,4 @@ used to shrink the compiled unwinding data.
|
||||||
% What is the good \emph{next} question?
|
% What is the good \emph{next} question?
|
||||||
|
|
||||||
\pagestyle{plain}
|
\pagestyle{plain}
|
||||||
|
\newpage
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
\author{Théophile Bastian\\
|
\author{Théophile Bastian\\
|
||||||
Under supervision of Francesco Zappa-Nardelli\\
|
Under supervision of Francesco Zappa-Nardelli\\
|
||||||
{\textsc{parkas}, École Normale Supérieure de Paris}}
|
{\textsc{parkas}, \'Ecole Normale Supérieure de Paris}}
|
||||||
|
|
||||||
\date{August 20, 2018}
|
\date{March -- August 2018\\August 20, 2018}
|
||||||
|
|
||||||
\documentclass[11pt]{article}
|
\documentclass[11pt]{article}
|
||||||
|
|
||||||
|
@ -26,10 +26,123 @@ Under supervision of Francesco Zappa-Nardelli\\
|
||||||
|
|
||||||
\addbibresource{../shared/report.bib}
|
\addbibresource{../shared/report.bib}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
|
%% Main title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
|
%% Fiche de synthèse %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\input{fiche_synthese}
|
\input{fiche_synthese}
|
||||||
|
|
||||||
|
%% Abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{abstract}
|
||||||
|
\todo{Is there a need for an abstract, given the presence above of the
|
||||||
|
``fiche de synthèse''?}
|
||||||
|
\end{abstract}
|
||||||
|
|
||||||
|
%% Table of contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\tableofcontents
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%% Main text content %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Stack unwinding data presentation}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Stack frames and unwinding}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{DWARF format}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{DWARF functioning}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{How big are FDEs?}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Unwinding usage and frequency}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Unwinding state-of-the-art}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{General statistics}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Stack unwinding data compilation}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Compilation: \ehelfs}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{First results}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Space optimization}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Benchmarking}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Requirements}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Presentation of \prog{perf}}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Benchmarking with \prog{perf}}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Other explored methods}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Results}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Measured time performance}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Measured compactness}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Instructions coverage}
|
||||||
|
\todo{}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%% End main text content %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\printbibliography{}
|
\printbibliography{}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
%% Specific commands for this project
|
%% Specific commands for this project
|
||||||
|
|
||||||
|
\newcommand{\prog}[1]{\texttt{#1}}
|
||||||
|
\newcommand{\ehelf}{\texttt{eh\_elf}}
|
||||||
|
\newcommand{\ehelfs}{\texttt{eh\_elfs}}
|
||||||
|
|
||||||
%% DWARF semantics
|
%% DWARF semantics
|
||||||
\newcommand{\dwcfa}[1]{\texttt{DW\_CFA\_#1}}
|
\newcommand{\dwcfa}[1]{\texttt{DW\_CFA\_#1}}
|
||||||
\newcommand{\reg}[1]{\%#1}
|
\newcommand{\reg}[1]{\%#1}
|
||||||
|
@ -27,5 +31,3 @@
|
||||||
\newcommand{\extrarrow}[1]{\xrightarrow{\text{#1}}}
|
\newcommand{\extrarrow}[1]{\xrightarrow{\text{#1}}}
|
||||||
|
|
||||||
\newcommand{\contsem}[1]{\semI{d}{s}\left(#1\right)}
|
\newcommand{\contsem}[1]{\semI{d}{s}\left(#1\right)}
|
||||||
|
|
||||||
\newcommand{\ehelf}{\texttt{EH\_ELF}}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue