This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Thread activation disturbed by lower priority threads]


On Fri, Aug 17, 2007 at 09:28:49AM +0200, Alois Z. wrote:
> Hi,
> > 
> > How many mutex's does your lower priority thread hold? From
> > packages/kernel/current/src/sched/sched.cxx
> > 
> > void Cyg_SchedThread::clear_inherited_priority()
> > {
> >     CYG_REPORT_FUNCTION();
> > 
> > #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_SIMPLE
> > 
> >     // A simple implementation of priority inheritance/ceiling
> >     // protocols.  The simplification in this algorithm is that we do
> >     // not reduce our priority until we have freed all mutexes
> >     // claimed. Hence we can continue to run at an artificially high
> >     // priority even when we should not.  However, since nested
> >     // mutexes are rare, the thread we have inherited from is likely
> >     // to be locking the same mutexes we are, and mutex claim periods
> >     // should be very short, the performance difference between this
> >     // and a more complex algorithm should be negligible. The most
> >     // important advantage of this algorithm is that it is fast and
> >     // deterministic.
> > 
> > Does this explain what you see?
> >     

> I should have always only one mutex claimed per thread. And always
> only for a very short period. What if several threads waiting for
> one mutex with priorities from 2 to 6 

The queue of threads waiting for the mutex can either be in FIFO
order, or sorted into decreasing priority order. FIFO is fast where as
sorting the queue takes more time. I think the default is FIFO. Take a
look at CYGIMP_KERNEL_SCHED_SORTED_QUEUES.

> and the tread with priority 7 is holding the mutex. First of all
> will there be a reschedule after the mutex is realeased?

Yes, as soon as the higher priority thread is runnable, and the
scheduler is unlocked, there will be a context switch to the higher
priority thread.

          Andrew

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]