DPDK patches and discussions
 help / color / mirror / Atom feed
From: sreenaath vasudevan <sreenaathkv@gmail.com>
To: "Dumitrescu, Cristian" <cristian.dumitrescu@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] DPDK-QoS - link sharing across classes
Date: Thu, 18 Feb 2016 12:01:12 -0800	[thread overview]
Message-ID: <CAJXCTan1=gqAT4E2bLJO+Unk-=sA-m4UK7Rpfpn5qd9h=raOfw@mail.gmail.com> (raw)
In-Reply-To: <3EB4FA525960D640B5BDFFD6A3D8912647952060@IRSMSX108.ger.corp.intel.com>

Hi Cristian
Thanks for detailed response.
Your solution works so long as I have four queues in my current
implementation.

Following are the two issues I have now
1. I have 8 queues in the current implementation. This means I need to map
the existing 8 queues to two sets of 4 queues across two different classes
(C0 and C1) in DPDK-QOs right? The problem with that approach is that queue
weights are not relative across classes. Is there a way to work around this?
2. B/w redistribution -
     a) The moment I map the current implementation's 8 queues across two
different classes (say C0 and C1), would remaining b/w be distributed
across the two classes C0 and C1? Is it true that in the current DPDK-QoS
implementation, unused b/w gets distributed only to the last class C3?
Would not un-used b/w from C0 come to C1?
     b) In current DPDK QoS implemention, if C1 has un-used b/w would that
get used by C0? Or is it only "lower priority class (C3, more specifically)
uses the un-used b/w from higher priority classes (C0,C1,C2) ?




On Tue, Feb 16, 2016 at 2:46 PM, Dumitrescu, Cristian <
cristian.dumitrescu@intel.com> wrote:

>
>
> > -----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
>



-- 
regards
sreenaath

  reply	other threads:[~2016-02-18 20:01 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
2016-02-18 20:01   ` sreenaath vasudevan [this message]
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='CAJXCTan1=gqAT4E2bLJO+Unk-=sA-m4UK7Rpfpn5qd9h=raOfw@mail.gmail.com' \
    --to=sreenaathkv@gmail.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    /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).