Date: Sun, 24 Dec 2006 00:31:28 -0500 From: Scott Long <scottl@samsco.org> To: Bruce Evans <bde@zeta.org.au> Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, Robert Watson <rwatson@FreeBSD.org>, cvs-all@FreeBSD.org, John Polstra <jdp@polstra.com> Subject: Re: cvs commit: src/sys/dev/bge if_bge.c Message-ID: <458E10B0.5030506@samsco.org> In-Reply-To: <20061224120307.P24444@delplex.bde.org> References: <XFMail.20061223102713.jdp@polstra.com> <20061223213014.U35809@fledge.watson.org> <20061224120307.P24444@delplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?458E10B0.5030506>