Realtime thread priorities

John Baldwin jhb at freebsd.org
Fri Dec 17 14:44:29 UTC 2010


On Friday, December 17, 2010 9:06:12 am David Xu wrote:
> John Baldwin wrote:
> > Yes, we do not do priority lending for sleep locks, and to date we never
> > have.  This is not a new problem and moving RT priority higher is not
> > introducing any _new_ problems.  However, it does bring _new_ functionality
> > that some people need.  Just because you don't need it doesn't mean it isn't
> > important.
> >
> > Don't let the perfect be the enemy of the good.
> >
> >   
> I guess that your real requirement is preempting at user boundary
> for static priority thread, however current code does not. I doubt that
> preempting in kernel path which holding an unknown lock has any
> visible benefit for your application. Yes, perfect is not the enemy but
> the goal, isn't mutex with priority propagating for perfect ?

Actually, in my case what I need is for some other process that holds a lock
in the kernel that I need to run as soon as possible.  I would be fine with
preempting a different thread in the kernel so the thread holding the lock I
need can run.  It is true that in my case I don't really care about the
priority of my thread since it runs on a dedicated CPU.  What I really care
about is the priority it lends to other threads.  I need that to be higher
than just about everything else.

In my case I could even benefit from priority_propagation() sending an IPI
to a remote CPU so the thread I just lent priority to can run, but that is
somewhat unique due to my use of cpusets.  Without a restricted cpuset you
wouldn't need that since the running thread is about to block and will run
the lock holder as the next thread if needed.

-- 
John Baldwin


More information about the freebsd-arch mailing list