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