From: "Mattias Rönnblom" <hofors@lysator.liu.se>
To: Abdullah Sevincer <abdullah.sevincer@intel.com>, dev@dpdk.org
Cc: jerinj@marvell.com, bruce.richardson@intel.com,
pravin.pathak@intel.com, mattias.ronnblom@ericsson.com,
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: Mon, 1 Jul 2024 10:50:50 +0200 [thread overview]
Message-ID: <e85eb8e7-68a2-4cda-96e7-5d75d024dcb2@lysator.liu.se> (raw)
In-Reply-To: <20240621222408.583464-3-abdullah.sevincer@intel.com>
On 2024-06-22 00:24, Abdullah Sevincer wrote:
> This commit adds support flag to enable enqueue reorder
> feature.
>
> When this flag is enabled in the port configuration PMD
> restores dequeue order on enqueue if applications happen to
> change it.
>
> Signed-off-by: Abdullah Sevincer <abdullah.sevincer@intel.com>
> ---
> lib/eventdev/rte_eventdev.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
> index 08e5f9320b..f4220dd5dc 100644
> --- a/lib/eventdev/rte_eventdev.h
> +++ b/lib/eventdev/rte_eventdev.h
> @@ -1073,6 +1073,14 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
> * @see rte_event_port_setup()
> */
>
> +#define RTE_EVENT_PORT_CFG_RESTORE_DEQ_ORDER (1ULL << 5)
> +/**< Flag to enable feature enqueue reordering to dequeue.
> + * The feature restores dequeue order on enqueue if applications
> + * happen to change the order.
> + *
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.
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).
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.
You may want to add an example as well. And a note on the importance of
maintaining impl_opaque between dequeue and enqueue.
> + * @see rte_event_port_setup()
> + */
> +
> /** Event port configuration structure */
> struct rte_event_port_conf {
> int32_t new_event_threshold;
next prev parent reply other threads:[~2024-07-01 8:50 UTC|newest]
Thread overview: 15+ 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 [this message]
2024-07-02 17:25 ` Pathak, Pravin
2024-06-21 20:12 ` [PATCH v1 " 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=e85eb8e7-68a2-4cda-96e7-5d75d024dcb2@lysator.liu.se \
--to=hofors@lysator.liu.se \
--cc=abdullah.sevincer@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--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 \
--cc=pravin.pathak@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).