<div dir="ltr">Hi Tianyang,<div><br></div>I am interested to the overrun handling problem as well.<div>No matter which scheduler you use in LitmusRT, when a job is finished and calling job_completion(), prepare_for_next_period() will be called. </div><div>By digging into this function, you can see that setup_release() will update job sequence number, i.e., job_no. </div><div>This number will be checked in sys_wait_for_job_release() in litmus.c. </div><div><br></div><div>As we can read in the comment, "If the last job overran, then job <= job_no and we don't send the task to sleep".</div><div>The idea here is to check if the current job is the exact the last ready job of this task. <br></div>The task is only going to sleep only when its # of released job is larger than job_no by triggering complete_job().<div><div>Therefore, those postponed jobs will be released still until the condition holds, and your first problem is somehow not existed. Am I right?</div><div><br></div><div>About your second question, I find that job_completion() is defined differently in pfp and edf, i.e., sched_trace_task_release<wbr>(t) is not called in edf<span style="color:rgb(51,51,51);font-family:consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap">.</span></div><div>I'm not sure if it is related :P</div><div><br></div><div>Best,</div><div>Kuan-Hsun</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-01-21 0:20 GMT+01:00 Chen, Tianyang <span dir="ltr"><<a href="mailto:tiche@seas.upenn.edu" target="_blank">tiche@seas.upenn.edu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Björn,<br>
<br>
I have some questions about the EDF scheduler.<br>
<br>
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.<br>
<br>
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.<br>
<br>
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?<br>
<br>
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!<br>
<br>
Thanks,<br>
Tianyang<br>
<br>
______________________________<wbr>_________________<br>
litmus-dev mailing list<br>
<a href="mailto:litmus-dev@lists.litmus-rt.org" target="_blank">litmus-dev@lists.litmus-rt.org</a><br>
<a href="https://lists.litmus-rt.org/listinfo/litmus-dev" rel="noreferrer" target="_blank">https://lists.litmus-rt.org/li<wbr>stinfo/litmus-dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_7479584900635285209m_5129467713712745005gmail_signature"><div dir="ltr">M.Sc. Kuan-Hsun Chen<br>
<br>
TU Dortmund<br>
Department of Computer Science 12<br>
Design Automation of Embedded Systems<br>
Otto-Hahn-Strasse 16, Room 102<br>
<br>
44227 Dortmund<br>
Germany<br>
<br>
Phone:  <u><span style="color:rgb(0,0,255)"><a href="tel:+49%20231%207556124" value="+492317556124" target="_blank">+49 231 755 6124</a></span></u><br>
Mail:   <a href="mailto:kuan-hsun.chen@tu-dortmund.de" target="_blank">kuan-hsun.chen@tu-dortmund.de</a><a href="mailto:kuan-hsun.chen@tu-dortmund.de" target="_blank"></a></div></div>
</div></div>