[linux-audio-dev] Help on threads needed

Dave Griffiths dave at pawfal.org
Mon Nov 4 12:32:00 UTC 2002


> in the SCHED_OTHER class, its not possible to override the "fair
> scheduling" characteristics of the kernel scheduler. you can 
> certainly use nice to adjust the relative priorities of the threads 
> (well, actually, sched_setparam()) and this will alter the way the threads
> are scheduled. but the scheduler takes elapsed cycles into account,
> and sooner or later may choose to run a thread will lower priority
> than another runnable thread just because the latter one has been
> hogging CPU cycles. there is no way around this theoretical
> possibility, because its an intentional design. its also why SCHED_RR
> and SCHED_FIFO exist, because these scheduling classes are not 
> covered by that rule. if a SCHED_FIFO thread can run, and there are 
> no SCHED_FIFO threads ready to run with higher priority, then that thread
> runs, regardless of whether it uses 99% or 1% of available CPU time.
> 
> try "man sched_setscheduler" for a decent overview of this.

aha, that is exactly the man page I needed, but failed to find.

> >2. What is the correct setup for SHED_FIFO? What priorities should I run the
> >audio and GUI threads at, and should the GUI thread use SHED_FIFO too?
> 
> the audio thread should run at (at most) (sched_get_priority_max() -
> 1) to allow for any watchdog system to run. it may be wise to add a
> watchdog thread that runs at sched_get_priority_max() and wakes up
> every 5 seconds or so to check that progress is still being made. 
> JACK includes such a thread, for example. this prevents endless 
> loops in a SCHED_FIFO code from taking complete control of a single CPU
> system. it would be nice if there was a way to do this outside the
> application (i.e. a system wide check), but i don't see anyway to do
> this. 

I think I'll do this, it will speed up the development to quite a degree :)
 
> IMHO, the GUI thread should not run SCHED_FIFO - nothing is really
> served by this.

Ok, thats what I thought. Its just that I'm getting strange behaviour when
running SHED_FIFO, and wondered if it was due to the GUI thread never being
run. Probably more to do with the fact I was trying random priorities...

Many thanks,

dave



More information about the Linux-audio-dev mailing list