Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Sep 2012 00:08:00 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Eugene Grosbein <egrosbein@rdtc.ru>
Cc:        pyunyh@gmail.com, freebsd-net@freebsd.org, Lev Serebryakov <lev@freebsd.org>, Ian Smith <smithi@nimnet.asn.au>
Subject:   Re: Bad routing performance on 500Mhz Geode LX with CURRENT, ipfw and mpd5
Message-ID:  <CAJ-VmokR3YvKUQxCVef_tqYoXtw01T9gO=eLxa4Lq27=owDiCA@mail.gmail.com>
In-Reply-To: <5040E749.9070200@rdtc.ru>
References:  <1865271844.20120829131610@serebryakov.spb.ru> <CAHu1Y70MynCMQTrJUMwTZ0%2BLrM1JiZFt_B77028XHfoiRgzmaA@mail.gmail.com> <1807373989.20120829223125@serebryakov.spb.ru> <20120830152726.A33776@sola.nimnet.asn.au> <534292400.20120830131158@serebryakov.spb.ru> <20120831180721.GB3208@michelle.cdnetworks.com> <50404957.302@rdtc.ru> <5040508D.9080107@rdtc.ru> <CAJ-VmomzY1TFjwPdZWGStb9wBZ1RZrk3QZnJMGkxvftWGKPCHQ@mail.gmail.com> <5040DE1D.7040700@rdtc.ru> <5040E749.9070200@rdtc.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
I'm so sorry for dropping off the radar here.

Can you please compile your kernel with KTR enabled so we can capture
some schedgraph traces?

I'd like to let the scheduler people see what's going on.

I bet it's something like preemption is allowing the taskqueues to
preempt each other (which they shouldn't, not when they're at the same
level) when an interrupt occurs that calls taskqueue_enqueue().

On a non-preempt kernel it'll just jump back to running the same
thread until yield or tick; on a preempt kernel a driver taskqueue
could be preempted by another driver.

(Holy crap, this is one situation where maybe the linux spinlock_bh()
semantics make sense. If used correctly. Yikes.)



Adrian

On 31 August 2012 09:33, Eugene Grosbein <egrosbein@rdtc.ru> wrote:
> 31.08.2012 22:54, Eugene Grosbein =D0=C9=DB=C5=D4:
>
>> I've rebuilt by kernel with SCHED_ULE and excluded PREEMPTION.
>> Stock driver works without changes in behaviour and driver from HEAD
>> now works very similar to old one: LA is not higher than 2 and
>> userland is pretty responsive. Also, transfer speed with new driver is
>> several percent more. That's good.
>>
>> Care to explain such dramatic difference for new driver
>> with/without PREEMPTION for relatively slow uniprocessor system?
>>
>>> And run 4BSD + no preemption, try again?
>
> I've tried 4BSD without preemption too. Can't see any difference
> from ULE without preemption. Should I stick with 4BSD for UP system?
>
> Eugene Grosbein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokR3YvKUQxCVef_tqYoXtw01T9gO=eLxa4Lq27=owDiCA>