[LITMUS^RT] Alternative to deferring work

Gabriel Lozano gabrilozano90 at gmail.com
Mon Oct 23 23:38:59 CEST 2017


Hello all, I'm Gabriel and I've been working with litmus-rt in the past few
weeks trying to implement a prototype scheduler that features predictable
processor frequency scaling for a project. I've been having some problems
so I thought I might as well ask here for some guidance from someone more
experienced...

The scheduler is somewhat straightforward: it is based on P-EDF, all it has
to do is to initiate a frequency scaling step at certain points in the
schedule, specifically during task release and completion. However, the
scaling step needs to be done out of interrupt context (with iqrs on).
Since both releases and completions are handled when irqs are saved, I need
to perform this task somewhere else.

An idea I had is to implement a top half/bottom half solution: raise a soft
irq inside the handlers for release and completion and defer the scaling
step. The problem is I'm not sure if there's any guarantee that the scaling
will be performed as soon as the irqs are back on. Another thing that I
though about was to use a message passing protocol and having a DSP perform
all frequency adjustments out of interrupt context. However, I have the
feeling this be overkill for this problem.

I'd like to have frequency scaling done right after releases/completions.
But I feel these solutions are overly complicated and so I was wondering if
someone in the community had already done something alike using a simpler
solution...

Thanks for all your help. Regards!
GL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20171023/38db1b07/attachment.html>


More information about the litmus-dev mailing list