[LITMUS^RT] Deadline and release miss in EDF
Chen, Tianyang
tiche at seas.upenn.edu
Sat Jan 21 00:20:40 CET 2017
Hi Björn,
I have some questions about the EDF scheduler.
I have been looking at the source code of psn_edf scheduler and it looks
like when a task misses its deadline(assuming the same as its period),
the next release will be checked as soon as requeue() is called. Because
the next release should be in the past, the task is put on ready_queue
immediately, which might be picked again in the main schedule() function
afterwards.
Let me know if my understanding is correct: Each task will only have one
job active (because rt_param has only one heap_node). The next release
is kinda triggered after the scheduler requeues the task(if it goes to
release_queue, it arms the timer to fire on the next release). If the
task is on the ready_queue and never picked, there will NOT be a second
release.
Also, there is no release arrow showing on the feather trace pdf if a
task is added back to ready_queue right after a deadline miss. Is it
missing a trace statement?
So I'm thinking about adding some sort of job buffer to each rt_task and
essentially queue jobs, say during some overloaded conditions, and run
them later. But when I looked at the code, there needs some major
changes to the code and I can't really avoid breaking other scheduler
plugins. I was just thinking about adding a list of heap_node and rt_job
param and maybe refactoring anywhere that checks job params, which might
be a change. Let me know what you think!
Thanks,
Tianyang
More information about the litmus-dev
mailing list