mbox series

[ovs-dev,v6,0/1] Balance-tcp bond mode optimization

Message ID 1568108770-7918-1-git-send-email-vishal.deep.ajmera@ericsson.com
Headers show
Series Balance-tcp bond mode optimization | expand

Message

Li,Rongqing via dev Sept. 10, 2019, 9:46 a.m. UTC
v5->v6:
 Addressed comments from Ilya Maximets.
 https://mail.openvswitch.org/pipermail/ovs-dev/2019-August/362001.html
 Rebased to OVS master.

v4->v5:
 Support for stats per hash bucket.
 Support for dynamic load balancing.
 Rebased to OVS Master.

v3->v4:
 Addressed Ilya Maximets comments.
 https://mail.openvswitch.org/pipermail/ovs-dev/2019-July/360452.html

v2->v3:
 Rebased to OVS master.
 Fixed git merge issue.

v1->v2:
 Updated datapath action to hash + lb-output.
 Updated throughput test observations.
 Rebased to OVS master.

Vishal Deep Ajmera (1):
  Avoid dp_hash recirculation for balance-tcp bond selection mode

 datapath/linux/compat/include/linux/openvswitch.h |   2 +
 lib/dpif-netdev.c                                 | 515 ++++++++++++++++++++--
 lib/dpif-netlink.c                                |   3 +
 lib/dpif-provider.h                               |   8 +
 lib/dpif.c                                        |  48 ++
 lib/dpif.h                                        |   7 +
 lib/odp-execute.c                                 |   2 +
 lib/odp-util.c                                    |   4 +
 ofproto/bond.c                                    |  52 ++-
 ofproto/bond.h                                    |   9 +
 ofproto/ofproto-dpif-ipfix.c                      |   1 +
 ofproto/ofproto-dpif-sflow.c                      |   1 +
 ofproto/ofproto-dpif-xlate.c                      |  39 +-
 ofproto/ofproto-dpif.c                            |  32 ++
 ofproto/ofproto-dpif.h                            |  12 +-
 tests/lacp.at                                     |   9 +
 vswitchd/bridge.c                                 |   4 +
 vswitchd/vswitch.xml                              |  10 +
 18 files changed, 698 insertions(+), 60 deletions(-)

Comments

Matteo Croce Sept. 11, 2019, 6:37 p.m. UTC | #1
On Tue, Sep 10, 2019 at 11:53 AM Vishal Deep Ajmera
<vishal.deep.ajmera@ericsson.com> wrote:
>
> v5->v6:
>  Addressed comments from Ilya Maximets.
>  https://mail.openvswitch.org/pipermail/ovs-dev/2019-August/362001.html
>  Rebased to OVS master.
>
> v4->v5:
>  Support for stats per hash bucket.
>  Support for dynamic load balancing.
>  Rebased to OVS Master.
>
> v3->v4:
>  Addressed Ilya Maximets comments.
>  https://mail.openvswitch.org/pipermail/ovs-dev/2019-July/360452.html
>
> v2->v3:
>  Rebased to OVS master.
>  Fixed git merge issue.
>
> v1->v2:
>  Updated datapath action to hash + lb-output.
>  Updated throughput test observations.
>  Rebased to OVS master.
>
> Vishal Deep Ajmera (1):
>   Avoid dp_hash recirculation for balance-tcp bond selection mode
>
>  datapath/linux/compat/include/linux/openvswitch.h |   2 +
>  lib/dpif-netdev.c                                 | 515 ++++++++++++++++++++--
>  lib/dpif-netlink.c                                |   3 +
>  lib/dpif-provider.h                               |   8 +
>  lib/dpif.c                                        |  48 ++
>  lib/dpif.h                                        |   7 +
>  lib/odp-execute.c                                 |   2 +
>  lib/odp-util.c                                    |   4 +
>  ofproto/bond.c                                    |  52 ++-
>  ofproto/bond.h                                    |   9 +
>  ofproto/ofproto-dpif-ipfix.c                      |   1 +
>  ofproto/ofproto-dpif-sflow.c                      |   1 +
>  ofproto/ofproto-dpif-xlate.c                      |  39 +-
>  ofproto/ofproto-dpif.c                            |  32 ++
>  ofproto/ofproto-dpif.h                            |  12 +-
>  tests/lacp.at                                     |   9 +
>  vswitchd/bridge.c                                 |   4 +
>  vswitchd/vswitch.xml                              |  10 +
>  18 files changed, 698 insertions(+), 60 deletions(-)
>
> --
> 1.9.1
>

Hi,

I confirm a decent performance improvement with DPDK and balance-tcp bonding:

lb-output-action=false

rx: 740 Mbps 1446 kpps

lb-output-action=true

rx: 860 Mbps 1680 kpps

I'm running a very simple test with a tweaked version of testpmd which
generates 256 L4 flows, I guess that with much flows the improvement
is way higher.

Tested-by: Matteo Croce <mcroce@redhat.com>

