ULE/sched issues on stable/9 - why isn't preemption occuring?

John Baldwin jhb at freebsd.org
Wed May 30 15:58:16 UTC 2012


On Tuesday, May 29, 2012 4:08:23 pm Adrian Chadd wrote:
> Hi Alexander and others,
> 
> I've been tinkering with ath(4) IO scheduling and taskqueues. In order
> to get proper "in order" TX IO occuring, I've placed ath_start() into
> a taskqueue so now whenever ath_start() is called, it just schedules a
> taskqueue entry to run.
> 
> However, performance is worse. :-)
> 
> Here's a schedgraph trace.
> 
> http://people.freebsd.org/~adrian/ath/ktr.4-ath-iperf-using-taskqueue-for-
tx.ktr.gz
> 
> I've thrown this through schedgraph.py on stable/9 and I've found some
> rather annoying behaviour. It seems that the ath0 taskqueue stays in
> the "runq add" state for quite a long time (1.5ms and longer) because
> something else is going on on CPU #0.
> 
> I'm very confused about what's going on. I'd like a hand trying to
> figure out why the schedgraph output is the way it is.
> 
> Thanks!

As mentioned on IRC, you need to disable powerd and set machdep.idle=spin
and get new traces.  Right now your traces show multiple things executing
on a single CPU.

-- 
John Baldwin


More information about the freebsd-hackers mailing list