Add presentation.tex
This commit is contained in:
parent
06ce3486d2
commit
2aed5c3a78
3
.gitignore
vendored
3
.gitignore
vendored
@ -4,7 +4,10 @@
|
||||
*.blg
|
||||
*.log
|
||||
*.run.xml
|
||||
*.nav
|
||||
*.snm
|
||||
*.toc
|
||||
*.out
|
||||
|
||||
*.kra
|
||||
*.pdf
|
||||
|
5
Makefile
5
Makefile
@ -1,7 +1,12 @@
|
||||
all: rapport.pdf presentation.pdf
|
||||
|
||||
rapport.pdf: rapport.tex refs.bib
|
||||
pdflatex -interaction=nonstopmode -halt-on-error rapport.tex
|
||||
bibtex rapport
|
||||
pdflatex -interaction=nonstopmode -halt-on-error rapport.tex
|
||||
|
||||
presentation.pdf: presentation.tex
|
||||
lualatex -interaction=nonstopmode -halt-on-error presentation.tex
|
||||
|
||||
clean:
|
||||
rm *.bbl *.bcf *.blg *.log *.run.xml *.toc *.aux *.out -f
|
||||
|
27
README.md
Normal file
27
README.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Rapport de Stage de L3
|
||||
|
||||
## Rapport
|
||||
|
||||
|
||||
## Présentation
|
||||
|
||||
Les croquis pdf ont été réalisés avec IPE, avec la configuration suivante:
|
||||
|
||||
`emojis.isy`:
|
||||
```xml
|
||||
<ipestyle name="emojis">
|
||||
<preamble>
|
||||
|
||||
\usepackage{emoji}
|
||||
</preamble>
|
||||
</ipestyle>
|
||||
```
|
||||
|
||||
`customsize.isy`:
|
||||
```xml
|
||||
<ipestyle name="customsize">
|
||||
<layout paper="800 800" origin="0 0" frame="800 800"/>
|
||||
</ipestyle>
|
||||
```
|
||||
|
||||
Pour avoir l'emoji "🪩", la présentation est compilée avec LuaTeX, et la paquet `emoji` a été mis à jour manuellement depuis [GitHub](https://github.com/stone-zeng/latex-emoji/issues/16)
|
BIN
figs/Cores.pdf
Normal file
BIN
figs/Cores.pdf
Normal file
Binary file not shown.
BIN
figs/hachage.pdf
Normal file
BIN
figs/hachage.pdf
Normal file
Binary file not shown.
BIN
figs/hit-slice-bad.png
Normal file
BIN
figs/hit-slice-bad.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 247 KiB |
BIN
figs/hit-slice-good.png
Normal file
BIN
figs/hit-slice-good.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 230 KiB |
BIN
figs/logo-Grid5000.png
Normal file
BIN
figs/logo-Grid5000.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
BIN
figs/logo-Kadeploy.png
Normal file
BIN
figs/logo-Kadeploy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
BIN
figs/model-hit.pdf
Normal file
BIN
figs/model-hit.pdf
Normal file
Binary file not shown.
BIN
figs/multi-socket.pdf
Normal file
BIN
figs/multi-socket.pdf
Normal file
Binary file not shown.
BIN
figs/pattern-hor.pdf
Normal file
BIN
figs/pattern-hor.pdf
Normal file
Binary file not shown.
BIN
figs/pattern.pdf
Normal file
BIN
figs/pattern.pdf
Normal file
Binary file not shown.
BIN
figs/predicted-remote-hit-cut.png
Normal file
BIN
figs/predicted-remote-hit-cut.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 KiB |
BIN
figs/simplified_cores.pdf
Normal file
BIN
figs/simplified_cores.pdf
Normal file
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 2.2 MiB |
366
presentation.tex
Normal file
366
presentation.tex
Normal file
@ -0,0 +1,366 @@
|
||||
\documentclass{beamer}
|
||||
\let\textmdorig\textmd
|
||||
\let\textscorig\textsc
|
||||
\let\textttorig\texttt
|
||||
|
||||
\usepackage[french]{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{csquotes}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{footmisc}
|
||||
\usepackage{textcomp}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{syntax}
|
||||
\usepackage{emoji}
|
||||
\usepackage{float}
|
||||
|
||||
\newcommand{\ang}[1]{\emph{#1}} % texte anglais
|
||||
\newcommand{\TODO}[1]{\color{red}#1}
|
||||
\graphicspath{ {./figs/} }
|
||||
\usetheme{Madrid}
|
||||
|
||||
\title{Soutenance de stage}
|
||||
\author{Augustin LUCAS}
|
||||
\institute[TARAN, IRISA]{
|
||||
Encadré par Guillaume DIDIER, Angeliki KRITIKAKOU\\
|
||||
Équipe TARAN, Laboratoire IRISA
|
||||
}
|
||||
\date{}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
|
||||
\begin{frame}{Plan}
|
||||
\begin{itemize}
|
||||
\item Contexte \begin{itemize}
|
||||
\item Hiérarchie de cache
|
||||
\item Attaques par canal auxiliaire sur le cache
|
||||
\end{itemize}
|
||||
\item Mise en application : analyse d'un système à deux \ang{sockets} \begin{itemize}
|
||||
\item Mise en oeuvre
|
||||
\item Topologie \ang{miss}
|
||||
\item Topologie \ang{hit}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Hiérarchie de cache}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.8\textheight]{Cores}
|
||||
\end{center}
|
||||
%Hiérarchie de cache
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Hiérarchie de cache}
|
||||
%Fonction de hachage
|
||||
\begin{center}
|
||||
\includegraphics[height=0.8\textheight]{hachage}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Cohérence de cache}
|
||||
\begin{center}
|
||||
\makebox[0.7\textwidth][r]{%
|
||||
\includegraphics<1->[scale=0.8]{protocols/exclusive}
|
||||
}
|
||||
\vspace{1em}
|
||||
|
||||
\makebox[0.7\textwidth][r]{%
|
||||
\includegraphics<2->[scale=0.8]{protocols/modified}
|
||||
}
|
||||
\vspace{1em}
|
||||
|
||||
\makebox[0.7\textwidth][r]{%
|
||||
\includegraphics<3->[scale=0.8]{protocols/shared}
|
||||
}
|
||||
\vspace{1em}
|
||||
|
||||
\makebox[0.7\textwidth][r]{%
|
||||
\includegraphics<4->[scale=0.8]{protocols/invalid}
|
||||
}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Multi-\textit{socket}}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.9\textwidth]{multi-socket}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Multi-\textit{socket}}
|
||||
\begin{center}
|
||||
\vspace{-10cm}
|
||||
\includegraphics[width=0.9\textwidth]{multi-socket}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{NUMA}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.9\textwidth]{lstopo}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Attaques par canal auxiliaire sur le cache}
|
||||
%Canal auxiliaire
|
||||
Objectif des attaques étudiées
|
||||
\begin{itemize}
|
||||
\item<2-> Savoir quelles adresses mémoire un programme accède
|
||||
\item<3-> A permis des attaques récupérant des clés privées via OpenSSL
|
||||
\item<4-> A permis d'implémenter des enregistreurs de frappe (\ang{keylogger})
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Flush+Reload}
|
||||
\only<1>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/initialb}
|
||||
|
||||
Observons le mécanisme proposé par Flush+Reload
|
||||
\end{center}
|
||||
}
|
||||
\only<2>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/flushhit0}
|
||||
|
||||
L'attaquant (en \textit{Core 0}) appelle \texttt{clflush(0xfe3a)}
|
||||
\end{center}
|
||||
}
|
||||
\only<3>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/flushhit1}
|
||||
|
||||
L'attaquant (en \textit{Core 0}) appelle \texttt{clflush(0xfe3a)}
|
||||
\end{center}
|
||||
}
|
||||
\only<4>{
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/initialb}
|
||||
|
||||
La victime charge \texttt{0xfe3a}
|
||||
\end{center}
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit1}
|
||||
|
||||
La victime ne fait rien
|
||||
\end{center}
|
||||
\end{columns}
|
||||
}
|
||||
\only<5>{
|
||||
|
||||
\center{L'attaquant charge à nouveau \texttt{0xfe3a}}, en mesurant le temps nécessaire
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/reloadhitb}
|
||||
|
||||
\emoji{stopwatch} \sim{1ns}
|
||||
\end{center}
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/reloadmissb}
|
||||
|
||||
\emoji{stopwatch} \sim{10-100ns}
|
||||
\end{center}
|
||||
\end{columns}
|
||||
}
|
||||
%F+R
|
||||
% 1. état actuel, émoji dans les caches [0x076e: :smile:] [0xfe3a: :disco:]
|
||||
% 2. flush(0xfe3a)
|
||||
% 3. attente, on sépare en deux options
|
||||
% 4. reload, temps différent, mettre une petite horloge en bas
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Flush+Flush}
|
||||
%F+F
|
||||
% 1. état actuel, émoji dans les caches [0x076e: :smile:] [0xfe3a: :disco:]
|
||||
% 2. flush(0xfe3a)
|
||||
% 3. attente, on sépare en deux options
|
||||
% 4. flush, temps différent, mettre une petite horloge en bas
|
||||
\only<1>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/initialb}
|
||||
|
||||
Observons le mécanisme proposé par Flush+Flush
|
||||
\end{center}
|
||||
}
|
||||
\only<2>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/flushhit0}
|
||||
|
||||
L'attaquant (en \textit{Core 0}) appelle \texttt{clflush(0xfe3a)}
|
||||
\end{center}
|
||||
}
|
||||
\only<3>{
|
||||
\begin{center}
|
||||
\includegraphics[height=0.7\textheight]{flushattacks/flushhit1}
|
||||
|
||||
L'attaquant (en \textit{Core 0}) appelle \texttt{clflush(0xfe3a)}
|
||||
\end{center}
|
||||
}
|
||||
\only<4>{
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/initialb}
|
||||
|
||||
La victime charge \texttt{0xfe3a}
|
||||
\end{center}
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit1}
|
||||
|
||||
La victime ne fait rien
|
||||
\end{center}
|
||||
\end{columns}
|
||||
}
|
||||
\only<5>{
|
||||
\center{L'attaquant appelle \texttt{clflush(0xfe3a)}, en mesurant le temps nécessaire}
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit0}
|
||||
\end{center}
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit1}
|
||||
\end{center}
|
||||
\end{columns}
|
||||
}
|
||||
\only<6>{
|
||||
\center{L'attaquant appelle \texttt{clflush(0xfe3a)}, en mesurant le temps nécessaire}
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit1}
|
||||
|
||||
\emoji{stopwatch} \sim{175 cycles}
|
||||
\end{center}
|
||||
\column{.5\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[height=0.6\textheight]{flushattacks/flushhit1}
|
||||
|
||||
\emoji{stopwatch} \sim{160 cycles}
|
||||
\end{center}
|
||||
\end{columns}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Problématique}
|
||||
\begin{itemize}
|
||||
\item<1-> La différence de temps est moindre
|
||||
\item<2-> La décision de \textit{hit} ou \textit{miss} demande une bonne précision
|
||||
\item<3-> Le mieux est de calibrer par paire de coeurs, et pour chaque \textit{slice}
|
||||
% Cela a été fait en \textit{reversant} les messages échangés pour des machines à 1 socket, on va proposer une analyse pour des machines à 2 sock.
|
||||
\end{itemize}
|
||||
%Objectif
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Protocole expérimental}
|
||||
\center{
|
||||
\includegraphics[height=0.15\textheight]{logo-Grid5000}
|
||||
|
||||
\vspace{4em}
|
||||
|
||||
\includegraphics[height=0.1\textheight]{logo-Kadeploy}
|
||||
}
|
||||
%Protocole expérimental
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Premiers résultats}
|
||||
%Premiers résultats
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[height=0.7\textheight]{hit-slice-bad}
|
||||
\caption{Premiers résultats sur \textit{paravance} (\textit{hit})}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Premiers résultats}
|
||||
\begin{itemize}
|
||||
\item<1-> Beaucoup de bruit
|
||||
\item<2-> La fréquence, fixée avec le profil \textbf{performance} de \texttt{cpufreq} ne l'est pas réellement
|
||||
\item<3-> L'architecture NUMA change fréquemment les adresses physiques des données
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Résultats après rectification}
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[height=0.7\textheight]{hit-slice-good}
|
||||
\caption{Nouveaux résultats sur \textit{paravance} (\textit{hit})}
|
||||
\end{figure}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Modèle \ang{miss}}
|
||||
%Modèle miss, chemin de pensée
|
||||
\begin{itemize}
|
||||
\item Ne dépend pas du coeur de la victime
|
||||
\item Le temps minimal à \textit{slice} fixée est croissant selon
|
||||
la distance à l'autre \textit{socket} dans le sens horaire
|
||||
\item Les variations restantes indiquent le chemin suivant
|
||||
\end{itemize}
|
||||
\center{
|
||||
\includegraphics[scale=0.5]{pattern-hor}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Modèle \ang{miss}}
|
||||
\begin{enumerate}
|
||||
\item Le coeur attaquant contacte la \ang{slice} locale en suivant le chemin précédent
|
||||
\item La \ang{slice} locale contacte la \ang{slice} distante en passant par le QPI.
|
||||
Le trajet de la \ang{slice} locale au QPI se fait dans le sens horaire,
|
||||
celui du QPI à la \ang{slice} distante dans le sens anti-horaire.
|
||||
\item Si le \ang{Home Agent} distant doit être contacté, cela se fait à ce moment, en faisant
|
||||
un tour complet de la \ang{socket} pour revenir à la \ang{slice} distante.
|
||||
\item Le chemin est parcouru à l'envers pour repasser par la \ang{slice} locale jusqu'au coeur attaquant
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Modèle \ang{miss}}
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[scale=0.35]{predicted-miss}
|
||||
\caption{Prédictions pour un \ang{miss}}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Modèle \ang{hit}}
|
||||
\begin{itemize}
|
||||
\item<1-> On cherche un modèle cohérent avec le modèle des \ang{miss},
|
||||
car le fonctionnement initial doit être le même ;
|
||||
\item<2-> Le temps d'exécution pour un \ang{hit} dépend largement du fait d'être inter-\ang{socket}, donc si la première \ang{slice} contactée contient la ligne en cache, tout semble s'arrêter.
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}{Modèle \ang{hit}}
|
||||
\begin{center}
|
||||
Cela suggère le modèle suivant:
|
||||
|
||||
\vspace{3em}
|
||||
|
||||
\includegraphics[scale=0.7]{model-hit}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Modèle \ang{hit}}
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[scale=0.18]{predicted-remote-hit-cut}
|
||||
\caption{Prédictions pour un \ang{hit} au sein de \ang{sockets} différents}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Pistes pour la suite}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
@ -504,7 +504,7 @@ tout en maîtrisant les principales sources de bruit.
|
||||
|
||||
Plusieurs pistes se proposent alors pour continuer le travail présenté ici :
|
||||
\begin{itemize}
|
||||
\item Affiner le modèle, qui nes't pas parfait sur les \ang{cache miss} et ne colle pas
|
||||
\item Affiner le modèle, qui n'est pas parfait sur les \ang{cache miss} et ne colle pas
|
||||
bien aux \ang{cache hit}. On pourrait ensuite voir comment celui-ci s'étend aux autres
|
||||
états de cohérrence de cache ;
|
||||
\item Clarifier les hypothèses avancées dans ce rapport en effectuant certaines vérifications :
|
||||
|
Loading…
Reference in New Issue
Block a user