mbox series

[v5,00/11] sched: feature enhancements

Message ID 20190717144245.138876-1-jasvinder.singh@intel.com (mailing list archive)
Headers
Series sched: feature enhancements |

Message

Jasvinder Singh July 17, 2019, 2:42 p.m. UTC
  This patchset refactors the dpdk qos sched library to allow flexibile
configuration of the pipe traffic classes and queue sizes.

Currently, each pipe has 16 queues hardwired into 4 TCs scheduled with
strict priority, and each TC has exactly with 4 queues that are
scheduled with Weighted Fair Queuing (WFQ).

Instead of hardwiring queues to traffic class within the specific pipe,
the new implementation allows more flexible/configurable split of pipe
queues between strict priority (SP) and best-effort (BE) traffic classes
along with the support of more number of traffic classes i.e. max 16.
   
All the high priority TCs (TC1, TC2, ...) have exactly 1 queue, while
the lowest priority BE TC, has 1, 4 or 8 queues. This is justified by
the fact that all the high priority TCs are fully provisioned (small to
medium traffic rates), while most of the traffic fits into the BE class,
which is typically oversubscribed.

Furthermore, this change allows to use less than 16 queues per pipe when
not all the 16 queues are needed. Therefore, no memory will be allocated
to the queues that are not needed.

v5:
- fix traffic class and queue mapping in api function
- remove n_be_queues parameter from internal pipe profile and pipe struct
- replace int multiplication in grinder_schedule func with bitwise & operation
- remove TC_OV logic flag from all the configuration/initialization code
- fix traffic qsize per traffic class instead of individual queue of the pipe

v4:
- fix build errors
- fix checkpatch errors

v3:
- remove code related to subport level configuration of the pipe 
- remove tc oversubscription flag from struct rte_sched_pipe_params
- replace RTE_SCHED_PIPE_PROFILES_PER_PORT with port param field

v2:
- fix bug in subport parameters check
- remove redundant RTE_SCHED_SUBPORT_PER_PORT macro
- fix bug in grinder_scheduler function
- improve doxygen comments 
- add error log information

Jasvinder Singh (11):
  sched: remove wrr from strict priority tc queues
  sched: add config flexibility to tc queue sizes
  sched: add max pipe profiles config in run time
  sched: rename tc3 params to best-effort tc
  sched: improve error log messages
  sched: improve doxygen comments
  net/softnic: add config flexibility to softnic tm
  test_sched: modify tests for config flexibility
  examples/ip_pipeline: add config flexibility to tm function
  examples/qos_sched: add tc and queue config flexibility
  sched: remove redundant macros

 app/test/test_sched.c                         |  15 +-
 doc/guides/rel_notes/release_19_08.rst        |  10 +-
 drivers/net/softnic/rte_eth_softnic.c         |  98 ++
 drivers/net/softnic/rte_eth_softnic_cli.c     | 448 +++++++++-
 .../net/softnic/rte_eth_softnic_internals.h   |   6 +-
 drivers/net/softnic/rte_eth_softnic_tm.c      | 121 ++-
 examples/ip_pipeline/cli.c                    |  43 +-
 examples/ip_pipeline/tmgr.h                   |   4 +-
 examples/qos_sched/app_thread.c               |  11 +-
 examples/qos_sched/cfg_file.c                 | 130 ++-
 examples/qos_sched/init.c                     |  65 +-
 examples/qos_sched/main.h                     |   4 +
 examples/qos_sched/profile.cfg                |  67 +-
 examples/qos_sched/profile_ov.cfg             |  54 +-
 examples/qos_sched/stats.c                    | 517 ++++++-----
 lib/librte_pipeline/rte_table_action.c        |   1 -
 lib/librte_pipeline/rte_table_action.h        |   4 +-
 lib/librte_sched/Makefile                     |   2 +-
 lib/librte_sched/meson.build                  |   2 +-
 lib/librte_sched/rte_sched.c                  | 835 +++++++++++-------
 lib/librte_sched/rte_sched.h                  | 183 ++--
 21 files changed, 1847 insertions(+), 773 deletions(-)
  

Comments

