mbox series

[ovs-dev,v2,0/2] Implement terse dump for netdev-offload

Message ID 20200604104701.183504-1-roid@mellanox.com
Headers show
Series Implement terse dump for netdev-offload | expand

Message

Roi Dayan June 4, 2020, 10:46 a.m. UTC
In order to improve revalidator performance, extend netdev-offload with terse
dump support. In terse dump mode modify code that parses netlink to flower and
flower to match to only provide the essential data for conversion instead of
parsing all filter and actions data.

Implement support for new TC TCA_DUMP_FLAGS_TERSE flag. With the flag set TC
kernel implementation skips output of all other data besides stats, cookie and
flags which allows to pack much more filters in single netlink packet and
reduces amount of syscalls required to execute filter dump.

The impact of the change is measured by benchmarking revalidator poll interval
time with 100k of simple L2 flows with two revalidator threads on setup with 2x
Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz, 32GB memory. For such configuration
poll interval is reduced from ~1020ms to ~220ms. 

Pointer to the kernel patches for the new TC flag:
https://patchwork.ozlabs.org/project/netdev/cover/20200515114014.3135-1-vladbu%40mellanox.com/

Pointer to travis ci
https://travis-ci.org/github/roidayan/ovs/builds/694595308


Vlad Buslov (2):
  netdev-offload: Implement terse dump support
  tc: Support new terse dump kernel API

 lib/dpif-netlink.c            | 70 +++++++++++++++++++++---------------------
 lib/netdev-offload-provider.h |  3 +-
 lib/netdev-offload-tc.c       | 71 ++++++++++++++++++++++++++++++++-----------
 lib/netdev-offload.c          | 10 +++---
 lib/netdev-offload.h          |  6 ++--
 lib/tc.c                      | 59 +++++++++++++++++++++++++++--------
 lib/tc.h                      |  5 +--
 ofproto/ofproto-dpif-upcall.c | 24 +++++++++++++--
 8 files changed, 173 insertions(+), 75 deletions(-)

Comments

Roi Dayan June 4, 2020, 10:51 a.m. UTC | #1
On 2020-06-04 1:46 PM, Roi Dayan wrote:
> In order to improve revalidator performance, extend netdev-offload with terse
> dump support. In terse dump mode modify code that parses netlink to flower and
> flower to match to only provide the essential data for conversion instead of
> parsing all filter and actions data.
> 
> Implement support for new TC TCA_DUMP_FLAGS_TERSE flag. With the flag set TC
> kernel implementation skips output of all other data besides stats, cookie and
> flags which allows to pack much more filters in single netlink packet and
> reduces amount of syscalls required to execute filter dump.
> 
> The impact of the change is measured by benchmarking revalidator poll interval
> time with 100k of simple L2 flows with two revalidator threads on setup with 2x
> Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz, 32GB memory. For such configuration
> poll interval is reduced from ~1020ms to ~220ms. 
> 
> Pointer to the kernel patches for the new TC flag:
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.ozlabs.org%2Fproject%2Fnetdev%2Fcover%2F20200515114014.3135-1-vladbu%2540mellanox.com%2F&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=gHfuLy9ZdymCq%2FqMsP5HPTWTNfO%2BcI%2BeEcopbZ9%2F1hY%3D&reserved=0
> 
> Pointer to travis ci
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Froidayan%2Fovs%2Fbuilds%2F694595308&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=935ft%2B4OpTZyVGqju4Y3A4mOZusXwN%2F3ZMaonHJwLpo%3D&reserved=0
> 
> 
> Vlad Buslov (2):
>   netdev-offload: Implement terse dump support
>   tc: Support new terse dump kernel API
> 
>  lib/dpif-netlink.c            | 70 +++++++++++++++++++++---------------------
>  lib/netdev-offload-provider.h |  3 +-
>  lib/netdev-offload-tc.c       | 71 ++++++++++++++++++++++++++++++++-----------
>  lib/netdev-offload.c          | 10 +++---
>  lib/netdev-offload.h          |  6 ++--
>  lib/tc.c                      | 59 +++++++++++++++++++++++++++--------
>  lib/tc.h                      |  5 +--
>  ofproto/ofproto-dpif-upcall.c | 24 +++++++++++++--
>  8 files changed, 173 insertions(+), 75 deletions(-)
> 

