Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[French] Critical bug on homogeneous system #12

Open
0xAvier opened this issue Mar 27, 2018 · 0 comments
Open

[French] Critical bug on homogeneous system #12

0xAvier opened this issue Mar 27, 2018 · 0 comments

Comments

@0xAvier
Copy link

0xAvier commented Mar 27, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant