DPDK patches and discussions
 help / color / mirror / Atom feed
From: Luke Gorrie <luke@snabb.co>
To: "Wiles, Keith" <keith.wiles@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] Beyond DPDK 2.0
Date: Fri, 8 May 2015 07:29:39 +0200	[thread overview]
Message-ID: <CAA2XHbdN_K+USv0Ukp-a=jtuAph5Km-kWjcxYdtDUhmKVk8SPA@mail.gmail.com> (raw)
In-Reply-To: <D1718134.1F52C%keith.wiles@intel.com>

On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote:

> The PMDs or drivers would not be useful without DPDK MBUFS IMO
>

Surprisingly perhaps, I would find them very useful.

To me there are two parts to a driver: the hardware setup and the
transmit/receive.

The hardware setup is complex and generic. You have to read a thousand-page
data sheet and then write code to initialize the hardware, setup queues,
enable promisc/multicast, enable features you want like vmdq or flow
director, and so on. You need to accumulate workarounds for hard-to-test
problems like cards being discovered with unsuitable values in their
EEPROM. There is not much intellectual value in this code being written
more than once.

I would like to see this hardware setup code shared between many projects.
That code does not depend on a specific mbuf struct. Sharing could be done
with an embeddable PMD library, with a bifurcated driver in the kernel,
with the SR-IOV PF/VF model, or surely other ways too. These all have
limited applicability today.

The transmit/receive part, on the other hand, seems very
application-dependent. This part depends on the specific mbuf struct and
the way you are developing your application around it. You will need to
write code to suit your design for using scatter/gather, allowed sizes of
individual buffers, the granularity at which you are keeping track of
checksum validity, how you use TSO/LRO, how you use interrupts, how you
batch work together, and so on. This is easy or hard depending on how
simple or complex the application is.

I am not so interested in sharing this code. I think that different
applications will legitimately have different designs - including mbuf
structs - and they all need code that suits their own design. I think there
is a lot of value in people being creative in these areas and trying
different things.

So while Avi might only mean that he wants to allocate the bytes for his
mbufs himself, on our side we want to design our own mbuf struct. The cost
of that today is to write our own device drivers from scratch but for now
that seems justified. Going forward if there were a simpler mechanism that
reduced our workload and gave us access to more hardware - libixgbe,
libi40e, etc - that would be extremely interesting to us.

I suppose that another background question is whether the DPDK community
are chiefly concerned with advancing DPDK as a platform and a brand or are
broadly keen to develop and share code that is useful in diverse networking
projects. (Is this whole discussion off-topic for dpdk-devel?)

This is one of the many reasons why I would love to use parts of DPDK but
do not want to use all of it. (We also allocate our HugeTLBs differently,
etc, because we have different priorities.)

  reply	other threads:[~2015-05-08  5:29 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-16 10:38 O'Driscoll, Tim
2015-04-22 15:11 ` O'Driscoll, Tim
2015-04-22 15:33   ` Stephen Hemminger
2015-04-23 11:36     ` O'Driscoll, Tim
2015-04-24 21:02       ` Dave Neary
2015-05-07 14:02   ` Avi Kivity
2015-05-07 14:34     ` Ivan Boule
2015-05-07 15:27     ` Wiles, Keith
2015-05-07 15:33       ` Avi Kivity
2015-05-07 15:33       ` Avi Kivity
2015-05-07 15:49         ` Wiles, Keith
2015-05-07 16:05           ` Avi Kivity
2015-05-08  4:16             ` Wiles, Keith
2015-05-08  5:29               ` Luke Gorrie [this message]
2015-05-08  9:06                 ` Bruce Richardson
2015-05-08  9:32                   ` Luke Gorrie
2015-05-08  9:42                     ` Bruce Richardson
2015-05-08 10:02                       ` Luke Gorrie
2015-05-08 14:44                 ` Wiles, Keith
2015-05-08 16:16                   ` Stephen Hemminger
2015-05-08 10:26               ` Hobywan Kenoby
2015-05-08 13:31                 ` Neil Horman
2015-05-08 16:22                   ` Stephen Hemminger
2015-05-07 15:34     ` Luke Gorrie
2015-05-08  4:31       ` Wiles, Keith
2015-04-24  7:47 ` Luke Gorrie
2015-04-24 15:29   ` O'Driscoll, Tim
2015-04-24 17:00     ` Neil Horman
2015-04-26  9:07       ` Luke Gorrie
2015-04-24 17:39   ` Jay Rolette
2015-04-24 17:51     ` Matthew Hall
2015-04-25 13:30       ` Marc Sune
2015-04-25 16:08         ` Wiles, Keith
2015-04-26 21:56           ` Neil Horman
2015-04-27  2:29             ` Jim Thompson
2015-04-27 13:07               ` Neil Horman
2015-04-27 16:07               ` Stephen Hemminger
2015-04-28  7:20               ` Dor Laor
     [not found]             ` <D162FA4E.1DED8%keith.wiles@intel.com>
2015-04-27  9:52               ` Marc Sune
2015-04-27 13:39                 ` Wiles, Keith
2015-04-27 15:34                   ` Marc Sune
2015-04-27 10:29               ` Neil Horman
2015-04-27 13:50                 ` Wiles, Keith
2015-04-27 15:23                   ` Neil Horman
2015-04-27 12:38             ` Dave Neary
2015-04-27 13:41               ` Neil Horman
2015-04-27 16:09               ` Stephen Hemminger
2015-04-24 18:12     ` Matt Laswell
2015-04-24 18:51       ` Neil Horman
2015-04-24 19:55         ` Jay Rolette
2015-04-25 12:10           ` Neil Horman
2015-04-27 13:46             ` Jay Rolette
2015-04-28 17:26               ` Neil Horman
2015-04-28 20:02                 ` Jay Rolette
2015-04-28  6:22             ` Matthew Hall
2015-04-28 17:48   ` Stephen Hemminger
2015-04-30 21:31 Wiles, Keith
2015-04-30 21:38 ` Wiles, Keith

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='CAA2XHbdN_K+USv0Ukp-a=jtuAph5Km-kWjcxYdtDUhmKVk8SPA@mail.gmail.com' \
    --to=luke@snabb.co \
    --cc=dev@dpdk.org \
    --cc=keith.wiles@intel.com \
    /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).