:> 
:> 
:> To get a priority inversion like this one needs at least three tasks
:> with different priorities.
:
:Ah, yes.  I stand corrected :)
:
:Thanks,
:-jj

    Right, you need three tasks, but one of them has absolutely nothing to
    do with the process holding the resource or the processing trying
    to get the resource... it simply needs to eat cpu at a priority higher
    then the process holding the resource.  So while you need three 
    processes, the situation winds up being quite common in a heavily loaded
    system and utterly trivial to reproduce.

    The reason this is a major problem in -stable instead of just a minor
    problem is due to the fact that the 'idle priority queue' is a totally
    separate queue that was hacked together and thrown into the system
    without any consideration for the consequences.  The kernel's normal
    priority raising mechanism in tsleep() fails utterly when faced with 
    a totally separate queue.

    This has been a well known problem in -stable for a long time, which
    is why I changed the 'idprio' to be a root-only command.  It's messy to
    fix in -stable which is why it hasn't been... but it -current is in much
    better shape.  In fact, for a while in -stable nice +20 and nice -20
    processes could interfere with each other in the same way even without
    using 'idprio'.  Fortunately that was fixed a few years ago.

                                                -Matt


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-stable" in the body of the message

Reply via email to