From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: <dev@dpdk.org>, <thomas.monjalon@6wind.com>,
<hemant.agrawal@nxp.com>, <gage.eads@intel.com>,
<harry.van.haaren@intel.com>
Subject: Re: [PATCH v2 1/6] eventdev: introduce event driven programming model
Date: Wed, 14 Dec 2016 12:25:54 +0530 [thread overview]
Message-ID: <20161214065552.GC21135@localhost.localdomain> (raw)
In-Reply-To: <20161209151142.GA14536@bricha3-MOBL3.ger.corp.intel.com>
On Fri, Dec 09, 2016 at 03:11:42PM +0000, Bruce Richardson wrote:
> On Fri, Dec 09, 2016 at 02:11:15AM +0530, Jerin Jacob wrote:
> > On Thu, Dec 08, 2016 at 09:30:49AM +0000, Bruce Richardson wrote:
> > > On Thu, Dec 08, 2016 at 12:23:03AM +0530, Jerin Jacob wrote:
> > > > On Tue, Dec 06, 2016 at 04:51:19PM +0000, Bruce Richardson wrote:
> > > > > On Tue, Dec 06, 2016 at 09:22:15AM +0530, Jerin Jacob wrote:
> > > > > I think this might need to be clarified. The device doesn't need to be
> > > > > reconfigured, but does it need to be stopped? In SW implementation, this
> > > > > affects how much we have to make things thread-safe. At minimum I think
> > > > > we should limit this to having only one thread call the function at a
> > > > > time, but we may allow enqueue dequeue ops from the data plane to run
> > > > > in parallel.
> > > >
> > > > Cavium implementation can change it at runtime without re-configuring or stopping
> > > > the device to support runtime load balancing from the application perspective.
> > > >
> > > > AFAIK, link establishment is _NOT_ fast path API. But the application
> > > > can invoke it from worker thread whenever there is a need for re-wiring
> > > > the queue to port connection for better explicit load balancing. IMO, A
> > > > software implementation with lock is fine here as we don't use this in
> > > > fastpath.
> > > >
> > > > Thoughts?
> > > > >
> > >
> > > I agree that it's obviously not fast-path. Therefore I suggest that we
> > > document that this API should be safe to call while the data path is in
> > > operation, but that it should not be called by multiple cores
> > > simultaneously i.e. single-writer, multi-reader safe, but not
> > > multi-writer safe. Does that seem reasonable to you?
> >
> > If I understand it correctly, per "event port" their will be ONLY ONE
> > writer at time.
> >
> > i.e, In the valid case, Following two can be invoked in parallel
> > rte_event_port_link(dev_id, 0 /*port_id*/,..)
> > rte_event_port_link(dev_id, 1 /*port_id*/,..)
> >
> > But, not invoking rte_event_port_link() on the _same_ event port in parallel
> >
> > Are we on same page?
> >
> > Jerin
> >
> Not entirely. Since our current software implementation pushes the events
> from the internal queues to the ports, rather than having the ports pull
> the events, the links are tracked at the qid level rather than at the
> port one. So having two link operations on two separate ports at the
> same time could actually conflict for us, because they attempt to modify
> the mappings for the same queue. That's why for us the number of
> simultaneous link calls is important.
> However, given that this is not fast-path, we can probably work around
> this with locking internally. The main ask is that we explicitly
Yes, It is in slow-path. IMO, no harm in adding the lock internally and it
helps the application too.
> document what are the expected safe and unsafe conditions under which
> this call can be made.
As we agreed and it is a norm in DPDK that operation on same queue id
(in our case same port id) _cannot_ not be invoked in parallel.
Apart from the above constrain, Let us know what are other constrains you
want to add(if any).
>
> /Bruce
next prev parent reply other threads:[~2016-12-14 6:56 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-18 5:44 [PATCH 0/4] libeventdev API and northbound implementation Jerin Jacob
2016-11-18 5:44 ` [PATCH 1/4] eventdev: introduce event driven programming model Jerin Jacob
2016-11-23 18:39 ` Thomas Monjalon
2016-11-24 1:59 ` Jerin Jacob
2016-11-24 12:26 ` Bruce Richardson
2016-11-24 15:35 ` Thomas Monjalon
2016-11-25 0:23 ` Jerin Jacob
2016-11-25 11:00 ` Bruce Richardson
2016-11-25 13:09 ` Thomas Monjalon
2016-11-26 0:57 ` Jerin Jacob
2016-11-28 9:10 ` Bruce Richardson
2016-11-26 2:54 ` Jerin Jacob
2016-11-28 9:16 ` Bruce Richardson
2016-11-28 11:30 ` Thomas Monjalon
2016-11-29 4:01 ` Jerin Jacob
2016-11-29 10:00 ` Bruce Richardson
2016-11-25 11:59 ` Van Haaren, Harry
2016-11-25 12:09 ` Richardson, Bruce
2016-11-24 16:24 ` Bruce Richardson
2016-11-24 19:30 ` Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 0/6] libeventdev API and northbound implementation Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 1/6] eventdev: introduce event driven programming model Jerin Jacob
2016-12-06 16:51 ` Bruce Richardson
2016-12-07 18:53 ` Jerin Jacob
2016-12-08 9:30 ` Bruce Richardson
2016-12-08 20:41 ` Jerin Jacob
2016-12-09 15:11 ` Bruce Richardson
2016-12-14 6:55 ` Jerin Jacob [this message]
2016-12-07 10:57 ` Van Haaren, Harry
2016-12-08 1:24 ` Jerin Jacob
2016-12-08 11:02 ` Van Haaren, Harry
2016-12-14 13:13 ` Jerin Jacob
2016-12-14 15:15 ` Bruce Richardson
2016-12-15 16:54 ` Van Haaren, Harry
2016-12-07 11:12 ` Bruce Richardson
2016-12-08 1:48 ` Jerin Jacob
2016-12-08 9:57 ` Bruce Richardson
2016-12-14 6:40 ` Jerin Jacob
2016-12-14 15:19 ` Bruce Richardson
2016-12-15 13:39 ` Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 2/6] eventdev: define southbound driver interface Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 3/6] eventdev: implement the northbound APIs Jerin Jacob
2016-12-06 17:17 ` Bruce Richardson
2016-12-07 17:02 ` Jerin Jacob
2016-12-08 9:59 ` Bruce Richardson
2016-12-14 6:28 ` Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 4/6] eventdev: implement PMD registration functions Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 5/6] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-12-06 3:52 ` [PATCH v2 6/6] app/test: unit test case for eventdev APIs Jerin Jacob
2016-12-06 16:46 ` [PATCH v2 0/6] libeventdev API and northbound implementation Bruce Richardson
2016-12-21 9:25 ` [PATCH v4 " Jerin Jacob
2016-12-21 9:25 ` [PATCH v4 1/6] eventdev: introduce event driven programming model Jerin Jacob
2017-01-25 16:32 ` Eads, Gage
2017-01-25 16:36 ` Richardson, Bruce
2017-01-25 16:53 ` Eads, Gage
2017-01-25 22:36 ` Eads, Gage
2017-01-26 9:39 ` Jerin Jacob
2017-01-26 20:39 ` Eads, Gage
2017-01-27 10:03 ` Bruce Richardson
2017-01-30 10:42 ` Jerin Jacob
2017-02-02 11:18 ` Nipun Gupta
2017-02-02 14:09 ` Jerin Jacob
2017-02-03 6:38 ` Nipun Gupta
2017-02-03 10:58 ` Hemant Agrawal
2017-02-07 4:59 ` Jerin Jacob
2016-12-21 9:25 ` [PATCH v4 2/6] eventdev: define southbound driver interface Jerin Jacob
2017-02-02 11:19 ` Nipun Gupta
2017-02-02 11:34 ` Bruce Richardson
2017-02-02 12:53 ` Nipun Gupta
2017-02-02 13:58 ` Bruce Richardson
2017-02-03 5:59 ` Nipun Gupta
2016-12-21 9:25 ` [PATCH v4 3/6] eventdev: implement the northbound APIs Jerin Jacob
2017-02-02 11:19 ` Nipun Gupta
2017-02-02 14:32 ` Jerin Jacob
2017-02-03 6:59 ` Nipun Gupta
2016-12-21 9:25 ` [PATCH v4 4/6] eventdev: implement PMD registration functions Jerin Jacob
2017-02-02 11:20 ` Nipun Gupta
2017-02-05 13:04 ` Jerin Jacob
2016-12-21 9:25 ` [PATCH v4 5/6] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-12-21 9:25 ` [PATCH v4 6/6] app/test: unit test case for eventdev APIs Jerin Jacob
2016-11-18 5:45 ` [PATCH 2/4] eventdev: implement the northbound APIs Jerin Jacob
2016-11-21 17:45 ` Eads, Gage
2016-11-21 19:13 ` Jerin Jacob
2016-11-21 19:31 ` Jerin Jacob
2016-11-22 15:15 ` Eads, Gage
2016-11-22 18:19 ` Jerin Jacob
2016-11-22 19:43 ` Eads, Gage
2016-11-22 20:00 ` Jerin Jacob
2016-11-22 22:48 ` Eads, Gage
2016-11-22 23:43 ` Jerin Jacob
2016-11-28 15:53 ` Eads, Gage
2016-11-29 2:01 ` Jerin Jacob
2016-11-29 3:43 ` Jerin Jacob
2016-11-29 5:46 ` Eads, Gage
2016-11-23 9:57 ` Bruce Richardson
2016-11-23 19:18 ` Thomas Monjalon
2016-11-25 4:17 ` Jerin Jacob
2016-11-25 9:55 ` Richardson, Bruce
2016-11-25 23:08 ` Jerin Jacob
2016-11-18 5:45 ` [PATCH 3/4] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-11-18 5:45 ` [PATCH 4/4] app/test: unit test case for eventdev APIs Jerin Jacob
2016-11-18 15:25 ` [PATCH 0/4] libeventdev API and northbound implementation Bruce Richardson
2016-11-18 16:04 ` Bruce Richardson
2016-11-18 19:27 ` Jerin Jacob
2016-11-21 9:40 ` Thomas Monjalon
2016-11-21 9:57 ` Bruce Richardson
2016-11-22 0:11 ` Thomas Monjalon
2016-11-22 2:00 ` Yuanhan Liu
2016-11-22 9:05 ` Shreyansh Jain
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=20161214065552.GC21135@localhost.localdomain \
--to=jerin.jacob@caviumnetworks.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=gage.eads@intel.com \
--cc=harry.van.haaren@intel.com \
--cc=hemant.agrawal@nxp.com \
--cc=thomas.monjalon@6wind.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 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.