-
Notifications
You must be signed in to change notification settings - Fork 24
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
Redesign of GEDF scheduler #433
Conversation
|
It didn't run on Linux. Looks like a problem with propagation of deadlines across federates! We were masking this problem by having a flawed scheduler... |
Actually, the situation looks worse. Deadlines are not propagated anywhere! ReactorInstance.assignDeadlines is never called anywhere in the code generation tree. |
Oh you're right. I must have looked at the wrong CI output 🫣 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left minor comments. Overall this looks like an improvement to the comprehensibility and scheduling behavior of the code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am happy about the latest changes -- thanks!
This PR has a companion PR in lingua-franca.
This a PR addresses issue #426, which points out that the GEDF scheduler was not prioritizing reactions with tighter deadlines unless they also had the same or lower levels compared to reactions with looser deadlines. It also fixes a bug (exposed by the change to GEDF) where deadlines were not propagated upstream to reactions that lexically precede a reaction with a deadline.
This scheduler also achieves slightly better performance than the previous scheduler (390 ns/reaction vs. 450 ns/reaction on a performance test).
This PR also cleans up scheduler_instance.h, removing several items that are relevant only to specific schedulers and are not part of the scheduling API. There are also various other code cleanups.
This PR also removes the chain_ID field of reactions, which never worked.