parfois la définition même de certains évènements n’est pas strictement identique.
3.1.4 Et des aspects opérationnels oubliés ou au second plan...
Le WCET est fréquemment employé pour modéliser de manière fixe et pire cas la
du-rée d’exécution d’un travail. Or, dans un système qui s’exécute du-réellement, il existe une
certaine variabilité dans la durée d’exécution des travaux. Ainsi, l’utilisation du WCET
soulève des questions lorsqu’elle est utilisée pour l’évaluation empirique des performances
des politiques en matière de préemptions, migrations ou autres métriques directement
dé-pendantes de la durée d’exécution des tâches. À titre d’exemple, l’utilisation du WCET
ne permet pas d’apprécier la capacité de certaines politiques à tirer profit de durées
d’exé-cution plus faibles que prévu. La définition 1.10 (cf. chapitre 1) rappelle également que
certains algorithmes ne sont pas prédictibles. Cela signifie que certains ensembles de tâches
ordonnançables ne le sont plus lorsque la durée d’exécution des travaux est réduite.
Les résultats obtenus par des évaluations théoriques se basent en général sur des modèles
simples, assez éloignés des considérations pratiques, et qui ignorent les surcoûts temporels
liés aux préemptions et migrations. Néanmois, de nombreuses études comptabilisent leur
nombre car ces événements peuvent être la source d’un ralentissement de l’exécution des
tâches (surcoûts liés au changement de contexte et perturbation des caches). Mais ceci n’est
pas satisfaisant pour deux raisons. La première est que l’impact réel d’une préemption ou
d’une migration n’est pas constant et dépend de la tâche préemptée, de celle qui préempte
et du moment. La seconde est que le ralentissement de l’exécution d’une tâche suite à une
préemption pourrait dans une certaine mesure augmenter la charge du système et être
la source de nouvelles préemptions par effet boule de neige. Par conséquent, un simple
nombre de préemptions n’est pas forcément significatif. Les architectures multiprocesseurs
apportent aussi davantage de complexité avec des caches partagés, de nouveaux bus de
communication ou encore des interruptions inter-processeurs qui sont susceptibles
d’intro-duire des latences supplémentaires. Ainsi, l’impact temporel de ces mécanismes matériels
sur la durée d’exécution des travaux doit être pris en considération.
Parmi les éléments pouvant avoir une influence sur la durée d’exécution des travaux, il y a
les mémoires cache. Nous avons vu par ailleurs dans la partie 2.6 que certaines politiques,
ditescache-awareessaient de prendre en compte les caractéristiques des tâches pour
amé-liorer les performances générales du système en utilisant au mieux les caches. En effet, les
interférences sur les caches suite à une préemption peuvent causer des délais additionnels.
De manière similaire, lorsqu’un cache est partagé entre plusieurs cœurs, l’exécution d’une
tâche peut avoir un impact significatif sur la vitesse d’exécution d’une tâche s’exécutant
sur un autre cœur (voir chapitre 2). L’évaluation de telles politiques n’a de sens qu’avec
une prise en compte des caches.
Ces architectures soulèvent aussi de nouvelles questions au niveau du système
d’exploita-tion : quel cœur devrait exécuter le code de l’ordonnanceur ?, quelles structures de données
devraient être verrouillées ?, etc. Les recherches doivent maintenant s’attaquer aux
pro-blèmes liés à la mise en œuvre effective des algorithmes [CLB
+06].
3.2 Objectifs
L’objectif premier de cette thèse est l’étude et l’évaluation de politiques
fonctionne-ment et les spécificités des nombreux algorithmes qui ont été proposés. Ceci devrait nous
permettre à terme de conseiller dans le choix de tel ou tel ordonnanceur, d’améliorer
certains algorithmes existants ou de proposer de nouvelles politiques.
Pour atteindre cet objectif, nous optons pour la simulation d’ordonnancement en raison
des avantages présentés dans la partie 3.1.2. Cette approche doit être réalisée sur des
expérimentations systématiques à grande échelle (c’est-à-dire sur des jeux de tests de taille
significative et sur un large ensemble de politiques d’ordonnancement) dans des conditions
expérimentales maîtrisées et clairement exposées. Il nous semble aussi nécessaire d’enrichir
les modèles pour mieux prendre en compte les aspects opérationnels afin de pallier les
problèmes relevés dans la partie 3.1.4.
Partant de ces constatations, notre objectif peut être décliné sous la forme de trois axes.
Le premier est de mettre en œuvre les principales politiques d’ordonnancement existantes.
Le second objectif est de permettre une automatisation des évaluations pour comparer
dans les mêmes conditions les algorithmes. Enfin, le dernier axe est d’améliorer le niveau
de détail de la simulation afin de prendre en compte certains aspects opérationnels.
a) Mise en œuvre des algorithmes d’ordonnancement
Afin de répondre à l’objectif de cette thèse, il est évidemment nécessaire d’offrir un moyen
pour mettre en œuvre des algorithmes d’ordonnancement dans le cadre des évaluations.
Cela passe par une connaissance et une appropriation pratique des politiques existantes,
mais aussi par la mise en place d’outils efficaces pour pouvoir les implémenter et rendre
reproductibles les expérimentations par la communauté scientifique.
À notre connaissance, le travail le plus avancé de classement et de recensement des
algo-rithmes d’ordonnancement multiprocesseur a été publié en 2011 par Davis et Burns [DB11].
Or, de nombreux travaux ont été proposés depuis ce qui nécessite une actualisation. Au
cours du chapitre 1, nous avons ainsi proposé un survol des principales approches et des
algorithmes pour l’ordonnancement temps réel, en y intégrant notamment de nouveaux
algorithmes apparus récemment.
Ce travail de bibliographie montre une très grande variété de méthodes pour mettre en
œuvre les algorithmes d’ordonnancement. Il est donc nécessaire de disposer d’un outil
d’évaluation avec des moyens flexibles et adaptables pour implémenter les algorithmes et
ce quelle que soit leur approche. Les principaux algorithmes d’ordonnancement devront
être proposés avec cet outil. De plus, l’outil doit offrir un support pour évaluer dans des
conditions identiques les politiques existantes, mais aussi celles qui seront proposées dans
le futur. Nous verrons dans le chapitre 4 comment ce point a été traité.
Enfin, nous avons remarqué la difficulté pour obtenir le code source de certains
ordon-nanceurs et pour reproduire certaines expérimentations (voir partie 3.1.3). Nous avons
donc la volonté de rendre disponible nos implémentations ainsi que d’offrir la possibilité
à quiconque de réutiliser notre plateforme pour compléter les évaluations dans les mêmes
conditions (ordonnanceurs évalués sur les mêmes entrées et les mêmes métriques).
b) Mise en place des évaluations
Notre objectif est d’évaluer statistiquement de nombreuses politiques d’ordonnancement
sur un ensemble varié de configurations. Il faut donc offrir des conditions expérimentales
reproductibles et maîtrisées, ainsi que des moyens pour conduire efficacement ces études.
3.2. Objectifs 67
Pour cela, l’automatisation des expérimentations est un point essentiel. La génération des
systèmes, leur simulation et l’extraction des données doit pouvoir se faire automatiquement
et dans des conditions expérimentales explicites. En particulier, les différentes méthodes
pour la génération des systèmes et notamment des tâches doivent être caractérisées. En
effet, les principaux paramètres (nombre de tâches, nombre de processeurs, charge du
système, etc.) ont une influence sur les comportements des algorithmes et nous souhaitons
pouvoir étudier cette influence pour chaque paramètre indépendament. Ce point est abordé
dans le chapitre 4 sur l’outil d’évaluation, mais aussi explicitement exposé dans la partie 5
présentant les résultats des expérimentations.
En dehors des paramètres d’entrée des évaluations, nous portons aussi une attention
par-ticulière à la définition des métriques d’observation. Nous ne souhaitons pas nous limiter
à l’ordonnançabilité qui est souvent la principale caractéristique étudiée dans les
publi-cations mais nous voudrions nous intéresser également aux performances des politiques
en termes de surcoût à l’exécution, temps de réponse ou autre. En effet, de nombreuses
politiques affichent des qualités théoriques similaires en matière d’ordonnançabilité, mais
la prise en compte de critères supplémentaires pourrait justifier l’utilisation de l’une ou de
l’autre.
c) Prise en compte des aspects opérationnels
Comme annoncé, il s’agit là de prendre en compte plus finement les aspects opérationnels,
c’est-à-dire les éléments de l’architecture matérielle et logicielle qui ont une influence sur
l’ordonnancement. En effet, l’architecture matérielle a un impact sur la vitesse d’exécution
des tâches et le système d’exploitation introduit des surcoûts temporels notamment lors
des changements de contexte ou lors des appels aux méthodes de l’ordonnanceur.
Parmi les éléments matériels qui influent sur l’ordonnancement, nous avons décidé de
nous concentrer sur les caches. Comme exposé dans le chapitre 2, l’ordonnancement et
l’efficacité de cet élément de l’architecture sont dépendants l’un de l’autre : les décisions
d’ordonnancement agissent sur leur efficacité (partage du cache dû au parallélisme, perte
de la cohérence suite à une préemption, etc.), et inversement, les mémoires caches ont
un impact sur la vitesse d’exécution des tâches ce qui peut avoir des conséquences sur
l’ordonnancement.
Afin de modéliser le comportement des caches au niveau qui nous intéresse, c’est-à-dire
au niveau de l’évaluation des politiques d’ordonnancement, nous avons retenu les
tra-vaux de la communauté sur l’évaluation de performance des architectures. En effet, une
grande partie d’entre eux s’intéressent aux mémoires caches et plusieurs modèles visent à
estimer le nombre de défauts de cache et par conséquent la vitesse d’exécution des
pro-grammes. Ces modèles sont statistiques et se basent majoritairement sur leStack Distance
Profile [MGST70] (voir partie 2.5). Nous tâcherons de savoir si ces modèles satisfont ou
non nos besoins pour évaluer les politiques d’ordonnancement temps réel à travers un
simulateur d’ordonnancement.
Pour pouvoir répondre à cette question, nous nous sommes fixé comme critères les éléments
suivants : les temps de calculs des modèles doivent être faibles pour permettre la conduite
de nombreuses simulations ; la taille des caches et leur hiérarchie doit être un paramètre
d’entrée afin d’étudier leur influence ; les caractéristiques de l’utilisation du cache par
les tâches doivent pouvoir être générées automatiquement ; les résultats de la simulation
doivent être proches de ce que nous pourrions obtenir sur cible physique.
Concernant les surcoûts liés au système, des pénalités temporelles pourront être appliquées
au moment de la simulation. Pour cela, l’interface de programmation permettant la mise en
œuvre d’un ordonnanceur doit être réaliste dans le sens où l’ordonnancement doit reposer
sur des mécanismes que l’on retrouve de manière classique sur les systèmes. L’ordonnanceur
pourra ainsi intervenir lors des évènements classiques de type activation ou fin d’exécution
de travaux, mais il pourra également utiliser des timers pour éventuellement prendre des
décisions d’ordonnancement conduites par le temps. De même, dans un système réel, le
code de l’ordonnanceur s’exécute sur l’un des cœurs ce qui a un impact sur l’exécution
du système. Ainsi, l’interface de programmation doit aussi pouvoir permettre de spécifier
quel cœur exécute le code de l’ordonnanceur afin de pouvoir imputer au cœur le temps
nécessaire à l’exécution du code. Enfin, dans le cas d’architectures multiprocesseurs, il
peut être nécessaire d’interdire l’exécution simultanée de certains codes du système. Un
système simple d’exclusion mutuelle doit ainsi pouvoir être défini. Tous ces éléments sont
introduits dans le chapitre 4.
Dans le document
Étude et évaluation des politiques d'ordonnancement temps réel multiprocesseur
(Page 76-79)