[Trac #905] The libertas driver causes a 33% slowdown.
Zarro Boogs per Child
bugtracker at laptop.org
Tue Mar 6 17:30:33 EST 2007
#905: The libertas driver causes a 33% slowdown.
----------------------------------+-----------------------------------------
Reporter: cjb | Owner: marcelo
Type: defect | Status: new
Priority: blocker | Milestone: BTest-3
Component: kernel | Resolution:
Keywords: relnote, performance |
----------------------------------+-----------------------------------------
Comment (by wmb at firmworks.com):
Here is a summary of the problem details:
a) The GX chip has a bug whereby DMA to cached memory intermittently
causes instruction execution errors - the branch target cache sometimes
yields incorrect results when a cache snoop happens at just the wrong
time.
b) The standard workaround for that bug is to use some special diagnostic
features to force a 4-cycle CPU stall on a DMA-induced cache snoop.
c) Under most system loads, the performance degradation of that workaround
is between 1% and 4% - usually an acceptable amount.
d) USB network interfaces require repetitive polling at the USB
transaction level in order to accept incoming packets with low latency.
This is just the way that USB works. The polling is done automatically by
the USB host interface hardware, without CPU intervention. However, that
polling results in repetitive DMA accesses to a descriptor, at short
intervals (a few microseconds or less).
e) This repetitive DMA to a single location is a worst case for the branch
cache interaction, resulting in >30% slowdown of other code executing on
the CPU.
f) Turning off the workaround (b) risks random application and kernel
crashes, so that option is not attractive.
g) We have verified that, if the USB descriptor is in uncached memory, the
slowdown does not occur.
--
Ticket URL: <http://dev.laptop.org/ticket/905#comment:5>
One Laptop Per Child <http://laptop.org/>
More information about the Bugs
mailing list