1
0

thesis: Add performance table

This commit is contained in:
2025-08-14 16:12:43 +02:00
parent 8770d834a4
commit a0cb199a34
2 changed files with 63 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ Files, Shared Memory, Semaphores; Related Processes and Inter-Process Communicat
Table~\ref{tab:functions} lists all functions presented in the course and their implementation status in \texttt{intercept.so}. Table~\ref{tab:functions} lists all functions presented in the course and their implementation status in \texttt{intercept.so}.
As one may see, simple file stream functions are not currently implemented in \texttt{intercept.so}. As one may see, simple file stream functions are not currently implemented in \texttt{intercept.so}.
This is because of time restrictions on this work and the fact, that simple file operations may be tested easily in the conventional way of checking the resulting output. This is because of time restrictions on this work and the fact, that simple file operations may be tested easily in the conventional way of checking the resulting output.
Note, that the future implementation of single functions is not very complex.
All other functions have at least interception and mocking (returning, failing) implemented. All other functions have at least interception and mocking (returning, failing) implemented.
For some functions the modification of function arguments has been implemented. For some functions the modification of function arguments has been implemented.
@@ -67,13 +68,68 @@ For some functions the modification of function arguments has been implemented.
\section{Performance}\label{sec:performance} \section{Performance}\label{sec:performance}
Lorem Ipsum. Although high performance was not a primary goal of this work, the resulting performance degradation by intercepting and manipulation should not be too excessive.
The following two subsections test the performance degradation of \texttt{intercept.so} compared to running a program without any intercepting or hooking.
\subsection{Performance when Intercepting}\label{subsec:performance-intercepting} \subsection{Performance when Intercepting}\label{subsec:performance-intercepting}
Lorem Ipsum. Lorem Ipsum.
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=5000,
ymin=0, ymax=150,
scaled y ticks=false,
ymajorgrids=true,
grid style=dashed,
legend pos=north west,
legend cell align={left},
width=\textwidth,
xlabel=Iterations,
ylabel=Execution Time,
x unit=\#,
y unit=\si{\milli\second},
]
\addplot[color=blue] table [x=Cycles, y expr=\thisrow{Baseline Avg}/1000000, col sep=semicolon] {src/performance/stat.csv};
\addlegendentry{Baseline}
\addplot[name path=a_top,color=blue!50,forget plot] table [x=Cycles, y expr=(\thisrow{Baseline Avg} + \thisrow{Baseline SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[name path=a_down,color=blue!50,forget plot] table [x=Cycles, y expr=(\thisrow{Baseline Avg} - \thisrow{Baseline SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[blue!20,fill opacity=0.2] fill between[of=a_top and a_down];
\addlegendentry{Baseline ±SD}
\addplot[color=green] table [x=Cycles, y expr=\thisrow{Intercept Avg}/1000000, col sep=semicolon] {src/performance/stat.csv};
\addlegendentry{Intercepting}
\addplot[name path=b_top,color=green!50,forget plot] table [x=Cycles, y expr=(\thisrow{Intercept Avg} + \thisrow{Intercept SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[name path=b_down,color=green!50,forget plot] table [x=Cycles, y expr=(\thisrow{Intercept Avg} - \thisrow{Intercept SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[green!20,fill opacity=0.2] fill between[of=b_top and b_down];
\addlegendentry{Intercepting ±SD}
\addplot[color=teal] table [x=Cycles, y expr=(\thisrow{Intercept Avg} - 10000000) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addlegendentry{Intercepting -- 10 ms}
\addplot[color=red] table [x=Cycles, y expr=\thisrow{Stderr Avg}/1000000, col sep=semicolon] {src/performance/stat.csv};
\addlegendentry{Logging to stderr}
\addplot[name path=c_top,color=red!50,forget plot] table [x=Cycles, y expr=(\thisrow{Stderr Avg} + \thisrow{Stderr SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[name path=c_down,color=red!50,forget plot] table [x=Cycles, y expr=(\thisrow{Stderr Avg} - \thisrow{Stderr SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[red!20,fill opacity=0.2] fill between[of=c_top and c_down];
\addlegendentry{Logging to stderr ±SD}
\addplot[color=orange] table [x=Cycles, y expr=\thisrow{File Avg}/1000000, col sep=semicolon] {src/performance/stat.csv};
\addlegendentry{Logging to File}
\addplot[name path=d_top,color=orange!50,forget plot] table [x=Cycles, y expr=(\thisrow{File Avg} + \thisrow{File SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[name path=d_down,color=orange!50,forget plot] table [x=Cycles, y expr=(\thisrow{File Avg} - \thisrow{File SD}) / 1000000, col sep=semicolon] {src/performance/stat.csv};
\addplot[orange!20,fill opacity=0.2] fill between[of=d_top and d_down];
\addlegendentry{Logging to File ±SD}
\end{axis}
\end{tikzpicture}
\caption{Execution times of a simple program using \texttt{intercept.so} with different output modes.}
\label{fig:performance}
\end{figure}
\subsection{Performance when Manipulating}\label{subsec:performance-manipulating} \subsection{Performance when Manipulating}\label{subsec:performance-manipulating}

View File

@@ -43,8 +43,14 @@
\usepackage{pgf-umlsd} \usepackage{pgf-umlsd}
\usepackage{textcomp} \usepackage{textcomp}
\usepackage{tikz} \usepackage{tikz}
\usepackage{csvsimple}
\usetikzlibrary{shapes} \usetikzlibrary{shapes}
\usetikzlibrary{intersections}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usepgfplotslibrary{units}
\usepackage[flushleft]{threeparttable} \usepackage[flushleft]{threeparttable}
\usepackage{siunitx}
\newcommand{\newthreadShift}[4][gray!30]{ \newcommand{\newthreadShift}[4][gray!30]{
\newinst[#4]{#2}{#3} \newinst[#4]{#2}{#3}