DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Pathak, Pravin" <pravin.pathak@intel.com>
To: "Mattias Rönnblom" <hofors@lysator.liu.se>,
	"Sevincer, Abdullah" <abdullah.sevincer@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "jerinj@marvell.com" <jerinj@marvell.com>,
	"Richardson, Bruce" <bruce.richardson@intel.com>,
	"mattias.ronnblom@ericsson.com" <mattias.ronnblom@ericsson.com>,
	"Aggarwal, Manish" <manish.aggarwal@intel.com>,
	Peter Nilsson <peter.j.nilsson@ericsson.com>,
	Maria Lingemark <maria.lingemark@ericsson.com>
Subject: RE: [PATCH v3 2/2] eventdev: add support for enqueue reorder
Date: Tue, 2 Jul 2024 17:25:19 +0000	[thread overview]
Message-ID: <BL1PR11MB5461C0D8370419C41EB25BCDF4DC2@BL1PR11MB5461.namprd11.prod.outlook.com> (raw)
In-Reply-To: <e85eb8e7-68a2-4cda-96e7-5d75d024dcb2@lysator.liu.se>


>+ Add a device-level
>+ RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ
>+ as well.
>+ The documentation of that flag should probably house the detailed description of this feature.

So, this capability will be advertised by DSW and DLB devices with detailed documentation. 

>+ Here's how I would describe this feature:

>+ #define RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ   (1ULL << 5)

>+/**< Flag to enable independent enqueue. Must be unset if the device
>+  * is not RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ capable. This feature
>+  * allows an application to enqueue RTE_EVENT_OP_FORWARD or
>+  * RTE_EVENT_OP_RELEASE in an order different than the order the
>+  * events were dequeued from the event device, while maintaining
>+  * RTE_SCHED_TYPE_ATOMIC or RTE_SCHED_TYPE_ORDERED semantics.
>+  *
>+  * If the application wish to change the order of two events *within
>+  * a flow*, it must both change the enqueue order and exchange the
>+  * impl_opaque field, to be portable across all event devices.
>+  */

>+That second paragraph allows DSW to support this feature without modification since this is the only difference between DSW-style independent enqueue and DLB enqueue reordering. DLB will restore a total order, while DSW doesn't (since it would be both pointless and costly, given its design).

Can we skip mentioning this mechanism to change the order of any two events intentionally? For DLB, those two events should have been received from the same queue and, if atomic, with the same atomic flow ID. If there is no use case, we can skip it to avoid confusion. 

>+The upside with DSW-style implementation is that it's very simple and efficient, and does not impose any head-of-line blocking (which follows from restoring a total order between dequeue and enqueue). The downside is it does not allow for a scenario where a particular flow is split across different modules, the application performs reordering >+(e.g., with the dispatcher library) *and* wants to maintain ordering between events pertaining to those "sub flows". I've never come across such a scenario, but it may well exist.

>+If we fail to make DLB2 and DSW compatible, we'll probably need another flag for DSW, because needlessly imposing a total order DSW does not make a lot of sense.

If the device has the capability to support independent enqueue, it should enable it on applicable ports using the RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ  flag. Some devices like DSW will not do any reordering inside as they can support it without changing the order whereas devices like DLB which depend on order will reorder events inside their PMD.


>+You may want to add an example as well. And a note on the importance of maintaining impl_opaque between dequeue and enqueue.

We will consider this a separate patch later with an example based on the dispatcher library, which can work with DSW and DLB.  Is the port provided to rte_dispatcher_bind_port_to_lcore() already set up by the application? In that case configuring this feature on the port becomes part of the application. 

