[dpdk-dev] Dynamic port/pipe QoS configuration

Dumitrescu, Cristian cristian.dumitrescu at intel.com
Mon Oct 20 21:21:47 CEST 2014

Hi Satish,

Yes, you can change the pipe configuration during run-time, but in a slightly different way. The way to do it is by defining multiple pipe profiles at the port level initialization time and reassigning the pipe to a different level at run-time.

The pipe profiles are statically defined per port at initialization time (their number is configurable through rte_sched_port_params:: n_pipe_profiles parameter), so you need to know in advance the set of profiles you want to use at run-time. You can assign pipe X to profile A initially, then re-assign it to profile B later on (by using function rte_sched_pipe_config()).


From: satish <nsatishbabu at gmail.com<mailto:nsatishbabu at gmail.com>>
Date: October 17, 2014 at 2:59:35 PM PDT
To: <dev at dpdk.org<mailto:dev at dpdk.org>>
Subject: Re: [dpdk-dev] Dynamic port/pipe QoS configuration
Can someone please respond to below?
Thank you.

On Mon, Oct 13, 2014 at 3:54 PM, satish <nsatishbabu at gmail.com<mailto:nsatishbabu at gmail.com>> wrote:

We are trying to provide QoS support for one of our clients using
In our implementation we are treating each pipe as a customer.
So, we can have maximum of 4096 customers per sub-port.
Customers(pipe) can be added, deleted or modified dynamically. Each
customer can have different profiles.

Currently we are using DPDK-v1.6.
Can I modify pipe profile during run time using rte_sched_pipe_config ()?

Our plan is to have initial configs as below (similar to examples in DPDK)
[1] Specify port params at the initialization of port as below
static struct rte_sched_port_params port_param = {
.n_subports_per_port = 1,
.n_pipes_per_subport = 4096,
.qsize = {64, 64, 64, 64},
.pipe_profiles = pipe_profile,
.n_pipe_profiles = 1,

static struct rte_sched_subport_params subport_param[] = {
.tb_rate = Link speed (1G/10G..) divided by 8 (bits),
.tb_size = 1000000,

.tc_rate = {Same as tb_rate, Same as tb_rate, Same as tb_rate, Same as
.tc_period = 10,

static struct rte_sched_pipe_params pipe_profile[] = {
{ /* Profile #0 */
.tb_rate = Link speed (1G/10G..) divided by 8 (bits)/4096 (maximum number
of pipes),
.tb_size = 1000000,

.tc_rate = {pipe's tb_rate, pipe's tb_rate, pipe's tb_rate, pipe's
.tc_period = 40,

.wrr_weights = {16, 4, 2, 1,  16, 4, 2, 1,  16, 4, 2, 1,  16, 4, 2, 1},

Our plan here is to initialize the pipe with default profile and modify
each pipe based on user configurations.
My questions are
[a] Can I modify pipe profile during run time using rte_sched_pipe_config
()? (question repeated)
If I can modify at pipe level,
[b] Can we have different profiles for pipes, With one default profile at
[c] Can we modify port level params without deleting the port using
rte_sched_port_config ()?

Please provide your valuable comments.
Thanks in advance.

Satish Babu

Satish Babu
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.

More information about the dev mailing list