Date: Tue, 4 Dec 2001 10:20:12 -0800 From: John Merryweather Cooper <john_m_cooper@yahoo.com> To: Luigi Rizzo <luigi@freebsd.org> Cc: net@freebsd.org Subject: Re: HEADS-UP: net polling code now in STABLE. Message-ID: <20011204102012.E701@johncoop.MSHOME> In-Reply-To: <20011203221742.A50473@iguana.aciri.org>; from luigi@freebsd.org on Mon, Dec 03, 2001 at 22:17:42 -0800 References: <20011203221742.A50473@iguana.aciri.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2001.12.03 22:17 Luigi Rizzo wrote:
> [Bcc to -stable because of relevance there]
>
> With the approval of the release engineer, a revised version of
> the network polling code is now in STABLE. It would be great if
> you could try it out and send feedback, so we con sort out issues
> (if any) before the release of 4.5.
>
> Do not be afraid to upgrade, because unless you explicitly enable
> the new code with the kernel option mentioned below, your kernel
> will not be affected by the patch.
>
> The code is only for i386 architecture, non-SMP (it would be rather
> useless on SMP boxes, anyways). Devices supported so far are "dc",
> "fxp" and "sis". I can patch more drivers if you ask, but you need
> to test the patches yourself because i do not have access to other
> 100M and 1G cards (except perhaps "xl").
> [As a side note -- there have been significant performance improvement
> changes to the "dc" and "sis" drivers recently, so if you have one
> of these two cards, it might be worthwhile to upgrade].
>
> The commit message follows. Have fun.
>
> cheers
> luigi
>
> ----- Forwarded message from Luigi Rizzo <luigi@FreeBSD.org> -----
>
> Date: Mon, 3 Dec 2001 21:57:49 -0800 (PST)
> From: Luigi Rizzo <luigi@FreeBSD.org>
> Subject: cvs commit: src/sys/conf options.i386 src/sys/i386/i386
> swtch.s
> trap.c src/sys/net if.h netisr.h src/sys/sys systm.h
> src/sys/i386/include asnames.h src/sys/kern kern_clock.c
> src/sys/dev/fxp if_fxp.c src/sys/pci if_dc.c if_dcreg.h
> if_sis.c ...
> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
>
> luigi 2001/12/03 21:57:49 PST
>
> Modified files: (Branch: RELENG_4)
> sys/conf options.i386
> sys/i386/i386 swtch.s trap.c
> sys/net if.h netisr.h
> sys/sys systm.h
> sys/i386/include asnames.h
> sys/kern kern_clock.c
> sys/dev/fxp if_fxp.c
> sys/pci if_dc.c if_dcreg.h if_sis.c if_sisreg.h
> Log:
> As approved by the Release Engineer, here comes the code for polling
> in network device drivers (x86, non-SMP only at the moment, for
> reasons that I have extensively explained on the -net mailing list).
> This code lets network devices operate in a semi-polling mode,
> which makes systems much more resilient to attacks and overloads.
>
> If you don't enable it with an appropriate kernel option, your
> kernel will be exactly the same as before this commit. No userland
> code is affected.
>
> To use polling you have to put the following options in your kernel
> config file:
>
> options DEVICE_POLLING
> options HZ=1000 # not compulsory but strongly recommended
>
> and enable it at runtime as follows (by default it is disabled):
>
> sysctl kern.polling.enable=1
>
> There are basically no other tunables related to this code,
> though you might have a look at "sysctl kern.polling" to see
> what other variables are there.
>
> The device drivers supported at the moment are "dc", "fxp" and
> "sis", with more to come (but this code only makes sense for 100M
> and Gigabit devices). Unmodified drivers will continue to operate
> as before.
>
> Under little or moderate load you should see no difference in the
> behaviour of your system. Under load, you should experience a
> moderate improvement in peak performance, and a lot more stability
> and responsiveness.
>
> A quick description of the files affected (all in sys/)
>
> conf/options.i386
> DEVICE_POLLING option
>
> i386/i386/swtch.s i386/i386/trap.c
> hooks to call the polling code
>
> net/if.h net/netisr.h sys/systm.h i386/include/asnames.h
> misc. constants and variable definitions (mostly one-liner).
>
> kern/kern_clock.c
> The bulk of the polling code. Probably this code will be
> moved to a
> separate file once equivalent functionality is added to
> -current.
>
> dev/fxp/if_fxp.c pci/if_dc.c pci/if_dcreg.h pci/if_sis.c
> pci/if_sisreg.h
> device driver modifications
>
> Reviewed-by: -net
> Approved by: jkh
>
> Revision Changes Path
> 1.132.2.9 +6 -1 src/sys/conf/options.i386
> 1.110.2.9 +56 -2 src/sys/dev/fxp/if_fxp.c
> 1.89.2.5 +5 -1 src/sys/i386/i386/swtch.s
> 1.147.2.6 +6 -1 src/sys/i386/i386/trap.c
> 1.44.2.4 +2 -1 src/sys/i386/include/asnames.h
> 1.105.2.5 +253 -1 src/sys/kern/kern_clock.c
> 1.58.2.3 +10 -1 src/sys/net/if.h
> 1.21.2.3 +2 -1 src/sys/net/netisr.h
> 1.9.2.25 +72 -0 src/sys/pci/if_dc.c
> 1.4.2.12 +7 -0 src/sys/pci/if_dcreg.h
> 1.13.4.10 +66 -0 src/sys/pci/if_sis.c
> 1.1.4.5 +3 -0 src/sys/pci/if_sisreg.h
> 1.111.2.11 +14 -0 src/sys/sys/systm.h
>
> ----- End forwarded message -----
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-stable" in the body of the message
>
I built an updated kernel after cvsuping (following your instructions)
and installed this morning. It works like a charm on my box (an AMD
Duron 700mHz on a DFI AK74-EC motherboard with 256 meg of RAM). I'm
using if_dc on a Netgear PCI NIC. I have pretty heavy fetchmail usage
(I'm a programming listserv addict) and I've notice a modest increase
in CPU idle time. Thanks!
--
jmc || MacroHard -- \
|| the perfection of form over |
----------------------------------|| substance, marketing over |
Web: http://www.borgsdemons.com || performance, and greed over |
|| design . . . |
=====================================================================/
Public Key: http://www.borgsdemons.com/Personal/pgpkey.asc |
=====================================================================\
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011204102012.E701>
