DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Dumitrescu, Cristian" <cristian.dumitrescu@intel.com>
To: sreenaath vasudevan <sreenaathkv@gmail.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] DPDK-QoS - link sharing across classes
Date: Tue, 16 Feb 2016 22:46:58 +0000	[thread overview]
Message-ID: <3EB4FA525960D640B5BDFFD6A3D8912647952060@IRSMSX108.ger.corp.intel.com> (raw)
In-Reply-To: <CAJXCTamqoad8Oeo-u-Vp+tUStr9q4WkzEko-kr-WKuX38h8SKg@mail.gmail.com>



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of sreenaath
> vasudevan
> Sent: Tuesday, February 2, 2016 9:09 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] DPDK-QoS - link sharing across classes
> 
> Hi
> I currently have QoS implemented in hardware and I am thinking of using
> DPDK's QoS feature to move it to software.
> Currently in the hardware,Based on the 4 class per pipe and 4 queues per
> class limitation, I was thinking of using 4 classes in DPDK-QoS and spread
> out the 8 h/w queues across the 4 classes.
> Let me explain with an example. Currently, this is how the h/w queue is
> represented
> Q0 - 10% b/w
> Q1- 10%  b/w
> Q2- 15% b/w
> Q3 - 15% b/w
> Q4 - 15% b/w
> Q5 - 15% b/w
> Q6 - 10% b/w
> Q7 - 10% b/w
> 
> Translating the above config to DPDK-QoS, based on my application need, Q0
> and Q1 can be logically grouped under class0 with upper b/w = 20%; Q2, Q3,
> Q4, Q5 can be logically grouped under class2 with upper b/w = 60%; Q6 and
> Q7 can be logically grouped under class 3 with super b/w = 20%.
> 
> However, in the h/w, link sharing is available across all the 8 queues.
> DPDK materials say link sharing "typically" is enabled for last class, in
> this case class2. However, I also want class 1 or class 0 to use the
> remaining bandwidth when class2 does not have any traffic and so on. Can
> this be done in DPDK ? Do we have a concept of min and max b/w guarantee
> at
> the class level in DPDK-QoS ?

Your requirements seem to be:
- minimal rate for each class (with rates fully provisioned, i.e. sum of rate not exceeding 100%)
- avoid b/w waste by redistributing unused b/w to the traffic classes that currently have traffic according to their relative weights

In our implementation, traffic classes are scheduled in strict priority (with upper limit defined, to avoid starvation), so TC0 traffic is always prioritized for the current pipe over TC1 .. TC3 traffic (as long as current pipe has TC0 traffic and pipe TC0 rate is not reached). Therefore, the traffic class hierarchy level is not going to help you here.

On the other hand, if you map all your queues/traffic classes to the queues of one of our pipe traffic classes (it does not matter which one of TC0 .. TC3 you pick, as long as you pick just one), your requirements become possible, as we have 4 queues per each pipe traffic class, and they are scheduled using weighted fair queuing (byte-level weighted round robin). Simply map your class0  to our pipe TC0 queue 0 (weight of 20%), your class2 to our pipe TC0 queue 1 (weight of 60%) and your class3 to our pipe TC0 queue 2 (weight of 20%), with our pipe TC0 queue 3 unused, which should work exactly what you need. Makes sense?

Regards,
Cristian

> 
> Thanks !
> 
> --
> regards
> sreenaath

  reply	other threads:[~2016-02-16 22:47 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-02 21:09 sreenaath vasudevan
2016-02-16 22:46 ` Dumitrescu, Cristian [this message]
2016-02-18 20:01   ` sreenaath vasudevan
2016-02-19 15:02     ` Dumitrescu, Cristian
2016-02-24  0:55       ` sreenaath vasudevan
2016-02-24 11:02         ` Dumitrescu, Cristian
2016-02-24 23:22           ` sreenaath vasudevan
2016-02-25 18:22             ` Dumitrescu, Cristian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3EB4FA525960D640B5BDFFD6A3D8912647952060@IRSMSX108.ger.corp.intel.com \
    --to=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=sreenaathkv@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).