DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
To: Bruce Richardson <bruce.richardson@intel.com>,
	Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	Stephen Hemminger <stephen@networkplumber.org>,
	"Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
	"thomas@monjalon.net" <thomas@monjalon.net>,
	Ray Kinsella <mdr@ashroe.eu>, nd <nd@arm.com>
Subject: Re: [dpdk-dev] ABI and inline functions
Date: Wed, 17 Apr 2019 17:46:34 +0000	[thread overview]
Message-ID: <BYAPR18MB2424FB7B26FFE737C4871561C8250@BYAPR18MB2424.namprd18.prod.outlook.com> (raw)
In-Reply-To: <20190417083637.GB1890@bricha3-MOBL.ger.corp.intel.com>

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Bruce Richardson
> Sent: Wednesday, April 17, 2019 2:07 PM
> To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Cc: dev@dpdk.org; Stephen Hemminger <stephen@networkplumber.org>;
> Ananyev, Konstantin <konstantin.ananyev@intel.com>; thomas@monjalon.net;
> Ray Kinsella <mdr@ashroe.eu>; nd <nd@arm.com>
> Subject: Re: [dpdk-dev] ABI and inline functions
> 
> > 2) Every function that is not in the direct datapath (fastpath?)
> > should not be inline. Exceptions or things like rx/tx burst, ring
> > enqueue/dequeue, and packet alloc/free - Stephen
> 
> Agree with this. Anything not data path should not be inline. The next question
> then is for data path items how to determine whether they need to be inline or
> not. In general my rule-of-thumb:
> * anything dealing with bursts of packets should not be inline

# I think, we need consider the how fat is the function too,
If it is light weight, probably we need to make it inline
# Except the forward case, In real world use case, it is not trivial make large 
burst of packet to process it even though function prototype burst.
We may need to consider that
# For the given function if some argument is used with inline other function,
 probably no point in making that function alone  inline as the structure 
is exposed in some other function.

> * anything what works with single packet at a time should be inline
> 
> > In this context, does it make sense to say that we will maintain API
> > compatibility rather than saying ABI compatibility? This will also
> > send the right message to the end users.
> >
> I would value ABI compatibility much higher than API compatibility. If someone
> is recompiling the application anyway, making a couple of small changes (large
> rework is obviously a different issue) to the code should not be a massive issue, I
> hope. On the other hand, ABI compatibility is needed to allow seamless update
> from one version to another, and it's that ABI compatiblity that allows distro's to
> pick up our latest and greatest versions.

IMO, We have two primary use case for DPDK

1) NFV kind of use case 	where the application needs to run on multiple platform
without recompiling it.
2) Fixed appliance use case where embed SoC like Intel Denverton or ARM64 integrated
Controller used. For fixed appliance use case, end user care more of performance
than ABI compatibility as it easy to recompile the end user application vs the cost of
hitting performance impact.

IMO, DPDK needs to cater to both category.

My 2c.

> 
> Personally, I'd be happy enough to allow API changes at any point without
> deprecation notice, so long as function versioning is used to ensure ABI
> compatibility is kept.
> 
> My 2c.
> /Bruce

  parent reply	other threads:[~2019-04-17 17:47 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-17  5:12 Honnappa Nagarahalli
2019-04-17  5:12 ` Honnappa Nagarahalli
2019-04-17  8:36 ` Bruce Richardson
2019-04-17  8:36   ` Bruce Richardson
2019-04-17 16:52   ` Stephen Hemminger
2019-04-17 16:52     ` Stephen Hemminger
2019-04-17 17:46   ` Jerin Jacob Kollanukkaran [this message]
2019-04-17 17:46     ` Jerin Jacob Kollanukkaran
2019-04-17 18:51     ` Stephen Hemminger
2019-04-17 18:51       ` Stephen Hemminger
2019-04-18  5:56       ` [dpdk-dev] [EXT] " Jerin Jacob Kollanukkaran
2019-04-18  5:56         ` Jerin Jacob Kollanukkaran
2019-04-23 14:23         ` Ray Kinsella
2019-04-23 14:23           ` Ray Kinsella
2019-04-24 18:38           ` Jerin Jacob Kollanukkaran
2019-04-24 18:38             ` Jerin Jacob Kollanukkaran
2019-04-23 14:19       ` [dpdk-dev] " Ray Kinsella
2019-04-23 14:19         ` Ray Kinsella
2019-04-18  4:34   ` Honnappa Nagarahalli
2019-04-18  4:34     ` Honnappa Nagarahalli
2019-04-18 10:28     ` Bruce Richardson
2019-04-18 10:28       ` Bruce Richardson
2019-04-23 14:12       ` Ray Kinsella
2019-04-23 14:12         ` Ray Kinsella
2019-04-24  5:15         ` Honnappa Nagarahalli
2019-04-24  5:15           ` Honnappa Nagarahalli
2019-04-24 11:08         ` Burakov, Anatoly
2019-04-24 11:08           ` Burakov, Anatoly
2019-04-24 12:22           ` Ray Kinsella
2019-04-24 12:22             ` Ray Kinsella
2019-04-24 12:54             ` Burakov, Anatoly
2019-04-24 12:54               ` Burakov, Anatoly
2019-04-24 15:44               ` Stephen Hemminger
2019-04-24 15:44                 ` Stephen Hemminger
2019-04-30  8:52             ` Thomas Monjalon
2019-04-30  8:52               ` Thomas Monjalon
2019-04-24  5:08       ` Honnappa Nagarahalli
2019-04-24  5:08         ` Honnappa Nagarahalli
2019-04-24  8:49         ` Bruce Richardson
2019-04-24  8:49           ` Bruce Richardson

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=BYAPR18MB2424FB7B26FFE737C4871561C8250@BYAPR18MB2424.namprd18.prod.outlook.com \
    --to=jerinj@marvell.com \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=mdr@ashroe.eu \
    --cc=nd@arm.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.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).