mbox series

[0/3] new software event timer adapter

Message ID 1543534514-183766-1-git-send-email-erik.g.carrillo@intel.com (mailing list archive)
Headers
Series new software event timer adapter |

Message

Carrillo, Erik G Nov. 29, 2018, 11:35 p.m. UTC
  This patch series introduces a new version of the event timer 
adapter software PMD [1].  In the original design, timer event producer
lcores in the primary and secondary processes enqueued event timers
into a ring, and a service core in the primary process dequeued them
and processed them further.  To improve performance, this version does
away with the ring and lets the lcores in both primary and secondary
processes insert timers into directly into the timer skiplist data
structures; the service core directly accesses the lists as well. 
To achieve this, however, modifications to the timer library [2] are
required to enable the timer skiplists to be created and accessed in
shared memory.  New APIs are introduced in the timer library to enable
selecting from multiple instances of the timer skiplists. Instances of
the event timer adapter, as well as the original APIs of the timer
library, can then each access distinct timer lists.

Future versions of this series will hopefully improve the names
used for the data structures and APIs in the timer library.

This series depends on the following patch:
https://patches.dpdk.org/patch/48417/

[1] https://doc.dpdk.org/guides/prog_guide/event_timer_adapter.html
[2] https://doc.dpdk.org/guides/prog_guide/timer_lib.html

Erik Gabriel Carrillo (3):
  timer: allow timer management in shared memory
  timer: add function to stop all timers in a list
  eventdev: add new software event timer adapter

 lib/librte_eventdev/rte_event_timer_adapter.c | 687 +++++++++++---------------
 lib/librte_timer/Makefile                     |   1 +
 lib/librte_timer/rte_timer.c                  | 579 ++++++++++++++++++----
 lib/librte_timer/rte_timer.h                  | 200 +++++++-
 lib/librte_timer/rte_timer_version.map        |  22 +-
 5 files changed, 972 insertions(+), 517 deletions(-)
  

Comments

Pavan Nikhilesh Nov. 30, 2018, 7:26 a.m. UTC | #1
Hi Eric,

I think we may need to address the librte_timer and event_timer patches in
separate series as we are modifying common code for the sake of sw_event_timer
PMD and the series title implies that only the PMD has been modified.

Also, I think we need to profile and report the performance regression
(timer_perf_autotest,) if any of the rte_timer library with the new patches
as it is also used as a standalone library.

On Thu, Nov 29, 2018 at 05:35:11PM -0600, Erik Gabriel Carrillo wrote:
> This patch series introduces a new version of the event timer
> adapter software PMD [1].  In the original design, timer event producer
> lcores in the primary and secondary processes enqueued event timers
> into a ring, and a service core in the primary process dequeued them
> and processed them further.  To improve performance, this version does
> away with the ring and lets the lcores in both primary and secondary
> processes insert timers into directly into the timer skiplist data
> structures; the service core directly accesses the lists as well.
> To achieve this, however, modifications to the timer library [2] are
> required to enable the timer skiplists to be created and accessed in
> shared memory.  New APIs are introduced in the timer library to enable
> selecting from multiple instances of the timer skiplists. Instances of
> the event timer adapter, as well as the original APIs of the timer
> library, can then each access distinct timer lists.
>
> Future versions of this series will hopefully improve the names
> used for the data structures and APIs in the timer library.
>
> This series depends on the following patch:
> https://patches.dpdk.org/patch/48417/
>
> [1] https://doc.dpdk.org/guides/prog_guide/event_timer_adapter.html
> [2] https://doc.dpdk.org/guides/prog_guide/timer_lib.html
>
> Erik Gabriel Carrillo (3):
>   timer: allow timer management in shared memory
>   timer: add function to stop all timers in a list
>   eventdev: add new software event timer adapter
>
>  lib/librte_eventdev/rte_event_timer_adapter.c | 687 +++++++++++---------------
>  lib/librte_timer/Makefile                     |   1 +
>  lib/librte_timer/rte_timer.c                  | 579 ++++++++++++++++++----
>  lib/librte_timer/rte_timer.h                  | 200 +++++++-
>  lib/librte_timer/rte_timer_version.map        |  22 +-
>  5 files changed, 972 insertions(+), 517 deletions(-)
>
> --
> 2.6.4
>
  
Carrillo, Erik G Nov. 30, 2018, 7:07 p.m. UTC | #2
Hi Pavan,

Thanks for the feedback.  Response inline:

> -----Original Message-----
> From: Pavan Nikhilesh [mailto:pbhagavatula@caviumnetworks.com]
> Sent: Friday, November 30, 2018 1:26 AM
> To: Carrillo, Erik G <erik.g.carrillo@intel.com>; Jacob, Jerin
> <Jerin.JacobKollanukkaran@cavium.com>; rsanford@akamai.com
> Cc: stephen@networkplumber.org; dev@dpdk.org
> Subject: Re: [PATCH 0/3] new software event timer adapter
> 
> Hi Eric,
> 
> I think we may need to address the librte_timer and event_timer patches in
> separate series as we are modifying common code for the sake of
> sw_event_timer PMD and the series title implies that only the PMD has been
> modified.
> 
> Also, I think we need to profile and report the performance regression
> (timer_perf_autotest,) if any of the rte_timer library with the new patches
> as it is also used as a standalone library.
> 

Makes sense.  I'll separate the series and check for a performance regression 
in the timer library for the next iteration.

Thanks,
Erik

> On Thu, Nov 29, 2018 at 05:35:11PM -0600, Erik Gabriel Carrillo wrote:
> > This patch series introduces a new version of the event timer adapter
> > software PMD [1].  In the original design, timer event producer lcores
> > in the primary and secondary processes enqueued event timers into a
> > ring, and a service core in the primary process dequeued them and
> > processed them further.  To improve performance, this version does
> > away with the ring and lets the lcores in both primary and secondary
> > processes insert timers into directly into the timer skiplist data
> > structures; the service core directly accesses the lists as well.
> > To achieve this, however, modifications to the timer library [2] are
> > required to enable the timer skiplists to be created and accessed in
> > shared memory.  New APIs are introduced in the timer library to enable
> > selecting from multiple instances of the timer skiplists. Instances of
> > the event timer adapter, as well as the original APIs of the timer
> > library, can then each access distinct timer lists.
> >
> > Future versions of this series will hopefully improve the names used
> > for the data structures and APIs in the timer library.
> >
> > This series depends on the following patch:
> > https://patches.dpdk.org/patch/48417/
> >
> > [1] https://doc.dpdk.org/guides/prog_guide/event_timer_adapter.html
> > [2] https://doc.dpdk.org/guides/prog_guide/timer_lib.html
> >
> > Erik Gabriel Carrillo (3):
> >   timer: allow timer management in shared memory
> >   timer: add function to stop all timers in a list
> >   eventdev: add new software event timer adapter
> >
> >  lib/librte_eventdev/rte_event_timer_adapter.c | 687 +++++++++++-------
> --------
> >  lib/librte_timer/Makefile                     |   1 +
> >  lib/librte_timer/rte_timer.c                  | 579 ++++++++++++++++++----
> >  lib/librte_timer/rte_timer.h                  | 200 +++++++-
> >  lib/librte_timer/rte_timer_version.map        |  22 +-
> >  5 files changed, 972 insertions(+), 517 deletions(-)
> >
> > --
> > 2.6.4
> >