svn commit: r250911 - head/sys/kern
Adrian Chadd
adrian at freebsd.org
Wed May 22 23:55:53 UTC 2013
Odd, this reads like one of those things that's better off being
time-capped, rather than packet-count capped.
Good find, though.
Adrian
On 22 May 2013 09:32, Luigi Rizzo <luigi at freebsd.org> wrote:
> Author: luigi
> Date: Wed May 22 16:32:18 2013
> New Revision: 250911
> URL: http://svnweb.freebsd.org/changeset/base/250911
>
> Log:
> Increase the (arbitrary) limit for the number of packets per tick
> from 1k to 20k The previous value was good 10 years ago, but not
> anymore now.
>
> More importantly, lots of good surprises:
> polling is incredibly effective under virtualization, and not only
> prevents livelock but also saves most of the VM exit overhead in
> receive mode.
>
> Using polling, a FreeBSD instance under qemu-kvm remains perfectly
> responsive even when bombed with 10 Mpps over an emulated e1000,
> and happily processes 1.7 Mpps through ipfw.
>
> Note that some incompatibilities still remain: e.g. polling is not
> (yet) compatible with netmap, and seems to freeze the guest when
> kern.polling.idle_poll=1
>
> MFC after: 3 days
>
> Modified:
> head/sys/kern/kern_poll.c
>
> Modified: head/sys/kern/kern_poll.c
> ==============================================================================
> --- head/sys/kern/kern_poll.c Wed May 22 15:15:05 2013 (r250910)
> +++ head/sys/kern/kern_poll.c Wed May 22 16:32:18 2013 (r250911)
> @@ -87,12 +87,11 @@ static struct mtx poll_mtx;
> * The following constraints hold
> *
> * 1 <= poll_each_burst <= poll_burst <= poll_burst_max
> - * 0 <= poll_each_burst
> * MIN_POLL_BURST_MAX <= poll_burst_max <= MAX_POLL_BURST_MAX
> */
>
> #define MIN_POLL_BURST_MAX 10
> -#define MAX_POLL_BURST_MAX 1000
> +#define MAX_POLL_BURST_MAX 20000
>
> static uint32_t poll_burst = 5;
> static uint32_t poll_burst_max = 150; /* good for 100Mbit net and HZ=1000 */
More information about the svn-src-all
mailing list