mbox series

[v24,0/3] Add PIE support for HQoS library

Message ID 20211104145548.59747-1-thomas@monjalon.net (mailing list archive)
Headers
Series Add PIE support for HQoS library |

Message

Thomas Monjalon Nov. 4, 2021, 2:55 p.m. UTC
  last changes to make this series "more acceptable":
- RTE_SCHED_CMAN in rte_config.h, replacing RTE_SCHED_RED
- test file listed in MAINTAINERS
- few whitespaces fixed


From: Wojciech Liguzinski <wojciechx.liguzinski@intel.com>

DPDK sched library is equipped with mechanism that secures it from the bufferbloat problem
which is a situation when excess buffers in the network cause high latency and latency
variation. Currently, it supports RED for active queue management. However, more
advanced queue management is required to address this problem and provide desirable
quality of service to users.

This solution (RFC) proposes usage of new algorithm called "PIE" (Proportional Integral
controller Enhanced) that can effectively and directly control queuing latency to address
the bufferbloat problem.

The implementation of mentioned functionality includes modification of existing and
adding a new set of data structures to the library, adding PIE related APIs.
This affects structures in public API/ABI. That is why deprecation notice is going
to be prepared and sent.

Wojciech Liguzinski (3):
  sched: add PIE based congestion management
  examples/qos_sched: support PIE congestion management
  examples/ip_pipeline: support PIE congestion management

 MAINTAINERS                                  |    1 +
 app/test/meson.build                         |    4 +
 app/test/test_pie.c                          | 1065 ++++++++++++++++++
 config/rte_config.h                          |    2 +-
 doc/guides/prog_guide/glossary.rst           |    3 +
 doc/guides/prog_guide/qos_framework.rst      |   64 +-
 doc/guides/prog_guide/traffic_management.rst |   13 +-
 drivers/net/softnic/rte_eth_softnic_tm.c     |    6 +-
 examples/ip_pipeline/tmgr.c                  |  142 +--
 examples/qos_sched/cfg_file.c                |  127 ++-
 examples/qos_sched/cfg_file.h                |    5 +
 examples/qos_sched/init.c                    |   27 +-
 examples/qos_sched/main.h                    |    3 +
 examples/qos_sched/profile.cfg               |  196 ++--
 lib/sched/meson.build                        |    3 +-
 lib/sched/rte_pie.c                          |   86 ++
 lib/sched/rte_pie.h                          |  396 +++++++
 lib/sched/rte_sched.c                        |  256 +++--
 lib/sched/rte_sched.h                        |   64 +-
 lib/sched/version.map                        |    4 +
 20 files changed, 2185 insertions(+), 282 deletions(-)
 create mode 100644 app/test/test_pie.c
 create mode 100644 lib/sched/rte_pie.c
 create mode 100644 lib/sched/rte_pie.h
  

Comments

Thomas Monjalon Nov. 4, 2021, 3:07 p.m. UTC | #1
04/11/2021 15:55, Thomas Monjalon:
> last changes to make this series "more acceptable":
> - RTE_SCHED_CMAN in rte_config.h, replacing RTE_SCHED_RED
> - test file listed in MAINTAINERS
> - few whitespaces fixed

Applied this last version.

The maintainers of this library didn't help really.
Review of basic stuff and process well known by maintainers were not done.
Even after doing these last changes myself, this library is still in a poor state.
The most problematic is the big amount of dead code disabled in config/rte_config.h:
	#undef RTE_SCHED_CMAN
	#undef RTE_SCHED_COLLECT_STATS
	#undef RTE_SCHED_SUBPORT_TC_OV
	#define RTE_SCHED_PORT_N_GRINDERS 8
	#undef RTE_SCHED_VECTOR

I think the most appropriate going forward is to stop merging any feature
in the libraries and examples related to sched and pipeline,
until a proper resolution is done for this dead code.
Tips: make runtime options and properly document them.

Note: I probably won't reply to this thread until 21.11 is done,
because I have other priorities and I don't want to hear about this for some time.