[LITMUS^RT] arm_release_timer

Glenn Elliott gelliott at cs.unc.edu
Wed Feb 26 23:36:54 CET 2014


On Feb 26, 2014, at 5:09 PM, ayoade gbadebo <gbaduz at gmail.com> wrote:

> 
> Please I need explanation on how arm_release_timer_on() works with ready queue and release queue to make sure jobs are released to run periodically.
> 
> And also can this phrase be explained as shown in the plugin tutorial
> 
> 
> "The preemption check callback is invoked by the rt_domain_t code whenever a job is transferred from the release queue to the ready queue (i.e., when a future release is processed). Since the callback is invoked from within the rt_domain_t code, the calling thread already holds the ready queue lock."
> 
> In summary, who keeps check of when to actually rerun a job on the cpu? Is this ensured by the arm_release_timer.

Litmus does some complicated things to make releases efficient.  Here’s how it works at a high level:
1) Job executes
2) When the job calls sleep_next_period() or the job has exhausted its budget, Litmus computes the time when the next job should be released.  Let’s call this time “next_release”.
3) If current_time >= next_release, then the next job is already eligible to run.  Litmus recomputes the deadline of the next job if you’re using a deadline scheduler.  It then inserts the next job directly into the ready-queue.
4) If current_time < next_release, then the next job is put on the release-queue, and Litmus sets a timer to raise a timer interrupt at time next_release.  The timer is set using arm_release_timer() (or arm_release_timer_on() if you’ve compiled Litmus with CONFIG_RELEASE_MASTER).  At a later time when the timer interrupt is raised, Litmus moves all jobs in the release-queue with release times <= current_time to the ready-queue.

Note: Litmus uses high-resolution timers to track release times for all of its plugins.  However, you could conceivably write a plugin that checks the release-queue on every scheduler tick (every quantum).  I believe Björn may have explored this approach in this paper: http://www.cs.unc.edu/~anderson/papers/rtss09a.pdf

-Glenn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20140226/0f7bc030/attachment.html>


More information about the litmus-dev mailing list