From 961e6108f91d262f64f662db8fd69d5f4e990b4f Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 Apr 2024 13:05:00 +0200 Subject: [PATCH] rewording+add some graphs --- report/document.tex | 98 ++++++++++++++++++++++----------- report/imgs/bottom-seq.jpg | Bin 0 -> 32395 bytes report/imgs/bottom-threads.jpg | Bin 0 -> 43475 bytes 3 files changed, 65 insertions(+), 33 deletions(-) create mode 100644 report/imgs/bottom-seq.jpg create mode 100644 report/imgs/bottom-threads.jpg diff --git a/report/document.tex b/report/document.tex index 7a7c357..413f351 100644 --- a/report/document.tex +++ b/report/document.tex @@ -37,8 +37,10 @@ \def\coeur{c\oe{}ur} \def\mone{\textit{Machine 1}} % fixe \def\mtwo{\textit{Machine 2}} % portable -\def\bone{\textit{Benchmark quicksort}} -\def\btwo{\textit{Benchmark mandelbrot}} +\def\qs{\enquote{quicksort}} +\def\mandel{\enquote{mandelbrot}} +\def\bone{\textit{Benchmark \qs}} +\def\btwo{\textit{Benchmark \mandel}} \def\ws{\enquote{work-stealing}} @@ -149,17 +151,13 @@ \section{Descriptions} Description des différents algorithmes implémentés. -\subsection{Séquentiel} -Cette implémentation naïve correspond au mode \texttt{serial} -de \texttt{quicksort.c}. Elle lance les tâches sans threads. +\subsection{Séquentiel}\label{desc:seq} +Cette implémentation lance les tâches sur un \coeur. -\subsection[Threads sans gestion]{Threads sans gestion} +\subsection{Threads sans gestion}\label{desc:threads} Cette implémentation correspond à simplement démarrer un nouveau thread pour chaque nouvelle tâche. -Comme cette implémentation n'ordonnance rien et que le nombre de threads créés -est important. - \subsection{Threads avec pile}\label{desc:th_pile} Pour cette implémentation, nous gardons en mémoire une pile et nous démarrons un nombre fixe de threads, et à chaque ajout d'une tâche, le thread l'empile. @@ -177,6 +175,12 @@ plus de tâches, il essaie d'en voler une à un autre thread. \section{Comportement} +Analyse du comportement des différentes implémentations. + +\subsection{Threads sans gestion} +Cette implémentation n'ordonnance rien, alors le nombre de threads +créés est important. + \subsection{Listes} Dans l'ordonnanceur LIFO, la liste est une pile. Chaque thread récupère le premier élément de la pile, c'est-à-dire le dernier à avoir été ajouté. @@ -189,19 +193,19 @@ un vol, c'est le dernier élément qui est récupéré par le thread. Dans mes implémentations, j'ai exclusivement utilisé des mutex ainsi que des variables de conditions pour endormir/réveiller mes threads. -Pendant le développement, j'ai parfois utilisé \texttt{usleep} au lieu des -variables de conditions pour faire attendre les threads, mais j'ai obtenu de -meilleurs résultats avec les variables de conditions. Aussi, je pense qu'avoir -les variables de conditions m'assure que mon ordonnanceur fonctionne sur -n'importe quel CPU, qu'il soit lent ou rapide, avec des performances honnêtes. -En effet, choisir une valeur qui fonctionne bien sur mon ordinateur n'assure pas -qu'elle soit la meilleure pour un autre. +Pendant le développement, j'ai parfois utilisé \texttt{usleep} pour interrompre +à temps donné un thread au lieu des variables de conditions pour faire +attendre les threads, mais j'ai obtenu de meilleurs résultats avec les variables +de conditions. Aussi, je pense qu'avoir les variables de conditions m'assure +que mon ordonnanceur fonctionne sur n'importe quel CPU, qu'il soit lent ou rapide, +avec des performances honnêtes. En effet, choisir une valeur qui fonctionne bien +sur mon ordinateur n'assure pas qu'elle soit la meilleure pour un autre processeur. \subsection{Nombre de threads} Pour avoir un programme performant, il faut équilibrer le nombre de threads par rapport aux nombres de \coeur{}s disponibles. Il faut également équilibrer la création de nouvelles tâches par thread par rapport au véritable travail -effectué par ledit thread. Par exemple, dans le \btwo, chaque tâche soit crée +effectué par ledit thread. Par exemple, dans le \btwo, chaque tâche crée soit quatre nouvelles tâches, soit calcule une portion de l'image. Une plus grande création de tâches favorise le \ws~parce qu'une pile unique atteint ses limites quand trop de tâches sont ajoutées, car les threads n'ont pas le temps @@ -218,10 +222,19 @@ de \texttt{gcc}, sur 2 machines. \item \textbf{8 \coeur{}s} pour la \mtwo. \end{enumerate} -Le programme utilisé pour tester les implémentations est le quicksort fourni -et une adaptation de mandelbrot fournie dans le +Les benchmarks utilisés pour tester les implémentations sont le \qs~fourni +et une adaptation de \mandel~fournie dans le \href{https://www.irif.fr/~jch/enseignement/systeme/tp10.pdf}{TP 10}. +Pour lancer plusieurs fois le programme, j'ai utilisé la commande +\mintinline{fish}|for| du shell \texttt{fish}. Pour exemple, voici la commande +pour lancer l'ordonnanceur 100 fois avec \qs~et tous les threads disponibles : + +\begin{figure}[H] + \centering + \mintinline{fish}|for i in (seq 100); ./ordonnanceur.elf -qt 0; end| +\end{figure} + \subsection{Séquentiel}\label{stats:seq} \begin{description} \item[\bone] \hspace{1em} @@ -243,7 +256,16 @@ et une adaptation de mandelbrot fournie dans le \statPlot{serial}{en séquentiel} -Ce programme ne bénéficie pas de toute la puissance de la machine. +\begin{figure}[H] + \centering + \includegraphics[alt={Graphique},width=\textwidth]{imgs/bottom-seq.jpg} + \caption{Exploitation des ressources sur la \mone~avec \docref{desc:seq}} + \label{fig:btm-seq} +\end{figure} + +Ce programme ne bénéficie pas de toute la puissance de la machine, +visible notamment grâce à la \autoref{fig:btm-seq} où l'on voit que seulement +un \coeur~est utilisé. \subsection{Threads sans gestion}\label{stats:th_ges} @@ -267,14 +289,25 @@ Ce programme ne bénéficie pas de toute la puissance de la machine. \statPlot{solution1}{avec des threads} -La création des threads pour chaque tâche crée un énorme -goulot d'étranglement qui réduit de grandement les performances. +\begin{figure}[H] + \centering + \includegraphics[alt={Graphique},width=\textwidth]{imgs/bottom-threads.jpg} + \caption{Exploitation des ressources sur la \mone~avec \docref{desc:threads}} + \label{fig:btm-threads} +\end{figure} -Le temps d'exécution étant long, nous pouvons voir les threads via la commande -\texttt{top} : \mintinline{bash}|top -Hp $(pgrep ordonnanceur)|. +La création des threads pour chaque tâche crée un énorme goulot +d'étranglement qui réduit grandement les performances. On le voit notamment +sur la \autoref{fig:btm-threads} où tous les \coeur{}s sont utilisés, mais très +peu. Créer de façon incontrôlée des threads n'est pas une manière efficace de +répartir la charge. -Pour augmenter les performances, il faut avoir une taille fixe de threads crée, -et donc il faut gérer les tâches et décider de quelle tâche va sur quel thread. +% Le temps d'exécution étant long, nous pouvons voir les threads avec la commande +% \texttt{top} : \mintinline{bash}|top -Hp $(pgrep ordonnanceur)|. + +Pour augmenter les performances, il faut donc avoir une taille fixe de threads, +et par conséquent, il faut gérer les tâches et décider de quelle tâche va sur +quel thread. \subsection{Threads avec pile}\label{stats:stack} \begin{description} @@ -305,7 +338,7 @@ les performances sont aussi améliorées par rapport aux tests de \docref{stats:seq}. Dans la \autoref{fig:btm-lifo}, nous observons que les \coeur{}s du CPU ne sont pas -tous utilisés à 100 \%. Ceci est dû au fait que l'accès à la liste des tâches est +tous utilisés à 100~\%. Ceci est dû au fait que l'accès à la liste des tâches est limité, car partagé entre les threads. \begin{figure}[H] @@ -367,8 +400,8 @@ Dans cette implémentation, nous n'utilisons plus une pile, mais un deque de tâ Cette façon de faire est légèrement meilleur que \docref{desc:th_pile}. Dans la \autoref{fig:btm-ws}, nous observons que les \coeur{}s du CPU sont -proches de 100 \% d'utilisation. Comparé à \docref{stats:stack}, nous gagnons -en moyenne \approx~10 \% de l'utilisation du processeur dans son entièreté. +proches de 100~\% d'utilisation. Comparé à \docref{stats:stack}, nous gagnons +en moyenne \approx~10~\% de l'utilisation du processeur dans son entièreté. \begin{figure}[H] \centering @@ -459,13 +492,12 @@ le \btwo~fonctionnait correctement. Ce qui donne la \autoref{fig:mandelbrot}. \begin{figure}[H] \centering - \includegraphics[alt={Fractale mandelbrot},width=0.7\textwidth]{imgs/mandelbrot.jpg} - \caption{Example de Mandelbrot} + \includegraphics[alt={Fractale \mandel},width=0.7\textwidth]{imgs/mandelbrot.jpg} + \caption{Example de \mandel} \label{fig:mandelbrot} \end{figure} -Les captures d'écran de la \autoref{fig:btm-lifo} et de la \autoref{fig:btm-ws} -ont été prises via le +Les captures d'écran d'exploitation des ressources ont été prises via le programme \href{https://github.com/ClementTsang/bottom}{bottom}. \end{document} diff --git a/report/imgs/bottom-seq.jpg b/report/imgs/bottom-seq.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de8889a440775c9af4dd41e4ed8271e1596ff112 GIT binary patch literal 32395 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 literal 0 HcmV?d00001 diff --git a/report/imgs/bottom-threads.jpg b/report/imgs/bottom-threads.jpg new file mode 100644 index 0000000000000000000000000000000000000000..730aadf5e82718cc3623b9f1159f969cf7404e3f GIT binary patch literal 43475 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