* [PATCH] eventdev/timer: move buffer flush call
@ 2023-04-12 19:56 Erik Gabriel Carrillo
2023-05-17 14:01 ` Jerin Jacob
0 siblings, 1 reply; 2+ messages in thread
From: Erik Gabriel Carrillo @ 2023-04-12 19:56 UTC (permalink / raw)
To: jerinj; +Cc: dev, stable
The SW event timer adapter attempts to flush its event buffer on every
adapter tick. If events remain in the buffer after the attempt, another
attempt to flush won't occur until the next adapter tick, which delays
the enqueue of those events to the event device unecessarily.
Move the buffer flush call so that it happens with every invocation of
the service function, rather than on every adapter tick, to avoid the
delay.
Fixes: cc7b73ea9e3b ("eventdev: add new software timer adapter")
Cc: stable@dpdk.org
Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---
lib/eventdev/rte_event_timer_adapter.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/lib/eventdev/rte_event_timer_adapter.c b/lib/eventdev/rte_event_timer_adapter.c
index 23eb1d4a7d..427c4c6287 100644
--- a/lib/eventdev/rte_event_timer_adapter.c
+++ b/lib/eventdev/rte_event_timer_adapter.c
@@ -855,17 +855,18 @@ swtim_service_func(void *arg)
sw->n_expired_timers);
sw->n_expired_timers = 0;
- event_buffer_flush(&sw->buffer,
- adapter->data->event_dev_id,
- adapter->data->event_port_id,
- &nb_evs_flushed,
- &nb_evs_invalid);
-
- sw->stats.ev_enq_count += nb_evs_flushed;
- sw->stats.ev_inv_count += nb_evs_invalid;
sw->stats.adapter_tick_count++;
}
+ event_buffer_flush(&sw->buffer,
+ adapter->data->event_dev_id,
+ adapter->data->event_port_id,
+ &nb_evs_flushed,
+ &nb_evs_invalid);
+
+ sw->stats.ev_enq_count += nb_evs_flushed;
+ sw->stats.ev_inv_count += nb_evs_invalid;
+
rte_event_maintain(adapter->data->event_dev_id,
adapter->data->event_port_id, 0);
--
2.23.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] eventdev/timer: move buffer flush call
2023-04-12 19:56 [PATCH] eventdev/timer: move buffer flush call Erik Gabriel Carrillo
@ 2023-05-17 14:01 ` Jerin Jacob
0 siblings, 0 replies; 2+ messages in thread
From: Jerin Jacob @ 2023-05-17 14:01 UTC (permalink / raw)
To: Erik Gabriel Carrillo; +Cc: jerinj, dev, stable
On Thu, Apr 13, 2023 at 1:26 AM Erik Gabriel Carrillo
<erik.g.carrillo@intel.com> wrote:
>
> The SW event timer adapter attempts to flush its event buffer on every
> adapter tick. If events remain in the buffer after the attempt, another
> attempt to flush won't occur until the next adapter tick, which delays
> the enqueue of those events to the event device unecessarily.
typo: unecessarily
Updated the git commit as follows and applied to
dpdk-next-net-eventdev/for-main. Thanks
eventdev/timer: fix buffer flush
The SW event timer adapter attempts to flush its event buffer on every
adapter tick. If events remain in the buffer after the attempt, another
attempt to flush won't occur until the next adapter tick, which delays
the enqueue of those events to the event device unnecessarily.
Move the buffer flush call so that it happens with every invocation of
the service function, rather than on every adapter tick, to avoid the
delay.
Fixes: cc7b73ea9e3b ("eventdev: add new software timer adapter")
Cc: stable@dpdk.org
Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
> Move the buffer flush call so that it happens with every invocation of
> the service function, rather than on every adapter tick, to avoid the
> delay.
>
> Fixes: cc7b73ea9e3b ("eventdev: add new software timer adapter")
> Cc: stable@dpdk.org
>
> Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
> ---
> lib/eventdev/rte_event_timer_adapter.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/lib/eventdev/rte_event_timer_adapter.c b/lib/eventdev/rte_event_timer_adapter.c
> index 23eb1d4a7d..427c4c6287 100644
> --- a/lib/eventdev/rte_event_timer_adapter.c
> +++ b/lib/eventdev/rte_event_timer_adapter.c
> @@ -855,17 +855,18 @@ swtim_service_func(void *arg)
> sw->n_expired_timers);
> sw->n_expired_timers = 0;
>
> - event_buffer_flush(&sw->buffer,
> - adapter->data->event_dev_id,
> - adapter->data->event_port_id,
> - &nb_evs_flushed,
> - &nb_evs_invalid);
> -
> - sw->stats.ev_enq_count += nb_evs_flushed;
> - sw->stats.ev_inv_count += nb_evs_invalid;
> sw->stats.adapter_tick_count++;
> }
>
> + event_buffer_flush(&sw->buffer,
> + adapter->data->event_dev_id,
> + adapter->data->event_port_id,
> + &nb_evs_flushed,
> + &nb_evs_invalid);
> +
> + sw->stats.ev_enq_count += nb_evs_flushed;
> + sw->stats.ev_inv_count += nb_evs_invalid;
> +
> rte_event_maintain(adapter->data->event_dev_id,
> adapter->data->event_port_id, 0);
>
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-05-17 14:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-12 19:56 [PATCH] eventdev/timer: move buffer flush call Erik Gabriel Carrillo
2023-05-17 14:01 ` Jerin Jacob
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).