• Aucun résultat trouvé

Estimation du délai de garde en temps-réel

Dans le document The DART-Europe E-theses Portal (Page 66-69)

La valeur minimale de la garde de chaque tâche est estimée en temps-réel. Cette estimation est obtenue en mesurant le retard avec lequel sont inscrits les évènements des signaux utilisés par la tâche. Une estimation de la moyenne et de la variance de ce retard est déterminée pour chaque signal. Notons que le calcul correspondant doit être extrêmement rapide à effectuer, quitte à ne donner qu'un résultat très approximatif, afin de réduire son cout temporel sur l'exécution. On ajuste alors la garde de la tâche de manière à ce que son exécution démarre, dans la grande majorité des cas, après l'arrivée des évènements du signal le plus lent.

Chaque évènement correspondant au changement d'état d'un signal est doublement daté. Pour le ième évènement es,i = (vi, tw,s,i, twc,s,i) du signal s, la première date tw,s,i est appelée date d'écriture. Il s'agit d'une date virtuelle. Elle correspond en général à la date d'exécution de la tâche responsable de l'écriture1. La seconde date twc,s,i correspond à l'état qu'avait l'horloge murale lorsque

1 A laquelle on a ajouté un cycle Δ.

54 - Chapitre 2

l'évènement a été créé dans la structure de donnée d'NJN. On est ainsi en mesure de connaître le retard Δtw,s,i avec lequel chaque évènement est créé (figure 24).

tw ,s ,i=twc , s , itw ,s ,i

On suppose que Δtw,s,i suit une loi normale de moyenne µs,i et de variance σs,i². On détermine alors une estimation de µs,i et σs,i² en prenant en compte majoritairement les derniers évènements inscrits sur le signal.

Figure 24. Estimation du retard à l'écriture de chaque évènement.

Une bonne estimation de la moyenne sur n évènements peut être obtenue par l'expression :

s=1 n

i=1 n

tw , s , i

De même, un estimateur sans biais de la variance est donné par :

s

2= 1

n−1

1

n

s− tw , s , i

2

Ces deux estimateurs nécessitent d'être recalculés intégralement pour chaque nouvel évènement, ce qui demande un temps de calcul proportionnel au nombre d'évènements pris en compte. Ce temps pourrait être fortement dommageable aux performances du système puisqu'il doit être calculé pour chaque nouvel évènement inscrit sur chaque signal de l'application.

Pour cette raison, on préfère estimer les deux paramètres statistiques de façon très approchée en privilégiant l'efficacité de l'exécution. On procède en pondérant l'estimation du paramètre obtenue à l'itération précédente par la valeur du retard correspondant au nouvel évènement. La moyenne est ainsi estimée par :

s ,i=s ,i−11− tw , s ,i

Vers un modèle évènementiel temps-réel déterministe - 55 où α est un coefficient pondérateur compris entre 0 et 1, typiquement de l'ordre de 0,99.

De même, une estimation très approximative de la variance est déterminée par :

s ,i

2 =s ,i−1

2 1−

s , i− tw , s ,i

2

D'un point de vue strictement théorique, la garde doit être déterminée à partir des caractéristiques statistiques de l'ensemble des signaux consultés par la tâche. En pratique, il est assez difficile de déterminer cet ensemble avec exactitude sans analyser les opérations effectuées pendant l'exécution du corps de la tâche. De plus, certains de ces signaux – ceux destinés à gérer les aspects structurels de l'application par exemple – sont modifiés très rarement et ne sont donc pas très pertinents pour l'objectif fixé. A l'inverse, les signaux de la liste de sensibilité sont naturellement ceux qui sont les plus sollicités puisqu'ils correspondent aux éléments étroitement surveillés par la tâche. Ils ont en plus l'avantage d'être parfaitement connus dès la construction de l'application. Pour cette raison, on se limite à l'ensemble des signaux qui sont énoncés dans cette liste.

Soit ST l'ensemble de signaux de la liste de sensibilité de la tâche T. On détermine la garde de T à partir des paramètres statistiques du signal s∊S le plus lent :

gT=maxs∈ST

s , i2 k

s , i2

avec k, un paramètre de sécurité typiquement de l'ordre de 3 ou 4.

Figure 25. Simulation d'une minute d'exécution des trois tâches de la figure 24. Les tâches sont exécutées avec une périodicité de 100 ms. Sont représentés en ms le retard d'écriture de T1 et T2 vu de T3 ainsi que la garde appliquée à l'exécution de T3.

Les carrés rouges signalent les retours arrière de la tâche T3.

56 - Chapitre 2

La figure 25 montre le résultat d'une minute de simulation d'une application telle que celle présentée figure 24. Les évènements en provenance de la tâche T1 sont caractérisés par un retard moyen de 30 ms et d'écart type 5 ms. Les évènements en provenance de T2 ont un retard moyen de 10 ms avec un écart type de 5 ms. Le coefficient α est ajusté à 0,99 tandis que le coefficient de sécurité k est fixé à 3. On observe la stabilisation de la garde de T3 à une valeur d'environ 45 ms. A partir de 4 s d'exécution, la tâche T3 ne subit plus que des retours arrière exceptionnels.

En théorie, la garde offre certaines garanties que les tâches du système ne subissent pas de retour arrière en régime permanent. Mais la validité de cette approche dépend de la qualité du modèle statistique et de celle des estimateurs.

Or, les estimateurs choisis ne sont pas sans biais, loin s'en faut, et les échantillons utilisés comportent les évènements annulés par les retours arrière ce qui fausse l'estimation. Devant l'exigence de performance, la solution adoptée semble pourtant être la plus satisfaisante mais nécessite une analyse plus poussée1.

3 Vers l'ordonnancement temporel

Le mécanisme de garde prémunit en principe des retours arrière lorsque l'application a trouvé un point de fonctionnement adapté à la durée d'exécution de chaque tâche. Dans ces conditions de fonctionnement et sous réserve que les sollicitations du système soient périodiques, NJN peut présenter certaines garanties d'ordonnançabilité. La première section de cette partie montrera que le principe de la garde peut être rapproché d'un ordonnancement temporel.

Dans le document The DART-Europe E-theses Portal (Page 66-69)