What I'm really asking about is specifically the "unless" clause at
the end of your response.  Assume a high priority RT thread is doing
something like while(1) { } and just spinning and eating CPU.  I would
like to force the Linux kernel to be scheduled for, say, up to 20mS
every 200mS to give it the opportunity to service Linux interrupts
even if the high-priority RT task is runnable (ie I want to
periodically preempt the RT thread and allow the Linux kernel to run
for a limited amount of time).  It looks like SCHED_SPORADIC is a way
to do this, I'm just not sure how to apply that to the kernel itself.

Thanks,

- Eric

On Fri, Mar 25, 2011 at 3:59 PM, Philippe Gerum <[email protected]> wrote:
> On Fri, 2011-03-25 at 15:48 -0400, Eric Eric wrote:
>> Roger on the RR/FIFO scheduling question.  Regarding Linux starvation,
>> it looks like pthread_setschedparam_ex can be used on a particular
>> Linux thread to avoid starvation, however I'm more concerned about the
>> Linux kernel itself.  In the example below, I may want the kernel to
>> have some time to service interrupts even if an RT task is behaving
>> badly.  How could I achieve this?
>
> As an extension, Xenomai interprets param.low_prio == -1 as "suspend the
> thread". So each time the thread exceed its runtime credit, the nucleus
> suspends it until it is replenished, instead of merely downgrading its
> priority. As a side-effect, Linux becomes runnable again (unless another
> -rt thread is requesting the CPU immediately, but you get the point).
>
>>
>> Thanks again for the fast and helpful responses!
>>
>> - Eric
>>
>> On Fri, Mar 25, 2011 at 4:21 AM, Philippe Gerum <[email protected]> wrote:
>> > On Thu, 2011-03-24 at 19:47 -0400, Eric Eric wrote:
>> >> Hello, I've been reading through some of the documentation and have a
>> >> few questions regarding scheduling:
>> >>
>> >> - API docs say that rt_task_set_mode can allow a task to undergo
>> >> round-robin scheduling.  This seems to imply that we can have an
>> >> environment of mixed round-robin and FIFO task scheduling.  Is this
>> >> correct?  If so, what is the scheduling relationship between tasks
>> >> running in FIFO and RR modes?
>> >
>> > RR are FIFO threads within the same priority group.
>> >
>> >>
>> >> - I am concerned about Linux starvation.  For example, suppose a
>> >> misbehaving RT task spins and burns CPU indefinitely (watchdog
>> >> notwithstanding).  I would still like to preempt this task and allow
>> >> Linux to run for up to some maximum time (say up to 30mS every 200mS).
>> >>  So, if using RR scheduling, is there a way to use rt_task_slice to
>> >> allocate time to Linux?  Is there a Linux shadow thread that I can
>> >> allocate time to?
>> >
>> > Xenomai implements sporadic server scheduling. See SCHED_SPORADIC,
>> > usable with int pthread_setschedparam_ex().
>> >
>> >>
>> >> Thank you.
>> >>
>> >> - Eric
>> >>
>> >> _______________________________________________
>> >> Xenomai-help mailing list
>> >> [email protected]
>> >> https://mail.gna.org/listinfo/xenomai-help
>> >
>> > --
>> > Philippe.
>> >
>> >
>> >
>
> --
> Philippe.
>
>
>

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to