You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description in french only
Il me semble qu'il y a un problème majeur mis en lumière par les vitesses : la valeur job.cpu semble fausse lorsque l'on calcule la update_executed.
Cela peut-être mis en avant en ajoutant ligne 16 de WCET.py la ligne suivante :
job.name, job.cpu.name, self.sim.now() - self.on_execute_date[job]))
(https://github.com/MaximeCheramy/simso/blob/master/simso/core/etm/WCET.py#L16)
Avant d'aller plus loin, je voudrais préciser que j'ai pris toutes les précautions nécessaires : je débug dans une version vierge de toute modification de ma part.
Le fait que cette valeur soit fausse a un réel impact sur le fonctionnement. Pour illustrer le problème, je fournis une configuration ainsi qu'un scheduler.
Le scheduler est particulièrement naïf : il ne marche qu'avec deux tâches & deux processeurs, assigne la première au premier processeur et la seconde au second. Simplement : à la moitié de l'avancé d'une tâche, il inverse les tâches de processeur.
La configuration utilise le scheduler fourni, en WCET, avec deux processeurs (un à la vitesse 1.0, 0.2) et deux tâches (D=P=10, WCET=6).
Le système est schedulable, et de charge 100% : une tâche passe 5 unités de temps sur un processeur de vitesse maximale, et 5 unités de temps sur un processeur 80% plus lent : 5x1 + 5x0.20 = 6.
Pourtant, le chronographe montre qu'il en est tout autre et que certaines tâches finissent en 6 unités de temps. Si le log (L16 dans WCET) indiqué à été ajouté : on voit bien qu'à 5ms, le calcul est fait deux fois avec le processeur CPU 1 alors que Task 2_1 était sur le processeur CPU 2.
Use configuration file to reproduce the bug.
Description in french only
Il me semble qu'il y a un problème majeur mis en lumière par les vitesses : la valeur job.cpu semble fausse lorsque l'on calcule la update_executed.
Cela peut-être mis en avant en ajoutant ligne 16 de WCET.py la ligne suivante :
job.name, job.cpu.name, self.sim.now() - self.on_execute_date[job]))
(https://github.com/MaximeCheramy/simso/blob/master/simso/core/etm/WCET.py#L16)
Avant d'aller plus loin, je voudrais préciser que j'ai pris toutes les précautions nécessaires : je débug dans une version vierge de toute modification de ma part.
Le fait que cette valeur soit fausse a un réel impact sur le fonctionnement. Pour illustrer le problème, je fournis une configuration ainsi qu'un scheduler.
Le scheduler est particulièrement naïf : il ne marche qu'avec deux tâches & deux processeurs, assigne la première au premier processeur et la seconde au second. Simplement : à la moitié de l'avancé d'une tâche, il inverse les tâches de processeur.
La configuration utilise le scheduler fourni, en WCET, avec deux processeurs (un à la vitesse 1.0, 0.2) et deux tâches (D=P=10, WCET=6).
Le système est schedulable, et de charge 100% : une tâche passe 5 unités de temps sur un processeur de vitesse maximale, et 5 unités de temps sur un processeur 80% plus lent : 5x1 + 5x0.20 = 6.
Pourtant, le chronographe montre qu'il en est tout autre et que certaines tâches finissent en 6 unités de temps. Si le log (L16 dans WCET) indiqué à été ajouté : on voit bien qu'à 5ms, le calcul est fait deux fois avec le processeur CPU 1 alors que Task 2_1 était sur le processeur CPU 2.
old_config_bug.zip
The text was updated successfully, but these errors were encountered: