From: Eric Dumazet <eric.dumazet@gmail.com>
To: Tom Herbert <therbert@google.com>
Cc: David Miller <davem@davemloft.net>, netdev@vger.kernel.org
Subject: Re: [PATCH v5] rfs: Receive Flow Steering
Date: Sat, 17 Apr 2010 18:10:33 +0200 [thread overview]
Message-ID: <1271520633.16881.4754.camel@edumazet-laptop> (raw)
In-Reply-To: <1271452358.16881.4486.camel@edumazet-laptop>
Le vendredi 16 avril 2010 à 23:12 +0200, Eric Dumazet a écrit :
> Le vendredi 16 avril 2010 à 13:42 -0700, Tom Herbert a écrit :
> > On Fri, Apr 16, 2010 at 11:53 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > > Le vendredi 16 avril 2010 à 11:35 -0700, Tom Herbert a écrit :
> > >> Results with "tbench 16" on an 8 core Intel machine.
> > >>
> > >> No RPS/RFS: 2155 MB/sec
> > >> RPS (0ff mask): 1700 MB/sec
> > >> RFS: 1097
> > >>
> >
> > Blah, I mistakingly reported that... should have been:
> >
> > No RPS/RFS: 2155 MB/sec
> > RPS (0ff mask): 1097 MB/sec
> > RFS: 1700 MB/sec
> >
> > Sorry about that!
>
> > This was my expectation too, and what my "corrected" numbers show :-)
> > But, I take it this is different in your results?
>
>
> My results are on a "tbench 16" on an dual X5570 @ 2.93GHz.
> (16 logical cpus)
>
> No RPS , no RFS : 4448.14 MB/sec
> RPS : 2298.00 MB/sec (but lot of variation)
> RFS : 2600 MB/sec
>
> Maybe my RFS setup is bad ?
> (8192 flows)
>
With attached patch, I reached
Throughput 4465.13 MB/sec 16 procs
RFS better than no RPS/RFS :)
So, the old idea to make rxhash consistent (same value in both
directions) is a win for some workloads (Consider connection tracking /
firewalling)
port1 = ...
port2 = ...
addr1 = ...
addr2 = ...
if (addr1 > addr2)
exchange(addr1, addr2)
if (port1 > port2)
exchange(port, port2)
hash = jhash(addr1, addr2, (port1<<16)+port2, ...)
diff --git a/net/core/dev.c b/net/core/dev.c
index 7abf959..6b757ff 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2280,8 +2280,10 @@ static int get_rps_cpu(struct net_device *dev,
struct sk_buff *skb,
case IPPROTO_AH:
case IPPROTO_SCTP:
case IPPROTO_UDPLITE:
- if (pskb_may_pull(skb, (ihl * 4) + 4))
- ports = *((u32 *) (skb->data + (ihl * 4)));
+ if (pskb_may_pull(skb, (ihl * 4) + 4)) {
+ u16 *_ports = (u16 *)(skb->data + (ihl * 4));
+ ports = _ports[0] ^ _ports[1];
+ }
break;
default:
next prev parent reply other threads:[~2010-04-17 16:10 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-16 5:47 [PATCH v5] rfs: Receive Flow Steering Tom Herbert
2010-04-16 6:33 ` David Miller
2010-04-16 6:56 ` Eric Dumazet
2010-04-16 7:18 ` Eric Dumazet
2010-04-16 7:26 ` David Miller
2010-04-16 7:48 ` Eric Dumazet
2010-04-17 7:52 ` [PATCH net-next-2.6] rps: rps_sock_flow_table is mostly read Eric Dumazet
2010-04-17 7:57 ` David Miller
2010-04-16 15:35 ` [PATCH v5] rfs: Receive Flow Steering Tom Herbert
2010-04-16 18:15 ` Eric Dumazet
2010-04-16 18:35 ` Tom Herbert
2010-04-16 18:53 ` Eric Dumazet
2010-04-16 20:42 ` Tom Herbert
2010-04-16 21:12 ` Eric Dumazet
2010-04-16 21:25 ` Eric Dumazet
2010-04-17 16:10 ` Eric Dumazet [this message]
2010-04-17 17:38 ` Tom Herbert
2010-04-18 0:06 ` Changli Gao
2010-04-18 11:06 ` Franco Fichtner
2010-04-19 20:09 ` David Miller
2010-04-19 20:23 ` David Miller
2010-04-19 20:32 ` Eric Dumazet
2010-04-19 21:19 ` David Miller
2010-04-26 8:41 ` Eric Dumazet
2010-04-27 21:59 ` David Miller
2010-04-27 22:08 ` Eric Dumazet
2010-04-27 22:10 ` David Miller
2010-04-19 23:38 ` Changli Gao
2010-04-20 5:59 ` Eric Dumazet
2010-04-20 7:56 ` [PATCH net-next-2.6] rps: consistent rxhash Eric Dumazet
2010-04-20 8:18 ` David Miller
2010-04-20 12:48 ` Franco Fichtner
2010-04-20 13:16 ` Eric Dumazet
2010-04-20 14:03 ` Franco Fichtner
2010-04-20 14:57 ` Eric Dumazet
2010-04-20 21:41 ` David Miller
2010-04-20 23:35 ` Changli Gao
2010-04-20 23:38 ` David Miller
2010-04-21 19:12 ` Tom Herbert
2010-04-23 20:44 ` David Miller
2010-05-06 8:06 ` David Miller
2010-05-06 14:45 ` Tom Herbert
2010-04-20 15:09 ` Tom Herbert
2010-04-21 9:29 ` Franco Fichtner
2010-04-21 9:39 ` Eric Dumazet
2010-04-21 11:06 ` Franco Fichtner
2010-04-21 11:16 ` Eric Dumazet
2010-04-20 15:04 ` [PATCH v5] rfs: Receive Flow Steering Tom Herbert
2010-04-20 15:39 ` Eric Dumazet
2010-04-16 19:37 ` Eric Dumazet
2010-04-16 22:49 ` David Miller
2010-04-16 22:53 ` David Miller
2010-04-16 22:57 ` David Miller
2010-04-17 0:22 ` Tom Herbert
2010-04-17 0:58 ` David Miller
2010-04-16 11:57 ` Andi Kleen
2010-04-16 13:32 ` jamal
2010-04-16 13:42 ` Andi Kleen
2010-04-16 14:05 ` jamal
2010-04-16 15:28 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1271520633.16881.4754.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=therbert@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox