Thread (1 message) 1 message, 1 author, 2014-11-15

Re: [PATCH net-next] net: introduce SO_INCOMING_CPU

From: Tom Herbert <hidden>
Date: 2014-11-15 00:15:21
Also in: linux-api

On Fri, Nov 14, 2014 at 2:18 PM, Andy Lutomirski [off-list ref] wrote:
On Fri, Nov 14, 2014 at 2:16 PM, Eric Dumazet [off-list ref] wrote:
quoted
On Fri, 2014-11-14 at 12:16 -0800, Andy Lutomirski wrote:
quoted
Sure, but how do I know that it'll be the same CPU next time?
Because the NIC always use same RX queue for a given flow.

So if you setup your IRQ affinities properly, the same CPU will drain
packets from this RX queue. And since RFS is off, you have the guarantee
the same CPU will be used to process packets in TCP stack.
Right.  My concern is that if RFS is off, everything works fine, but
if RFS is on (and the app has no good way to know), then silly results
will happen.  I think I'd rather have the getsockopt fail if RFS is on
or at least give some indication so that the app can react
accordingly.
As I mentioned, there is no material functionality in this patch and
it should be independent of RFS. It simply returns the CPU where the
stack processed the packet. Whether or not this is meaningful
information to the algorithm being implemented in userspace is
completely up to the caller to decide.

Tom
--Andy
quoted
This SO_INCOMING_CPU info is a hint, there is no guarantee eg if you use
bonding and some load balancer or switch decides to send packets on
different links.

Most NIC use Toeplitz hash, so given the 4-tuple, and rss key (40
bytes), you can actually compute the hash in software and know on which
RX queue traffic should land.


--
Andy Lutomirski
AMA Capital Management, LLC
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help