From patchwork Tue May 28 12:05:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Krakowiak X-Patchwork-Id: 53734 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 80CF73576; Tue, 28 May 2019 14:08:09 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id D1F84137D for ; Tue, 28 May 2019 14:08:07 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 May 2019 05:08:05 -0700 X-ExtLoop1: 1 Received: from lkrakowx-mobl.ger.corp.intel.com ([10.103.104.99]) by fmsmga001.fm.intel.com with ESMTP; 28 May 2019 05:08:04 -0700 From: Lukasz Krakowiak To: cristian.dumitrescu@intel.com Cc: dev@dpdk.org, Lukasz Krakowiak Date: Tue, 28 May 2019 14:05:26 +0200 Message-Id: <20190528120553.2992-1-lukaszx.krakowiak@intel.com> X-Mailer: git-send-email 2.19.2.windows.1 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 00/27] sched: feature enhancements X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patchset refactors the dpdk qos sched library to add following features to enhance the scheduler functionality. 1. flexibile configuration of the pipe traffic classes and queues; 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. 2. Subport level configuration of pipe nodes; Currently, all parameters for the pipe nodes (subscribers) configuration are part of the port level structure which forces all groups of subscribers (i.e. pipes) in different subports to have similar configurations in terms of their number, queue sizes, traffic-classes, etc. The new implementation moves pipe nodes configuration parameters from port level to subport level structure. Therefore, different subports of the same port can have different configuration for the pipe nodes (subscribers), for examples- number of pipes, queue sizes, queues to traffic-class mapping, etc. Jasvinder Singh (27): sched: update macros for flexible config sched: update subport and pipe data structures sched: update internal data structures sched: update port config api sched: update port free api sched: update subport config api sched: update pipe profile add api sched: update pipe config api sched: update pkt read and write api sched: update subport and tc queue stats sched: update port memory footprint api sched: update packet enqueue api sched: update grinder pipe and tc cache sched: update grinder next pipe and tc functions sched: update pipe and tc queues prefetch sched: update grinder wrr compute function sched: modify credits update function sched: update mbuf prefetch function sched: update grinder schedule function sched: update grinder handle function sched: update packet dequeue api sched: update sched queue stats api test/sched: update unit test net/softnic: update softnic tm function examples/qos_sched: update qos sched sample app examples/ip_pipeline: update ip pipeline sample app sched: code cleanup app/test/test_sched.c | 39 +- doc/guides/rel_notes/deprecation.rst | 6 - doc/guides/rel_notes/release_19_08.rst | 7 +- drivers/net/softnic/rte_eth_softnic.c | 131 ++ drivers/net/softnic/rte_eth_softnic_cli.c | 285 ++- .../net/softnic/rte_eth_softnic_internals.h | 4 +- drivers/net/softnic/rte_eth_softnic_tm.c | 89 +- examples/ip_pipeline/cli.c | 85 +- examples/ip_pipeline/tmgr.c | 21 +- examples/ip_pipeline/tmgr.h | 3 - examples/qos_sched/app_thread.c | 11 +- examples/qos_sched/cfg_file.c | 282 ++- examples/qos_sched/init.c | 110 +- examples/qos_sched/main.h | 6 +- examples/qos_sched/profile.cfg | 59 +- examples/qos_sched/profile_ov.cfg | 47 +- examples/qos_sched/stats.c | 152 +- 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 | 2015 ++++++++++------- lib/librte_sched/rte_sched.h | 147 +- lib/librte_sched/rte_sched_common.h | 33 + 24 files changed, 2314 insertions(+), 1227 deletions(-)