forgot to include changelog. 
v2
- fixing travis errors.
Simon Horman June 4, 2020, 11:58 a.m. UTC | #2
On Thu, Jun 04, 2020 at 01:51:04PM +0300, Roi Dayan wrote:
> 
> 
> On 2020-06-04 1:46 PM, Roi Dayan wrote:
> > In order to improve revalidator performance, extend netdev-offload with terse
> > dump support. In terse dump mode modify code that parses netlink to flower and
> > flower to match to only provide the essential data for conversion instead of
> > parsing all filter and actions data.
> > 
> > Implement support for new TC TCA_DUMP_FLAGS_TERSE flag. With the flag set TC
> > kernel implementation skips output of all other data besides stats, cookie and
> > flags which allows to pack much more filters in single netlink packet and
> > reduces amount of syscalls required to execute filter dump.
> > 
> > The impact of the change is measured by benchmarking revalidator poll interval
> > time with 100k of simple L2 flows with two revalidator threads on setup with 2x
> > Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz, 32GB memory. For such configuration
> > poll interval is reduced from ~1020ms to ~220ms. 
> > 
> > Pointer to the kernel patches for the new TC flag:
> > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.ozlabs.org%2Fproject%2Fnetdev%2Fcover%2F20200515114014.3135-1-vladbu%2540mellanox.com%2F&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=gHfuLy9ZdymCq%2FqMsP5HPTWTNfO%2BcI%2BeEcopbZ9%2F1hY%3D&reserved=0
> > 
> > Pointer to travis ci
> > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Froidayan%2Fovs%2Fbuilds%2F694595308&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=935ft%2B4OpTZyVGqju4Y3A4mOZusXwN%2F3ZMaonHJwLpo%3D&reserved=0
> > 
> > 
> > Vlad Buslov (2):
> >   netdev-offload: Implement terse dump support
> >   tc: Support new terse dump kernel API
> > 
> >  lib/dpif-netlink.c            | 70 +++++++++++++++++++++---------------------
> >  lib/netdev-offload-provider.h |  3 +-
> >  lib/netdev-offload-tc.c       | 71 ++++++++++++++++++++++++++++++++-----------
> >  lib/netdev-offload.c          | 10 +++---
> >  lib/netdev-offload.h          |  6 ++--
> >  lib/tc.c                      | 59 +++++++++++++++++++++++++++--------
> >  lib/tc.h                      |  5 +--
> >  ofproto/ofproto-dpif-upcall.c | 24 +++++++++++++--
> >  8 files changed, 173 insertions(+), 75 deletions(-)
> > 
> 
> forgot to include changelog. 
> v2
> - fixing travis errors.

Thanks, just to be on the safe side I'm running this through Travis again.

https://travis-ci.org/github/horms2/ovs/builds/694611682
https://travis-ci.org/github/horms2/ovs/builds/694611768
Simon Horman June 5, 2020, 8:15 a.m. UTC | #3
On Thu, Jun 04, 2020 at 01:58:08PM +0200, Simon Horman wrote:
> On Thu, Jun 04, 2020 at 01:51:04PM +0300, Roi Dayan wrote:
> > 
> > 
> > On 2020-06-04 1:46 PM, Roi Dayan wrote:
> > > In order to improve revalidator performance, extend netdev-offload with terse
> > > dump support. In terse dump mode modify code that parses netlink to flower and
> > > flower to match to only provide the essential data for conversion instead of
> > > parsing all filter and actions data.
> > > 
> > > Implement support for new TC TCA_DUMP_FLAGS_TERSE flag. With the flag set TC
> > > kernel implementation skips output of all other data besides stats, cookie and
> > > flags which allows to pack much more filters in single netlink packet and
> > > reduces amount of syscalls required to execute filter dump.
> > > 
> > > The impact of the change is measured by benchmarking revalidator poll interval
> > > time with 100k of simple L2 flows with two revalidator threads on setup with 2x
> > > Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz, 32GB memory. For such configuration
> > > poll interval is reduced from ~1020ms to ~220ms. 
> > > 
> > > Pointer to the kernel patches for the new TC flag:
> > > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.ozlabs.org%2Fproject%2Fnetdev%2Fcover%2F20200515114014.3135-1-vladbu%2540mellanox.com%2F&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=gHfuLy9ZdymCq%2FqMsP5HPTWTNfO%2BcI%2BeEcopbZ9%2F1hY%3D&reserved=0
> > > 
> > > Pointer to travis ci
> > > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Froidayan%2Fovs%2Fbuilds%2F694595308&data=02%7C01%7Croid%40mellanox.com%7C6cd2642b7e5c46cd61e308d80874ce08%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637268645057358795&sdata=935ft%2B4OpTZyVGqju4Y3A4mOZusXwN%2F3ZMaonHJwLpo%3D&reserved=0
> > > 
> > > 
> > > Vlad Buslov (2):
> > >   netdev-offload: Implement terse dump support
> > >   tc: Support new terse dump kernel API
> > > 
> > >  lib/dpif-netlink.c            | 70 +++++++++++++++++++++---------------------
> > >  lib/netdev-offload-provider.h |  3 +-
> > >  lib/netdev-offload-tc.c       | 71 ++++++++++++++++++++++++++++++++-----------
> > >  lib/netdev-offload.c          | 10 +++---
> > >  lib/netdev-offload.h          |  6 ++--
> > >  lib/tc.c                      | 59 +++++++++++++++++++++++++++--------
> > >  lib/tc.h                      |  5 +--
> > >  ofproto/ofproto-dpif-upcall.c | 24 +++++++++++++--
> > >  8 files changed, 173 insertions(+), 75 deletions(-)
> > > 
> > 
> > forgot to include changelog. 
> > v2
> > - fixing travis errors.
> 
> Thanks, just to be on the safe side I'm running this through Travis again.
> 
> https://travis-ci.org/github/horms2/ovs/builds/694611682
> https://travis-ci.org/github/horms2/ovs/builds/694611768

Thanks again,

I've pushed this series to master.