DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Nikita Kozlov <nikita@elyzion.net>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 0/2] lpm6: speed improvement on delete rule
Date: Wed, 22 Feb 2017 15:23:51 +0000	[thread overview]
Message-ID: <20170222152350.GA18956@bricha3-MOBL3.ger.corp.intel.com> (raw)
In-Reply-To: <f6730b2f-0bab-6722-b9a1-e653354d9bcc@elyzion.net>

On Fri, Sep 16, 2016 at 03:15:01PM +0200, Nikita Kozlov wrote:
> On 08/25/2016 00:59, Nikita Kozlov wrote:
> > This serie of pathes focus on improving the speed of deleting rules in lpm6.
> >
> > It also contains some other improvement like having a dynamic number of
> > rules in lpm6 and increasing the lpm6 nexthop size to 16bit for matching
> > the nexthop size in lpm4.
> >
> > The performances improvement can be seen by running test_lpm6_perf but
> > because of the limited number of rules added (1000) the improvement seen is
> > just about a x10 with this test.
> >
> > For testing it further we have tested it with a full ipv6 bgp view which 
> > represent 29296 routes in our test:
> > * With the dpdk 16.04 it tooks an average of 8.46095e+09 cycles to delete a rule
> > (calculated with mesuring rte_rdtsc before and after the delete, the
> > average is calculated by the first 10 delete, it represents several
> > seconds on a E5-2650 v2)
> > * With the patch it tooks 10077.1 cycles (same number of deleted rules,
> > same machine, same rules inserted) for the same test.
> >
> > This patch was written in collaboration with Baptiste Daroussin from Gandi.
> >
> > Changes since V1:
> > - use system bsd-tree.h
> > - fix a bug when valid_group field was overwritten 
> >
> > Nikita Kozlov (2):
> >   lpm6: speed inmprovement on delete rule
> >   test_lpm6: make test_lpm6* compatible with the new rte_lpm6.c lib
> >
> >  app/test/test_lpm6.c                  | 244 +++++--------
> >  app/test/test_lpm6_perf.c             |   6 +-
> >  lib/librte_lpm/Makefile               |   2 +-
> >  lib/librte_lpm/rte_lpm6.c             | 626 +++++++++++++++++++++++++---------
> >  lib/librte_lpm/rte_lpm6.h             |  50 ++-
> >  lib/librte_lpm/rte_lpm_version.map    |  12 +
> >  lib/librte_table/rte_table_lpm_ipv6.c |   7 +-
> >  7 files changed, 609 insertions(+), 338 deletions(-)
> >
> Hello,
> If someone have some time, I feel that this patch needs some polishing
> so any comments on the code are more than welcome, even if they are not
> directly related to the lpm part itself.
> 
> thanks.

Resurrecting this old thread, having spotted the patches in patchwork.
I've run some before/after tests with lpm6_perf_autotest. The results I
get show the delete performance improving ~33x with this patch applied.
(That's 33x, not 33%!). That's less than the numbers claimed above for a
real-world case, but still very, very impressive.
I see some regression with the add cycles, but *only* about 20% or so. I
can live with that for the improvement in delete speed.

The big issue I spotted with these two patches is that they need to be
merged together, since patch 2 fixes the compile errors introduced with
patch 1. Once the patches are combined then that combined patch should
ideally be split into smaller onces for the individual changes made: 
i.e. any changes not part of the rework of delete, should be in
different patches, but the repo should compile after each patch has been
applied.

I note also, that there is another patches outstanding on DPDK to
increase the next-hop size to 21 bits. That patch conflicts with this
one, but it probably should go in first as it's a smaller simpler
change, and this set needs a revision.

So, any plans for a V3 of this set?

Regards,
/Bruce

  parent reply	other threads:[~2017-02-22 15:23 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-09  0:53 [dpdk-dev] [PATCH 0/3] " Nikita Kozlov
2016-06-09  0:53 ` [dpdk-dev] [PATCH 1/3] lpm6 speed inmprovement " Nikita Kozlov
2016-06-09  0:53 ` [dpdk-dev] [PATCH 2/3] librte_eal: Import FreeBSD sys/tree.h into librte_eal/common Nikita Kozlov
2016-06-09  0:58   ` Stephen Hemminger
2016-06-09  7:25     ` Thomas Monjalon
2016-06-09 14:54     ` Nikita Kozlov
2016-06-09 15:14       ` Thomas Monjalon
2016-06-09  0:53 ` [dpdk-dev] [PATCH 3/3] test_lpm6: make test_lpm6* compatible with the new rte_lpm6.c lib Nikita Kozlov
2016-08-24 22:59 ` [dpdk-dev] [PATCH v2 0/2] lpm6: speed improvement on delete rule Nikita Kozlov
2016-09-16 13:15   ` Nikita Kozlov
2016-12-23  6:07     ` Paras Kumar
2017-02-22 15:23     ` Bruce Richardson [this message]
2016-08-24 22:59 ` [dpdk-dev] [PATCH v2 1/2] lpm6: speed inmprovement " Nikita Kozlov
2016-08-24 22:59 ` [dpdk-dev] [PATCH v2 2/2] test_lpm6: make test_lpm6* compatible with the new rte_lpm6.c lib Nikita Kozlov

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=20170222152350.GA18956@bricha3-MOBL3.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=nikita@elyzion.net \
    /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;
as well as URLs for NNTP newsgroup(s).