• Aucun résultat trouvé

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.