* K.R. Foley <kr@xxxxxxxxxx> wrote:Understood. BTW, I wouldn't consider some possible starvation of lower priority, non-realtime tasks to be incorrect behavior for a realtime system. The comments in the above email as well as previous emails were not intended as complaints or questions of correctness. They were more just thoughts generated while thinking about some of the reports of non-realtime tasks being starved.
OK dumb question. I am going out to get my own personal brown paper
bag, since I seem to be wearing it so often. I forgot tasks get
removed from the runqueue when they are sleeping, etc. so the active
array should empty most of the time. However, with more RT tasks and
interactive tasks being thrown back into the active queue I could see
this POSSIBLY occasionally starving a few processes???
interactive tasks do get thrown back, but they wont ever preempt RT
tasks. RT tasks themselves can starve any lower-prio process
indefinitely. Interactive tasks can starve other tasks up to a certain
limit, which is defined via STARVATION_LIMIT, at which point we empty
the active array and perform an array switch. (also see
EXPIRED_STARVING())
Ingo