From: "Betts, Ian" <ian.betts@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v8 0/4] examples: add performance-thread
Date: Fri, 4 Dec 2015 22:10:25 +0000 [thread overview]
Message-ID: <877C1F8553E92F43898365570816082F35C0BD13@IRSMSX103.ger.corp.intel.com> (raw)
In-Reply-To: <20151204100359.6b966aea@xeon-e3>
-----Original Message-----
From: Stephen Hemminger [mailto:stephen@networkplumber.org]
Sent: Friday, December 4, 2015 6:04 PM
To: Betts, Ian
Cc: dev@dpdk.org; Richardson, Bruce
Subject: Re: [PATCH v8 0/4] examples: add performance-thread
>Looks useful, but this needs more discussion.
>Maybe it should be a separate library not tied into DPDK so it gets wider use and testing? Also what are the limitations?
>What if an lthread did a system call? What about interaction with rte_poll?
>Earlier attempts at lightweight threading (fibers) would be worth looking into. http://c2.com/cgi/wiki?CooperativeThreading
>Intel Thread Building Blocks
>IBM NGPT (now defunct)
>There lots of hidden gotcha's here, like preemption (or not), and limitations on interactions with other libraries.
>Intel may have some milestone to get it into DPDK 2.2 but really this seems too late...
These questions are valid and are the reason for making this an example application rather than a component library of DPDK.
Making it an example gives people an opportunity to evaluate the concept, if it turns out to be of value it can be taken
forward, and if it turns out not to be of much interest we will not evolve it.
There is a very detailed discussion in the accompanying sample app guide, which I believe provides enough information for most
interested users to comprehend the scope of what is included, both in terms of the features, the limitations and porting guidance.
With respect to lthreads making system calls ( which is covered at some length in the documentation BTW),
well this is the really the same questions as "what if a DPDK EAL thread made a system call ?"
i.e. lthreads introduces no danger that does not already exist in a DPDK application.
Several existing fibre libraries were evaluated before starting down this road.
This work itself is heavily influenced by one of those projects : https://github.com/halayli/lthread.
There are a number of negatives with the existing implementations: None of those we looked at are
multicore capable, or at best only allow isolated instances of schedulers to be run on different cores.
The more sophisticated examples provide their own socket APIs with network IO via the kernel stack, which is not interesting for DPDK.
Nearly all of them use heavier context switch based on mkcontext and friends.
So far as insufficient time to consider then, this has been in the roadmap for 2.2 all along, and has been available
In patchwork for anybody to look at. There has been no adverse comment so far.
next prev parent reply other threads:[~2015-12-04 22:10 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-03 16:21 [dpdk-dev] [PATCH v7 " Ian Betts
2015-12-03 16:21 ` [dpdk-dev] [PATCH v7 1/4] doc: add sample application guide for performance-thread Ian Betts
2015-12-03 16:21 ` [dpdk-dev] [PATCH v7 2/4] examples: add lthread subsystem " Ian Betts
2015-12-04 10:34 ` [dpdk-dev] [PATCH v8 0/4] examples: add performance-thread Ian Betts
2015-12-04 10:34 ` [dpdk-dev] [PATCH v8 1/4] doc: add sample application guide for performance-thread Ian Betts
2015-12-07 17:58 ` [dpdk-dev] [PATCH v9 0/4] examples: add performance-thread Ian Betts
2015-12-07 17:58 ` [dpdk-dev] [PATCH v9 1/4] doc: add sample application guide for performance-thread Ian Betts
2015-12-07 17:58 ` [dpdk-dev] [PATCH v9 2/4] examples: add lthread subsystem " Ian Betts
2015-12-07 17:58 ` [dpdk-dev] [PATCH v9 3/4] examples: add l3fwd-thread example in performance-thread Ian Betts
2015-12-08 1:35 ` Thomas Monjalon
2015-12-08 1:54 ` Betts, Ian
2015-12-08 2:28 ` Thomas Monjalon
2015-12-08 1:39 ` Thomas Monjalon
2015-12-07 17:58 ` [dpdk-dev] [PATCH v9 4/4] examples: add pthread_shim example to performance thread Ian Betts
2015-12-04 10:34 ` [dpdk-dev] [PATCH v8 2/4] examples: add lthread subsystem forperformance-thread Ian Betts
2015-12-07 2:38 ` Thomas Monjalon
2015-12-04 10:34 ` [dpdk-dev] [PATCH v8 3/4] examples: add l3fwd-thread example in performance-thread Ian Betts
2015-12-07 2:36 ` Thomas Monjalon
2015-12-07 4:46 ` Betts, Ian
2015-12-07 11:20 ` Thomas Monjalon
2015-12-04 10:34 ` [dpdk-dev] [PATCH v8 4/4] examples: add pthread_shim example to performance thread Ian Betts
2015-12-04 11:21 ` [dpdk-dev] [PATCH v8 0/4] examples: add performance-thread Kulasek, TomaszX
2015-12-04 18:03 ` Stephen Hemminger
2015-12-04 18:33 ` Thomas Monjalon
2015-12-05 12:06 ` Betts, Ian
2015-12-05 17:53 ` Glynn, Michael J
2015-12-05 19:47 ` Stephen Hemminger
2015-12-05 21:21 ` Thomas Monjalon
2015-12-06 6:17 ` Betts, Ian
2015-12-04 22:10 ` Betts, Ian [this message]
2015-12-03 16:21 ` [dpdk-dev] [PATCH v7 3/4] examples: add l3fwd-thread example in performance-thread Ian Betts
2015-12-03 16:21 ` [dpdk-dev] [PATCH v7 4/4] examples: add pthread_shim example to performance thread Ian Betts
2015-12-03 16:44 ` [dpdk-dev] [PATCH v7 0/4] examples: add performance-thread Kulasek, TomaszX
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=877C1F8553E92F43898365570816082F35C0BD13@IRSMSX103.ger.corp.intel.com \
--to=ian.betts@intel.com \
--cc=dev@dpdk.org \
--cc=stephen@networkplumber.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 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).