simso
simso copied to clipboard
[French] Critical bug on homogeneous system
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.