All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: Akshat Kakkar <akshat.1984@gmail.com>,
	netdev <netdev@vger.kernel.org>, lartc <lartc@vger.kernel.org>
Cc: cake@lists.bufferbloat.net
Subject: Re: Cake not doing rate limiting in a way it is expected to do
Date: Tue, 28 May 2019 09:31:40 +0000	[thread overview]
Message-ID: <875zpvvsar.fsf@toke.dk> (raw)
In-Reply-To: <CAA5aLPgz2Pzi5qNZkHwtN=fEXEwRpCQYFUkEzRWkdT39+YNWFA@mail.gmail.com>

[ adding cake list ]

Akshat Kakkar <akshat.1984@gmail.com> writes:

> Cake is expected to handle traffic in 2 steps :
> First is on the basis of host
> Second is within every host, on the basis of flow
>
> So, if I limit traffic to 20Mbps shared across 2 host A & B,
> Following are various scenarios, expectation and observations
> 1. If either A or B is downloading, they will be getting speed of 20Mbps
> Observation: Meeting with expectation
>
> 2. If both A & B downloads (single download each), each will be
> getting speed of 20Mbps
> Observation: Meeting with expecation but its very jittery (around
> 20%), i.e. speed varies from 8Mbps to 12 Mbps. If I use fq_codel speed
> is same BUT jitter is very less (around 1%).
>
> 3. Now if A starts 3 downloads, and B is still having single download,
> A each download should be around 3.3 Mbps and B should be around
> 10Mbps
> Observation: Around 5 Mbps for each download with lot of jitter, i.e.
> no advantage of having CAKE!!!
>
> Linux Kernel 4.20
> For case 3, output of command : tc -s class show dev eno2
>
> class htb 1:1 root leaf 8003: prio 1 rate 20000Kbit ceil 20000Kbit
> burst 200Kb cburst 1600b
>  Sent 688474645 bytes 455058 pkt (dropped 0, overlimits 381196 requeues 0)
>  rate 19874Kbit 1641pps backlog 21196b 14p requeues 0
>  lended: 382532 borrowed: 0 giants: 0
>  tokens: 1260573 ctokens: -9427
>
> class cake 8003:44f parent 8003:
>  (dropped 3404, overlimits 0 requeues 0)
>  backlog 9084b 6p requeues 0
> class cake 8003:516 parent 8003:
>  (dropped 3565, overlimits 0 requeues 0)
>  backlog 0b 0p requeues 0
> class cake 8003:590 parent 8003:
>  (dropped 3023, overlimits 0 requeues 0)
>  backlog 4542b 3p requeues 0
> class cake 8003:605 parent 8003:
>  (dropped 1772, overlimits 0 requeues 0)
>  backlog 7570b 5p requeues 0

Could you please share some more details of your setup? The output of
`tc -s qdisc show dev eno2`?

How are you running the download tests? Is this over the internet, or in
a controlled setup? What's your actual line rate? Are you using ingress
shaping as well?

It looks like you are using HTB for rate limiting on top of CAKE? Why?

-Toke

WARNING: multiple messages have this Message-ID (diff)
From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: Akshat Kakkar <akshat.1984@gmail.com>,
	netdev <netdev@vger.kernel.org>, lartc <lartc@vger.kernel.org>
Cc: cake@lists.bufferbloat.net
Subject: Re: Cake not doing rate limiting in a way it is expected to do
Date: Tue, 28 May 2019 11:31:40 +0200	[thread overview]
Message-ID: <875zpvvsar.fsf@toke.dk> (raw)
In-Reply-To: <CAA5aLPgz2Pzi5qNZkHwtN=fEXEwRpCQYFUkEzRWkdT39+YNWFA@mail.gmail.com>

[ adding cake list ]

Akshat Kakkar <akshat.1984@gmail.com> writes:

> Cake is expected to handle traffic in 2 steps :
> First is on the basis of host
> Second is within every host, on the basis of flow
>
> So, if I limit traffic to 20Mbps shared across 2 host A & B,
> Following are various scenarios, expectation and observations
> 1. If either A or B is downloading, they will be getting speed of 20Mbps
> Observation: Meeting with expectation
>
> 2. If both A & B downloads (single download each), each will be
> getting speed of 20Mbps
> Observation: Meeting with expecation but its very jittery (around
> 20%), i.e. speed varies from 8Mbps to 12 Mbps. If I use fq_codel speed
> is same BUT jitter is very less (around 1%).
>
> 3. Now if A starts 3 downloads, and B is still having single download,
> A each download should be around 3.3 Mbps and B should be around
> 10Mbps
> Observation: Around 5 Mbps for each download with lot of jitter, i.e.
> no advantage of having CAKE!!!
>
> Linux Kernel 4.20
> For case 3, output of command : tc -s class show dev eno2
>
> class htb 1:1 root leaf 8003: prio 1 rate 20000Kbit ceil 20000Kbit
> burst 200Kb cburst 1600b
>  Sent 688474645 bytes 455058 pkt (dropped 0, overlimits 381196 requeues 0)
>  rate 19874Kbit 1641pps backlog 21196b 14p requeues 0
>  lended: 382532 borrowed: 0 giants: 0
>  tokens: 1260573 ctokens: -9427
>
> class cake 8003:44f parent 8003:
>  (dropped 3404, overlimits 0 requeues 0)
>  backlog 9084b 6p requeues 0
> class cake 8003:516 parent 8003:
>  (dropped 3565, overlimits 0 requeues 0)
>  backlog 0b 0p requeues 0
> class cake 8003:590 parent 8003:
>  (dropped 3023, overlimits 0 requeues 0)
>  backlog 4542b 3p requeues 0
> class cake 8003:605 parent 8003:
>  (dropped 1772, overlimits 0 requeues 0)
>  backlog 7570b 5p requeues 0

Could you please share some more details of your setup? The output of
`tc -s qdisc show dev eno2`?

How are you running the download tests? Is this over the internet, or in
a controlled setup? What's your actual line rate? Are you using ingress
shaping as well?

It looks like you are using HTB for rate limiting on top of CAKE? Why?

-Toke

  reply	other threads:[~2019-05-28  9:31 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-28  6:11 Cake not doing rate limiting in a way it is expected to do Akshat Kakkar
2019-05-28  6:23 ` Akshat Kakkar
2019-05-28  9:31 ` Toke Høiland-Jørgensen [this message]
2019-05-28  9:31   ` Toke Høiland-Jørgensen
2019-05-28 16:01   ` Akshat Kakkar
2019-05-28 16:13     ` Akshat Kakkar
2019-05-28 16:20     ` Toke Høiland-Jørgensen
2019-05-28 16:20       ` Toke Høiland-Jørgensen
2020-01-10 12:42       ` Akshat Kakkar
2020-01-10 12:54         ` Akshat Kakkar

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=875zpvvsar.fsf@toke.dk \
    --to=toke@redhat.com \
    --cc=akshat.1984@gmail.com \
    --cc=cake@lists.bufferbloat.net \
    --cc=lartc@vger.kernel.org \
    --cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.