Cristian Dumitrescu July 18, 2019, 10:57 p.m. UTC | #1
> -----Original Message-----
> From: Singh, Jasvinder
> Sent: Wednesday, July 17, 2019 4:43 PM
> To: dev@dpdk.org
> Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Subject: [PATCH v5 00/11] sched: feature enhancements
> 
> This patchset refactors the dpdk qos sched library to allow flexibile
> configuration of the pipe traffic classes and queue sizes.
> 
> Currently, each pipe has 16 queues hardwired into 4 TCs scheduled with
> strict priority, and each TC has exactly with 4 queues that are
> scheduled with Weighted Fair Queuing (WFQ).
> 
> Instead of hardwiring queues to traffic class within the specific pipe,
> the new implementation allows more flexible/configurable split of pipe
> queues between strict priority (SP) and best-effort (BE) traffic classes
> along with the support of more number of traffic classes i.e. max 16.
> 
> All the high priority TCs (TC1, TC2, ...) have exactly 1 queue, while
> the lowest priority BE TC, has 1, 4 or 8 queues. This is justified by
> the fact that all the high priority TCs are fully provisioned (small to
> medium traffic rates), while most of the traffic fits into the BE class,
> which is typically oversubscribed.
> 
> Furthermore, this change allows to use less than 16 queues per pipe when
> not all the 16 queues are needed. Therefore, no memory will be allocated
> to the queues that are not needed.
> 
> v5:
> - fix traffic class and queue mapping in api function
> - remove n_be_queues parameter from internal pipe profile and pipe struct
> - replace int multiplication in grinder_schedule func with bitwise & operation
> - remove TC_OV logic flag from all the configuration/initialization code
> - fix traffic qsize per traffic class instead of individual queue of the pipe
> 
> v4:
> - fix build errors
> - fix checkpatch errors
> 
> v3:
> - remove code related to subport level configuration of the pipe
> - remove tc oversubscription flag from struct rte_sched_pipe_params
> - replace RTE_SCHED_PIPE_PROFILES_PER_PORT with port param field
> 
> v2:
> - fix bug in subport parameters check
> - remove redundant RTE_SCHED_SUBPORT_PER_PORT macro
> - fix bug in grinder_scheduler function
> - improve doxygen comments
> - add error log information
> 
> Jasvinder Singh (11):
>   sched: remove wrr from strict priority tc queues
>   sched: add config flexibility to tc queue sizes
>   sched: add max pipe profiles config in run time
>   sched: rename tc3 params to best-effort tc
>   sched: improve error log messages
>   sched: improve doxygen comments
>   net/softnic: add config flexibility to softnic tm
>   test_sched: modify tests for config flexibility
>   examples/ip_pipeline: add config flexibility to tm function
>   examples/qos_sched: add tc and queue config flexibility
>   sched: remove redundant macros
> 
>  app/test/test_sched.c                         |  15 +-
>  doc/guides/rel_notes/release_19_08.rst        |  10 +-
>  drivers/net/softnic/rte_eth_softnic.c         |  98 ++
>  drivers/net/softnic/rte_eth_softnic_cli.c     | 448 +++++++++-
>  .../net/softnic/rte_eth_softnic_internals.h   |   6 +-
>  drivers/net/softnic/rte_eth_softnic_tm.c      | 121 ++-
>  examples/ip_pipeline/cli.c                    |  43 +-
>  examples/ip_pipeline/tmgr.h                   |   4 +-
>  examples/qos_sched/app_thread.c               |  11 +-
>  examples/qos_sched/cfg_file.c                 | 130 ++-
>  examples/qos_sched/init.c                     |  65 +-
>  examples/qos_sched/main.h                     |   4 +
>  examples/qos_sched/profile.cfg                |  67 +-
>  examples/qos_sched/profile_ov.cfg             |  54 +-
>  examples/qos_sched/stats.c                    | 517 ++++++-----
>  lib/librte_pipeline/rte_table_action.c        |   1 -
>  lib/librte_pipeline/rte_table_action.h        |   4 +-
>  lib/librte_sched/Makefile                     |   2 +-
>  lib/librte_sched/meson.build                  |   2 +-
>  lib/librte_sched/rte_sched.c                  | 835 +++++++++++-------
>  lib/librte_sched/rte_sched.h                  | 183 ++--
>  21 files changed, 1847 insertions(+), 773 deletions(-)
> 
> --
> 2.21.0

Series-acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

See the replies on some individual patches for a few details that we should fix for RC3 if we cannot get them done in time for RC2.
  
Thomas Monjalon July 19, 2019, 10:41 a.m. UTC | #2
19/07/2019 00:57, Dumitrescu, Cristian:
> > Jasvinder Singh (11):
> >   sched: remove wrr from strict priority tc queues
> >   sched: add config flexibility to tc queue sizes
> >   sched: add max pipe profiles config in run time
> >   sched: rename tc3 params to best-effort tc
> >   sched: improve error log messages
> >   sched: improve doxygen comments
> >   net/softnic: add config flexibility to softnic tm
> >   test_sched: modify tests for config flexibility
> >   examples/ip_pipeline: add config flexibility to tm function
> >   examples/qos_sched: add tc and queue config flexibility
> >   sched: remove redundant macros
> 
> Series-acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> 
> See the replies on some individual patches for a few details
> that we should fix for RC3 if we cannot get them done in time for RC2.

