[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