cvs commit: src/sys/dev/bge if_bge.c

Scott Long scottl at samsco.org
Sat Dec 23 21:51:33 PST 2006


Bruce Evans wrote:
> On Sat, 23 Dec 2006, Robert Watson wrote:
> 
>> On Sat, 23 Dec 2006, John Polstra wrote:
>>
>>>> That said, dropping and regrabbing the driver lock in the rxeof 
>>>> routine of any driver is bad.  It may be safe to do, but it incurs 
>>>> horrible performance penalties.  It essentially allows the 
>>>> time-critical, high priority RX path to be constantly preempted by 
>>>> the lower priority if_start or if_ioctl paths.  Even without this 
>>>> preemption and priority inversion, you're doing an excessive number 
>>>> of expensive lock ops in the fast path.
> 
> It's not very time-critical or high priority for bge or any other device
> that has a reasonably large rx ring.  With a ring size of 512 and an rx
> interrupt occuring not too near the end (say at half way), you have 256
> packet times to finish processing the interrupt.  For normal 1518 byte
> packets at 1Gbps, 256 packet times is about 3 mS.  bge's rx ring size
> is actually larger than 512 for most hardware.
> 

Speed testing full size packets doesn't tax the hardware or the OS, nor
does it represent real world scenarios.  Testing minimum sized packets
isn't terribly real-world either, but it represents the worst-case for
the hardware and the OS and thus is a good standard for extrapolating
performance potential.  And, 1Gb isn't terribly interesting these days
either, 10Gb is.

Scott


More information about the cvs-src mailing list