I'm using stock 7.2. The priorities as defined in priority.h are in this range:

/*
 * Priorities range from 0 to 255, but differences of less then 4 (RQ_PPQ)
 * are insignificant.  Ranges are as follows:
 *
 * Interrupt threads:           0 - 63
 * Top half kernel threads:     64 - 127
 * Realtime user threads:       128 - 159
 * Time sharing user threads:   160 - 223
 * Idle user threads:           224 - 255
 *
 * XXX If/When the specific interrupt thread and top half thread ranges
 * disappear, a larger range can be used for user processes.
 */

The trouble is with vm_waitpfault(), which explicitly sleeps at PUSER.


Sushanth

--- On Mon, 4/9/12, John Baldwin <j...@freebsd.org> wrote:

> From: John Baldwin <j...@freebsd.org>
> Subject: Re: Startvation of realtime piority threads
> To: "Sushanth Rai" <sushanth_...@yahoo.com>
> Cc: freebsd-hackers@freebsd.org
> Date: Monday, April 9, 2012, 11:37 AM
> On Monday, April 09, 2012 2:08:50 pm
> Sushanth Rai wrote:
> > I'm on 7.2. sched_sleep() on 7.2 just records the sleep
> time. That's why I 
> though _sleep might the right place to do the check.
> 
> Nah, sched_sleep() is more accurate since the sleep priority
> can have other 
> side effects.
> 
> Hmm, in stock 7.2, the rtprio range is below things like
> PVM, etc., so that
> shouldn't actually be buggy in that regard.  I fixed
> this in 9.0 and HEAD
> when I moved the rtprio range up above the kernel sleep
> priorities.  Are
> you using local patches to 7.2 to raise the priority of
> rtprio threads?
> 
> > Thanks,
> > Sushanth
> > 
> > --- On Mon, 4/9/12, John Baldwin <j...@freebsd.org>
> wrote:
> > 
> > > From: John Baldwin <j...@freebsd.org>
> > > Subject: Re: Startvation of realtime piority
> threads
> > > To: "Sushanth Rai" <sushanth_...@yahoo.com>
> > > Cc: freebsd-hackers@freebsd.org
> > > Date: Monday, April 9, 2012, 9:17 AM
> > > On Thursday, April 05, 2012 9:08:24
> > > pm Sushanth Rai wrote:
> > > > I understand the downside of badly written
> realtime
> > > app.  In my case 
> > > application runs in userspace without making much
> syscalls
> > > and by all means it 
> > > is a well behaved application. Yes, I can wire
> memory,
> > > change the application 
> > > to use mutex instead of spinlock and those changes
> should
> > > help but they are 
> > > still working around the problem. I still believe
> kernel
> > > should not lower the 
> > > realtime priority when blocking on resources. This
> can lead
> > > to priority 
> > > inversion, especially since these threads run at
> fixed
> > > priorities and kernel 
> > > doesn't muck with them.
> > > >  
> > > > As you suggested _sleep() should not adjust
> the
> > > priorities for realtime 
> > > threads. 
> > > 
> > > Hmm, sched_sleep() for both SCHED_4BSD and
> SCHED_ULE already
> > > does the right
> > > thing here in HEAD.
> > > 
> > >     if
> (PRI_BASE(td->td_pri_class) !=
> > > PRI_TIMESHARE)
> > >         return;
> > > 
> > > Which OS version did you see this on?
> > > 
> > > -- 
> > > John Baldwin
> > > 
> > 
> 
> -- 
> John Baldwin
>
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to