2005-09-12 09:00:40

by Ingo Molnar

[permalink] [raw]
Subject: Re: possible bug in RP kernel


* Florian Schmidt <[email protected]> wrote:

> Problem is: i wrote a small test program running at prio 80 that
> simply busy loops for about 15 seconds. It seems from the log output
> that the main thread never wakes up during the time of the test
> program running.
>
> Sep 12 10:36:07 mango rt_watchdog: count 5
> Sep 12 10:36:30 mango rt_watchdog: count 6
> ^^
> 23 seconds gap between two wakeups
>
> Maybe my understanding of how sched fifo works is wrong, but i assumed
> a higher prio thread shold get woken up from a sleep by the scheduler
> which gets run by the timer interrupt [which is still non
> preemptible].

depending on what type of timeout you are using you'll also need to chrt
the softirq-timer kernel thread(s) to prio 99. Otherwise the timer fn
will have no chance to be executed. There's work going on by Thomas to
make such things automatic, by prioritizing timers. If you have HRT
enabled in the .config then it should mostly be automatic already
though.

Ingo


2005-09-12 09:14:26

by Florian Schmidt

[permalink] [raw]
Subject: Re: possible bug in RP kernel

On Mon, 12 Sep 2005 11:01:15 +0200
Ingo Molnar <[email protected]> wrote:

> > 23 seconds gap between two wakeups
> >
> > Maybe my understanding of how sched fifo works is wrong, but i assumed
> > a higher prio thread shold get woken up from a sleep by the scheduler
> > which gets run by the timer interrupt [which is still non
> > preemptible].
>
> depending on what type of timeout you are using you'll also need to chrt
> the softirq-timer kernel thread(s) to prio 99. Otherwise the timer fn
> will have no chance to be executed. There's work going on by Thomas to
> make such things automatic, by prioritizing timers. If you have HRT
> enabled in the .config then it should mostly be automatic already
> though.

Ah,

thanks for the info. So it is a user (me) bug in the end :) This has
helped. Actually the code i had attached had another bug in it. But that
wasn't the responsible one.

Thanks again, and sorry for the multiple mails,
Florian Schmidt

--
Palimm Palimm!
http://tapas.affenbande.org

2005-09-12 09:31:03

by Ingo Molnar

[permalink] [raw]
Subject: Re: possible bug in RP kernel


* Florian Schmidt <[email protected]> wrote:

> On Mon, 12 Sep 2005 11:01:15 +0200
> Ingo Molnar <[email protected]> wrote:
>
> > > 23 seconds gap between two wakeups
> > >
> > > Maybe my understanding of how sched fifo works is wrong, but i assumed
> > > a higher prio thread shold get woken up from a sleep by the scheduler
> > > which gets run by the timer interrupt [which is still non
> > > preemptible].
> >
> > depending on what type of timeout you are using you'll also need to chrt
> > the softirq-timer kernel thread(s) to prio 99. Otherwise the timer fn
> > will have no chance to be executed. There's work going on by Thomas to
> > make such things automatic, by prioritizing timers. If you have HRT
> > enabled in the .config then it should mostly be automatic already
> > though.
>
> Ah,
>
> thanks for the info. So it is a user (me) bug in the end :) This has
> helped. Actually the code i had attached had another bug in it. But
> that wasn't the responsible one.

well, it's not really your 'bug' - the priority setup isnt very
intuitive at the moment, and the goal is to automate as much of it as
possible. The way various system threads interact is highly
implementation dependent, and you shouldnt really be required to know
about softirq-timer. We'll try to simplify these things as much as
possible.

Ingo