From: Vincent JARDIN <vincent.jardin-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Thomas Graf <tgraf-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: "dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org"
<dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org>,
dev-VfR2kkLFssw@public.gmane.org,
Gerald Rogers
<gerald.rogers-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
dpdk-ovs-y27Ovi1pjclAfugRpC6u6w@public.gmane.org
Subject: Re: [ovs-dev] [PATCH RFC] dpif-netdev: Add support Intel DPDK based ports.
Date: Wed, 29 Jan 2014 17:34:46 +0100 [thread overview]
Message-ID: <52E92DA6.9070704@6wind.com> (raw)
In-Reply-To: <52E8E2AB.1080600-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Thomas,
First and easy answer: it is open source, so anyone can recompile. So,
what's the issue?
> Without a concept of stable interfaces, it will be difficult to
> package and distribute RTE libraries, PMD, and DPDK applications. Right
> now, the obvious path would include packaging the PMD bits together
> with each DPDK application depending on the version of DPDK the binary
> was compiled against. This is clearly not ideal.
>
>> I agree that some areas could be improved since they are not into the
>> critical datapath of packets, but still other areas remain very CPU
>> constraints. For instance:
>> http://dpdk.org/browse/dpdk/commit/lib/librte_ether/rte_ethdev.h?id=c3d0564cf0f00c3c9a61cf72bd4bd1c441740637
>>
>> is bad:
>> struct eth_dev_ops
>> is churned, no comment, and a #ifdef that changes the structure
>> according to compilation!
>
> This is a very good example as it outlines the difference between
> control structures and the fast path. We have this same exact trade off
> in the kernel a lot where we have highly optimized internal APIs
> towards modules and drivers but want to provide binary compatibility to
> a certain extend.
As long as we agree on this limited scope, we'll think about it and
provide a proposal on dev-VfR2kkLFssw@public.gmane.org mailing list.
> As for the specific example you mention, it is relatively trivial to
> make eth_dev_ops backwards compatible by appending appropriate padding
> to the struct before a new major release and ensure that new members
> are added by replacing the padding accordingly. Obviously no ifdefs
> would be allowed anymore.
Of course, it is basic C!
>> Should an application use the librte libraries of the DPDK:
>> - you can use RTE_VERSION and RTE_VERSION_NUM :
>> http://dpdk.org/doc/api/rte__version_8h.html#a8775053b0f721b9fa0457494cfbb7ed9
>
> Right. This would be more or less identical to requiring a specific
> DPDK version in OVS_CHEC_DPDK. It's not ideal to require application to
> clutter their code with #ifdefs all over for every new minor release
> though.
>
>> - you can write your own wrapper (with CPU overhead) in order to have
>> a stable ABI, that wrapper should be tight to the versions of the librte
>> => the overhead is part of your application instead of the DPDK,
>> - *otherwise recompile your software, it is opensource, what's the
>> issue?*
>>
>> We are opened to any suggestion to have stable ABI, but it should never
>> remove the options to have fast/efficient/compilation/CPU execution
>> processing.
>
> Absolutely agreed. We also don't want to add tons of abstraction and
> overcomplicate everything. Still, I strongly believe that the definition
> of stable interfaces towards applications and especially PMD is
> essential.
>
> I'm not proposing to standardize all the APIs towards applications on
> the level of POSIX. DPDK is in early stages and disruptive changes will
> come along. What I would propose on an abstract level is:
>
> 1. Extend but not break API between minor releases. Postpone API
> breakages to the next major release. High cadence of major
> releases initially, lower cadence as DPDK matures.
>
> 2. Define ABI stability towards PMD for minor releases to allow
> isolated packaging of PMD by padding control structures and keeping
> functions ABI stable.
I get lost: do you mean ABI + API toward the PMDs or towards the
applications using the librte ?
Best regards,
Vincent
next prev parent reply other threads:[~2014-01-29 16:34 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-28 1:48 [PATCH RFC] dpif-netdev: Add support Intel DPDK based ports pshelar-l0M0P4e3n4LQT0dZR+AlfA
[not found] ` <1390873715-26714-1-git-send-email-pshelar-l0M0P4e3n4LQT0dZR+AlfA@public.gmane.org>
2014-01-28 4:49 ` Ben Pfaff
[not found] ` <20140128044950.GA4545-l0M0P4e3n4LQT0dZR+AlfA@public.gmane.org>
2014-01-28 5:28 ` [ovs-dev] " Pravin Shelar
[not found] ` <CALnjE+pFMa86Uz_9LZiZ3p-VzJwazQ18kwfZ62m6=2LZqQA7tA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-28 14:47 ` Vincent JARDIN
[not found] ` <52E7C31A.7050409-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-01-28 15:54 ` Thomas Graf
[not found] ` <52E7D2A8.400-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-28 18:20 ` Pravin Shelar
2014-01-28 17:56 ` Pravin Shelar
[not found] ` <CALnjE+qT-zCany+1t53paHmwkycJsftbEex6Q=OfEqQPNOt5nA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-29 0:15 ` Vincent JARDIN
[not found] ` <52E8482D.10804-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-01-29 19:32 ` Pravin Shelar
2014-01-28 15:48 ` Thomas Graf
[not found] ` <52E7D13B.9020404-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-28 18:17 ` [ovs-dev] " Pravin Shelar
[not found] ` <CALnjE+rP29s8mkiKPtppt-a8jMn-B2qS7+re2ZBd8bK46ozUPA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-29 8:15 ` Thomas Graf
[not found] ` <52E8B88A.1070104-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-29 10:26 ` Vincent JARDIN
[not found] ` <52E8D772.9070302-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-01-29 11:14 ` Thomas Graf
[not found] ` <52E8E2AB.1080600-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-29 16:34 ` Vincent JARDIN [this message]
[not found] ` <52E92DA6.9070704-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-01-29 17:14 ` Thomas Graf
[not found] ` <52E936D9.4010207-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-29 18:42 ` Stephen Hemminger
2014-01-29 20:47 ` François-Frédéric Ozog
2014-01-29 23:15 ` Thomas Graf
2014-03-13 7:37 ` David Nyström
2014-01-29 8:56 ` Prashant Upadhyaya
[not found] ` <C7CE7EEF248E2B48BBA63D0ABEEE700C5A2A24F762-2zbAqoMm/rLQX//ci7WS+53eMK7GYZcrXYFosVITYPE@public.gmane.org>
2014-01-29 21:29 ` Pravin Shelar
[not found] ` <CALnjE+rXdqzo2y9tKevsu7R5=kp-do+Yhv1Nr7Q9jKEC5Ror3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-30 10:15 ` Prashant Upadhyaya
[not found] ` <C7CE7EEF248E2B48BBA63D0ABEEE700C5A2A24F97D-2zbAqoMm/rLQX//ci7WS+53eMK7GYZcrXYFosVITYPE@public.gmane.org>
2014-01-30 16:27 ` [dpdk-dev] " Rogers, Gerald
2014-01-29 10:01 ` [ovs-dev] " Thomas Graf
[not found] ` <52E8D17C.8050100-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-29 21:49 ` Pravin Shelar
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=52E92DA6.9070704@6wind.com \
--to=vincent.jardin-pdr9zngts4eavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org \
--cc=dpdk-ovs-y27Ovi1pjclAfugRpC6u6w@public.gmane.org \
--cc=gerald.rogers-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=tgraf-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.