--
Matteo Croce
per aspera ad upstream
Matteo Croce Sept. 13, 2019, 1:20 p.m. UTC | #2
On Wed, Sep 11, 2019 at 8:37 PM Matteo Croce <mcroce@redhat.com> wrote:
>
> On Tue, Sep 10, 2019 at 11:53 AM Vishal Deep Ajmera
> <vishal.deep.ajmera@ericsson.com> wrote:
> >
> > v5->v6:
> >  Addressed comments from Ilya Maximets.
> >  https://mail.openvswitch.org/pipermail/ovs-dev/2019-August/362001.html
> >  Rebased to OVS master.
> >
> > v4->v5:
> >  Support for stats per hash bucket.
> >  Support for dynamic load balancing.
> >  Rebased to OVS Master.
> >
> > v3->v4:
> >  Addressed Ilya Maximets comments.
> >  https://mail.openvswitch.org/pipermail/ovs-dev/2019-July/360452.html
> >
> > v2->v3:
> >  Rebased to OVS master.
> >  Fixed git merge issue.
> >
> > v1->v2:
> >  Updated datapath action to hash + lb-output.
> >  Updated throughput test observations.
> >  Rebased to OVS master.
> >
> > Vishal Deep Ajmera (1):
> >   Avoid dp_hash recirculation for balance-tcp bond selection mode
> >
> >  datapath/linux/compat/include/linux/openvswitch.h |   2 +
> >  lib/dpif-netdev.c                                 | 515 ++++++++++++++++++++--
> >  lib/dpif-netlink.c                                |   3 +
> >  lib/dpif-provider.h                               |   8 +
> >  lib/dpif.c                                        |  48 ++
> >  lib/dpif.h                                        |   7 +
> >  lib/odp-execute.c                                 |   2 +
> >  lib/odp-util.c                                    |   4 +
> >  ofproto/bond.c                                    |  52 ++-
> >  ofproto/bond.h                                    |   9 +
> >  ofproto/ofproto-dpif-ipfix.c                      |   1 +
> >  ofproto/ofproto-dpif-sflow.c                      |   1 +
> >  ofproto/ofproto-dpif-xlate.c                      |  39 +-
> >  ofproto/ofproto-dpif.c                            |  32 ++
> >  ofproto/ofproto-dpif.h                            |  12 +-
> >  tests/lacp.at                                     |   9 +
> >  vswitchd/bridge.c                                 |   4 +
> >  vswitchd/vswitch.xml                              |  10 +
> >  18 files changed, 698 insertions(+), 60 deletions(-)
> >
> > --
> > 1.9.1
> >
>
> Hi,
>
> I confirm a decent performance improvement with DPDK and balance-tcp bonding:
>
> lb-output-action=false
>
> rx: 740 Mbps 1446 kpps
>
> lb-output-action=true
>
> rx: 860 Mbps 1680 kpps
>
> I'm running a very simple test with a tweaked version of testpmd which
> generates 256 L4 flows, I guess that with much flows the improvement
> is way higher.
>
> Tested-by: Matteo Croce <mcroce@redhat.com>
>
> --
> Matteo Croce
> per aspera ad upstream

Hi,

I found an issue with the patch. It's not 100% reproducible, but
sometimes the option gets enabled regardless of the bonding type and
the configuration.
This breaks the unit tests, as the bond/show output is wrong:

# ovs-vsctl add-br br0
[63129.589500] device ovs-system entered promiscuous mode
[63129.591802] device br0 entered promiscuous mode

# ovs-vsctl add-bond br0 bond dummy0 dummy1 -- set Port bond
lacp=active bond-mode=active-backup
[63150.700542] device dummy1 entered promiscuous mode
[63150.700892] device dummy0 entered promiscuous mode

# ovs-vsctl get port bond other_config
{}

# ovs-appctl bond/show
---- bond ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
lb-output-action: enabled
updelay: 0 ms
downdelay: 0 ms
lacp_status: negotiated
lacp_fallback_ab: false
active slave mac: 00:00:00:00:00:00(none)

slave dummy0: disabled
        may_enable: false

slave dummy1: disabled
        may_enable: false

Regards,
Li,Rongqing via dev Sept. 14, 2019, 1:32 p.m. UTC | #3
> >
> > I confirm a decent performance improvement with DPDK and balance-tcp
> bonding:
> >
> > lb-output-action=false
> >
> > rx: 740 Mbps 1446 kpps
> >
> > lb-output-action=true
> >
> > rx: 860 Mbps 1680 kpps
> >
> > I'm running a very simple test with a tweaked version of testpmd which
> > generates 256 L4 flows, I guess that with much flows the improvement
> > is way higher.
> >
> > Tested-by: Matteo Croce <mcroce@redhat.com>
> >

Thank you Matteo for testing this patch.

> I found an issue with the patch. It's not 100% reproducible, but sometimes 
> the
> option gets enabled regardless of the bonding type and the configuration.
> This breaks the unit tests, as the bond/show output is wrong:
>
> # ovs-vsctl add-br br0
> [63129.589500] device ovs-system entered promiscuous mode [63129.591802]
> device br0 entered promiscuous mode
>
> # ovs-vsctl add-bond br0 bond dummy0 dummy1 -- set Port bond lacp=active
> bond-mode=active-backup [63150.700542] device dummy1 entered
> promiscuous mode [63150.700892] device dummy0 entered promiscuous mode
>
Let me check this in my setup. I always used 'netdev' bridges for testing my 
patch.
May be I need to be check for data path support in the display function as 
well.
Li,Rongqing via dev Sept. 17, 2019, 12:26 p.m. UTC | #4
> >
> Let me check this in my setup. I always used 'netdev' bridges for testing my
> patch.
> May be I need to be check for data path support in the display function as
> well.

Hi,
I have sent v7 version of patch fixing this issue.

Warm Regards,
Vishal Ajmera