I am waiting for a v6.
  
Jasvinder Singh July 19, 2019, 11:16 a.m. UTC | #3
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Friday, July 19, 2019 11:41 AM
> To: Singh, Jasvinder <jasvinder.singh@intel.com>
> Cc: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v5 00/11] sched: feature enhancements
> 
> 19/07/2019 00:57, Dumitrescu, Cristian:
> > > Jasvinder Singh (11):
> > >   sched: remove wrr from strict priority tc queues
> > >   sched: add config flexibility to tc queue sizes
> > >   sched: add max pipe profiles config in run time
> > >   sched: rename tc3 params to best-effort tc
> > >   sched: improve error log messages
> > >   sched: improve doxygen comments
> > >   net/softnic: add config flexibility to softnic tm
> > >   test_sched: modify tests for config flexibility
> > >   examples/ip_pipeline: add config flexibility to tm function
> > >   examples/qos_sched: add tc and queue config flexibility
> > >   sched: remove redundant macros
> >
> > Series-acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> >
> > See the replies on some individual patches for a few details that we
> > should fix for RC3 if we cannot get them done in time for RC2.
> 
> I am waiting for a v6.
> 
Can these suggestions be fixed in RC3  as separate patch as they doesn't change any functionality? Thanks.
  
Thomas Monjalon July 19, 2019, 11:40 a.m. UTC | #4
19/07/2019 13:16, Singh, Jasvinder:
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > 19/07/2019 00:57, Dumitrescu, Cristian:
> > > > Jasvinder Singh (11):
> > > >   sched: remove wrr from strict priority tc queues
> > > >   sched: add config flexibility to tc queue sizes
> > > >   sched: add max pipe profiles config in run time
> > > >   sched: rename tc3 params to best-effort tc
> > > >   sched: improve error log messages
> > > >   sched: improve doxygen comments
> > > >   net/softnic: add config flexibility to softnic tm
> > > >   test_sched: modify tests for config flexibility
> > > >   examples/ip_pipeline: add config flexibility to tm function
> > > >   examples/qos_sched: add tc and queue config flexibility
> > > >   sched: remove redundant macros
> > >
> > > Series-acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> > >
> > > See the replies on some individual patches for a few details that we
> > > should fix for RC3 if we cannot get them done in time for RC2.
> > 
> > I am waiting for a v6.
> > 
> Can these suggestions be fixed in RC3  as separate patch as they doesn't change any functionality? 

No please, I prefer avoiding having too many fixes.
I already know in advance such code will have many fixes,
and you are a specialist to get things at the last minute.
And it is really late to close such change.
I feel that it is not ready for 19.08.
Please show us how you can fix things quickly.
  
Jasvinder Singh July 19, 2019, 11:42 a.m. UTC | #5
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Friday, July 19, 2019 12:41 PM
> To: Singh, Jasvinder <jasvinder.singh@intel.com>
> Cc: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v5 00/11] sched: feature enhancements
> 
> 19/07/2019 13:16, Singh, Jasvinder:
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > 19/07/2019 00:57, Dumitrescu, Cristian:
> > > > > Jasvinder Singh (11):
> > > > >   sched: remove wrr from strict priority tc queues
> > > > >   sched: add config flexibility to tc queue sizes
> > > > >   sched: add max pipe profiles config in run time
> > > > >   sched: rename tc3 params to best-effort tc
> > > > >   sched: improve error log messages
> > > > >   sched: improve doxygen comments
> > > > >   net/softnic: add config flexibility to softnic tm
> > > > >   test_sched: modify tests for config flexibility
> > > > >   examples/ip_pipeline: add config flexibility to tm function
> > > > >   examples/qos_sched: add tc and queue config flexibility
> > > > >   sched: remove redundant macros
> > > >
> > > > Series-acked-by: Cristian Dumitrescu
> > > > <cristian.dumitrescu@intel.com>
> > > >
> > > > See the replies on some individual patches for a few details that
> > > > we should fix for RC3 if we cannot get them done in time for RC2.
> > >
> > > I am waiting for a v6.
> > >
> > Can these suggestions be fixed in RC3  as separate patch as they doesn't
> change any functionality?
> 
> No please, I prefer avoiding having too many fixes.
> I already know in advance such code will have many fixes, and you are a
> specialist to get things at the last minute.
> And it is really late to close such change.
> I feel that it is not ready for 19.08.
> Please show us how you can fix things quickly.
> 
Alright, will send you v6.