Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 May 2014 21:43:38 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>, FreeBSD Net <freebsd-net@freebsd.org>
Subject:   [rfc] tcp timer update for RSS
Message-ID:  <CAJ-VmomjQ_VBUq7KtJwYRRvoy1HXByQxRwFHp%2BOsR6VLmPi0OQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

here's a completely untested patch for discussion. I'm emailing it out
mostly as a "is this a good idea" patch rather than a "it should just
be committed" patch.

The RSS stuff from Robert maps connections to pcbgroups based on the
RSS hash, but it doesn't map the TCP timers the same way. So by
default they're all on swi0 and the per CPU timers don't take the hash
type or correctly choose the CPU.

This patch:

http://people.freebsd.org/~adrian/norse/20140514-tcp-rss-timers-1.diff

does a few things:

* it stores the hashtype in the inp as well as the flowid;
* the rss code grows a new method that maps the flowid/hashtype to a cpuid
* .. and the existing mbuf to cpuid method now uses this;
* the tcp timer code now has an inline function that knows about RSS
and defaults to the existing way of doing things if RSS isn't enabled.

There's still a bunch of work left before all the lock contention
compartmentalization and balancing of RSS is realised. I'm just
chewing off the little corner bits that are easy to get done now.

So, any comments? I'll give it a proper whirl on some 10G hardware in
a few days but I thought I'd at least get the general idea out there
for comment.

Thanks,




-a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmomjQ_VBUq7KtJwYRRvoy1HXByQxRwFHp%2BOsR6VLmPi0OQ>