Re: [Pv-drivers] rps and pvdrivers

Eric Dumazet
2010-09-04T14:31:11Z

Le samedi 04 septembre 2010 à 10:02 -0400, Chetan Loke a écrit :
> On Sat, Sep 4, 2010 at 9:51 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> >
> > If packets have same rxhash, (same src IP, dst IP, src port, dst port),
> > they are directed on a single CPU, and this might explain you cannot
> > handle the load, RPS or not.
>
> I tried incrementing the src-macs from the load-generator. Or only the
> above 4-tuple entries are used?
>

MAC addresses are not used to compute rxhash

>
> >
> > cat /proc/net/softnet_stat
> >
>
> cat /proc/net/softnet_stat
> 0655cb87 006dd31b 00096a78 00000000 00000000 00000000 00000000
> 00000000 00000000 00000dbe
> 0042feec 00000000 0008ae33 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
>
> cat /proc/net/softnet_stat
> 065d444e 006e669d 00097565 00000000 00000000 00000000 00000000
> 00000000 00000000 00000dbe
> 0042ff8c 00000000 0008b83f 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
>
> cat /proc/net/softnet_stat
> 066a6fcf 006fefd9 000988c9 00000000 00000000 00000000 00000000
> 00000000 00000000 00000dbe
> 004300bd 00000000 0008c945 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
>
>
>
> > RPS is good to handle multiple flows, because it can distribute load on
> > several cpus. But with a single flow, I guess it might be not that
> > useful.
>
> For single flow if it doesn't improve performance that's fine. But it
> should atleast work as good as N-2(2.6.33).
>

Nope. Because if each packet goes through two cpus instead of one before
being queued to socket queue, you pay overhead and memory trafic between
these cpus.

This is the reason why RPS is not automatically switched on. It might be
slower on some workloads.

For UDP trafic, single flow, RPS is not a win, because UDP stack is
quite small.