> + *  @see rte_event_port_setup()
> + */
> +
>   /** Event port configuration structure */
>   struct rte_event_port_conf {
>   	int32_t new_event_threshold;

  reply	other threads:[~2024-07-02 17:25 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-21 20:12 [PATCH v1 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 20:12 ` [PATCH v1 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 20:51   ` [PATCH v2 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 20:51     ` [PATCH v2 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 20:51     ` [PATCH v2 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer
2024-06-21 22:24   ` [PATCH v3 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 22:24     ` [PATCH v3 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 22:24     ` [PATCH v3 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer
2024-06-24  8:28       ` Jerin Jacob
2024-06-26 18:31         ` Sevincer, Abdullah
2024-06-27 13:13           ` Jerin Jacob
2024-07-01  8:24       ` Mattias Rönnblom
2024-07-01  8:50       ` Mattias Rönnblom
2024-07-02 17:25         ` Pathak, Pravin [this message]
2024-07-11  3:20           ` Pathak, Pravin
2024-07-10  1:20       ` [PATCH v4 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-10  1:20         ` [PATCH v4 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-10  1:20         ` [PATCH v4 2/3] eventdev: " Abdullah Sevincer
2024-07-10  1:20         ` [PATCH v4 3/3] event/dsw: add capability " Abdullah Sevincer
2024-07-10  6:33       ` [PATCH v5 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-10  6:33         ` [PATCH v5 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-10  6:33         ` [PATCH v5 2/3] eventdev: " Abdullah Sevincer
2024-07-10  6:33         ` [PATCH v5 3/3] event/dsw: add capability " Abdullah Sevincer
2024-07-11 19:54       ` [PATCH v6 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-11 19:54         ` [PATCH v6 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-11 19:54         ` [PATCH v6 2/3] eventdev: " Abdullah Sevincer
2024-07-23  6:40           ` Mattias Rönnblom
2024-07-29 13:49             ` Pathak, Pravin
2024-08-13 15:00               ` Sevincer, Abdullah
2024-08-20 16:48                 ` Sevincer, Abdullah
2024-08-12 18:41           ` [PATCH v7 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-12 18:41             ` [PATCH v7 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-12 18:41             ` [PATCH v7 2/3] eventdev: " Abdullah Sevincer
2024-08-12 18:41             ` [PATCH v7 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-12 20:00           ` [PATCH v8 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-12 20:00             ` [PATCH v8 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-12 20:00             ` [PATCH v8 2/3] eventdev: " Abdullah Sevincer
2024-08-23 11:02               ` Mattias Rönnblom
2024-08-24 20:41                 ` Pathak, Pravin
2024-08-27 18:33                   ` Sevincer, Abdullah
2024-08-28 16:45                   ` Mattias Rönnblom
2024-08-28 16:59                     ` Sevincer, Abdullah
2024-08-29 12:51                       ` Jerin Jacob
2024-08-31 18:38                         ` Sevincer, Abdullah
2024-08-29 17:36               ` [PATCH v9 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-29 17:36                 ` [PATCH v9 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-29 17:36                 ` [PATCH v9 2/3] eventdev: " Abdullah Sevincer
2024-08-29 17:36                 ` [PATCH v9 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-30 16:23               ` [PATCH v10 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-30 16:23                 ` [PATCH v10 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-09-09  1:47                   ` fengchengwen
2024-09-16 17:51                     ` Sevincer, Abdullah
2024-09-09 15:52                   ` [PATCH v11 0/3] Independent Enqueue Support Abdullah Sevincer
2024-09-09 15:52                     ` [PATCH v11 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-09-19 10:32                       ` Jerin Jacob
2024-09-09 15:52                     ` [PATCH v11 2/3] event/dlb2: " Abdullah Sevincer
2024-09-09 15:52                     ` [PATCH v11 3/3] event/dsw: add capability " Abdullah Sevincer
2024-09-09 16:05                   ` [PATCH v12 0/3] Independent Enqueue Support Abdullah Sevincer
2024-09-09 16:05                     ` [PATCH v12 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-09-09 16:05                     ` [PATCH v12 2/3] event/dlb2: " Abdullah Sevincer
2024-09-19 10:49                       ` [EXTERNAL] " Jerin Jacob
2024-10-03 20:36                       ` [PATCH v13 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-03 20:36                         ` [PATCH v13 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-03 20:36                         ` [PATCH v13 2/3] event/dlb2: " Abdullah Sevincer
2024-10-05  7:02                           ` Jerin Jacob
2024-10-03 20:36                         ` [PATCH v13 3/3] event/dsw: add capability " Abdullah Sevincer
2024-10-03 20:49                       ` [PATCH v14 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-03 20:50                         ` [PATCH v14 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-05  6:51                           ` Jerin Jacob
2024-10-05 17:51                           ` [PATCH v15 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-05 17:51                             ` [PATCH v15 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-05 17:51                             ` [PATCH v15 2/3] event/dlb2: " Abdullah Sevincer
2024-10-05 17:51                             ` [PATCH v15 3/3] event/dsw: add capability " Abdullah Sevincer
2024-10-05 18:20                           ` [PATCH v16 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-05 18:20                             ` [PATCH v16 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-05 18:20                             ` [PATCH v16 2/3] event/dlb2: " Abdullah Sevincer
2024-10-05 18:20                             ` [PATCH v16 3/3] event/dsw: add capability " Abdullah Sevincer
2024-10-07  2:00                           ` [PATCH v17 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-07  2:00                             ` [PATCH v17 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-07  7:19                               ` Jerin Jacob
2024-10-07  7:58                                 ` Sevincer, Abdullah
2024-10-07  2:00                             ` [PATCH v17 2/3] event/dlb2: " Abdullah Sevincer
2024-10-07  2:00                             ` [PATCH v17 3/3] event/dsw: add capability " Abdullah Sevincer
2024-10-07  8:13                           ` [PATCH v18 0/3] Independent Enqueue Support Abdullah Sevincer
2024-10-07  8:13                             ` [PATCH v18 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-10-07 12:19                               ` Jerin Jacob
2024-10-07  8:13                             ` [PATCH v18 2/3] event/dlb2: " Abdullah Sevincer
2024-10-07  8:13                             ` [PATCH v18 3/3] event/dsw: add capability " Abdullah Sevincer
2024-10-03 20:50                         ` [PATCH v14 2/3] event/dlb2: add support " Abdullah Sevincer
2024-10-03 20:50                         ` [PATCH v14 3/3] event/dsw: add capability " Abdullah Sevincer
2024-09-09 16:05                     ` [PATCH v12 " Abdullah Sevincer
2024-09-19 10:49                       ` Jerin Jacob
2024-08-30 16:23                 ` [PATCH v10 2/3] eventdev: add support " Abdullah Sevincer
2024-08-30 16:23                 ` [PATCH v10 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-12 20:00             ` [PATCH v8 " Abdullah Sevincer
2024-08-23 11:03               ` Mattias Rönnblom
2024-07-11 19:54         ` [PATCH v6 " Abdullah Sevincer
2024-07-23  6:41           ` Mattias Rönnblom
2024-06-21 20:12 ` [PATCH v1 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer

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=BL1PR11MB5461C0D8370419C41EB25BCDF4DC2@BL1PR11MB5461.namprd11.prod.outlook.com \
    --to=pravin.pathak@intel.com \
    --cc=abdullah.sevincer@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=hofors@lysator.liu.se \
    --cc=jerinj@marvell.com \
    --cc=manish.aggarwal@intel.com \
    --cc=maria.lingemark@ericsson.com \
    --cc=mattias.ronnblom@ericsson.com \
    --cc=peter.j.nilsson@ericsson.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).