From: Pavan Nikhilesh <pbhagavat...@marvell.com> Event prefetching improves scheduling performance by pre-scheduling events to event ports when dequeues are issued. This series introduces various types and levels of prefetching to the eventdev library.
Prefetching Types: * RTE_EVENT_DEV_PREFETCH_NONE: No prefetching. * RTE_EVENT_DEV_PREFETCH: Always issue a prefetch when dequeue is issued. * RTE_EVENT_DEV_PREFETCH_INTELLIGENT: Delay issuing prefetch until there are no forward progress constraints with the held flow contexts. Prefetching Levels: * Event Device Level Prefetch: Prefetching can be enabled or disabled at the event device during configuration. Event devices can indicate prefetching capabilities using `RTE_EVENT_DEV_CAP_EVENT_PREFETCH` and `RTE_EVENT_DEV_CAP_EVENT_INTELLIGENT_PREFETCH` via the event device info function `info.event_dev_cap`. * Event Port Level Prefetch: Prefetching can be selectively enabled or disabled at the event port during runtime. Event devices can indicate this capability using `RTE_EVENT_PORT_CAP_EVENT_PER_PORT_PREFETCH` via the event device info function `info.event_port_cap`. * Application Controlled Prefetch Hint: Applications can provide hints to the event device to start prefetching events using the new API `rte_event_port_prefetch`. Event devices can indicate this capabilities using `RTE_EVENT_DEV_CAP_SW_PREFETCH` via the event device info function `info.event_dev_cap`. The rte_event_dequeue_burst operation initiates the prefetch operation, which completes in parallel without affecting the dequeued event flow context and dequeue latency. On the next dequeue operation, the prefetched events are dequeued, and prefetch is initiated again. In the case of application-controlled prefetch hints, the currently held flow contexts, if any, are not affected by the prefetch operation. On the next dequeue operation, the prefetched events are returned, but prefetch is not initiated again until the application provides the hint again. If prefetching is already enabled at the event device level or event port level, the hint is ignored. Pavan Nikhilesh (3): eventdev: introduce event prefetching eventdev: allow event ports to modified prefetches eventdev: add SW event prefetch hint app/test/test_eventdev.c | 113 +++++++++++++++ doc/guides/prog_guide/eventdev/eventdev.rst | 42 ++++++ lib/eventdev/eventdev_pmd.h | 4 + lib/eventdev/eventdev_private.c | 19 +++ lib/eventdev/eventdev_trace_points.c | 6 + lib/eventdev/rte_eventdev.h | 152 ++++++++++++++++++++ lib/eventdev/rte_eventdev_core.h | 9 ++ lib/eventdev/rte_eventdev_trace_fp.h | 19 ++- lib/eventdev/version.map | 6 + 9 files changed, 369 insertions(+), 1 deletion(-) -- 2.46.0