From patchwork Thu Jul 11 10:26:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jasvinder Singh X-Patchwork-Id: 56325 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 D5ECB3772; Thu, 11 Jul 2019 12:26:49 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id D2DB831FC for ; Thu, 11 Jul 2019 12:26:47 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jul 2019 03:26:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,478,1557212400"; d="scan'208";a="317641350" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.223.4]) by orsmga004.jf.intel.com with ESMTP; 11 Jul 2019 03:26:45 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com Date: Thu, 11 Jul 2019 11:26:48 +0100 Message-Id: <20190711102659.59001-1-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190625153217.24301-2-jasvinder.singh@intel.com> References: <20190625153217.24301-2-jasvinder.singh@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 00/11] 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 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. 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 | 12 +- doc/guides/rel_notes/release_19_08.rst | 10 +- drivers/net/softnic/rte_eth_softnic.c | 131 +++ drivers/net/softnic/rte_eth_softnic_cli.c | 433 ++++++++- .../net/softnic/rte_eth_softnic_internals.h | 8 +- drivers/net/softnic/rte_eth_softnic_tm.c | 64 +- examples/ip_pipeline/cli.c | 45 +- examples/ip_pipeline/tmgr.c | 2 +- examples/ip_pipeline/tmgr.h | 4 +- examples/qos_sched/app_thread.c | 9 +- examples/qos_sched/cfg_file.c | 119 ++- examples/qos_sched/init.c | 65 +- examples/qos_sched/main.h | 4 + examples/qos_sched/profile.cfg | 66 +- examples/qos_sched/profile_ov.cfg | 54 +- examples/qos_sched/stats.c | 483 +++++----- 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 | 842 +++++++++++------- lib/librte_sched/rte_sched.h | 182 ++-- 22 files changed, 1786 insertions(+), 756 deletions(-)