Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
* [Cake] faster scheduling, maybe
@ 2016-06-06 18:24 Dave Taht
  2016-06-06 18:48 ` David Lang
  0 siblings, 1 reply; 6+ messages in thread
From: Dave Taht @ 2016-06-06 18:24 UTC (permalink / raw)
  To: cake

http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf

-- 
Dave Täht
Let's go make home routers and wifi faster! With better software!
http://blog.cerowrt.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Cake] faster scheduling, maybe
  2016-06-06 18:24 [Cake] faster scheduling, maybe Dave Taht
@ 2016-06-06 18:48 ` David Lang
  2016-06-06 18:55   ` Dave Taht
  2016-06-06 22:34   ` Benjamin Cronce
  0 siblings, 2 replies; 6+ messages in thread
From: David Lang @ 2016-06-06 18:48 UTC (permalink / raw)
  To: Dave Taht; +Cc: cake

On Mon, 6 Jun 2016, Dave Taht wrote:

> http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf

I don't think so.

They don't even try for fairness between flows, they are just looking at 
fairness between different VMs. they tell a VM that it has complete access to 
the NIC for a time, then give another VM complete access to the NIC. At best 
they put each VMs traffic into a different hardware queue in the NIC.

This avoids all AQM decisions on the part of the host OS, because the packets 
never get to the host OS.

The speed improvement is by bypassing the host OS and just having the VMs 
deliver packets directly to the NIC. This speeds things up, but at the cost of 
any coordination across VMs. Each VM can run fq_codel but it's much corser 
timeslicing between VMs.

David Lang

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Cake] faster scheduling, maybe
  2016-06-06 18:48 ` David Lang
@ 2016-06-06 18:55   ` Dave Taht
  2016-06-06 19:25     ` David Lang
  2016-06-06 22:34   ` Benjamin Cronce
  1 sibling, 1 reply; 6+ messages in thread
From: Dave Taht @ 2016-06-06 18:55 UTC (permalink / raw)
  To: David Lang; +Cc: cake

On Mon, Jun 6, 2016 at 11:48 AM, David Lang <david@lang.hm> wrote:
> On Mon, 6 Jun 2016, Dave Taht wrote:
>
>> http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf
>
>
> I don't think so.
>
> They don't even try for fairness between flows, they are just looking at
> fairness between different VMs. they tell a VM that it has complete access
> to the NIC for a time, then give another VM complete access to the NIC. At
> best they put each VMs traffic into a different hardware queue in the NIC.
>
> This avoids all AQM decisions on the part of the host OS, because the
> packets never get to the host OS.
>
> The speed improvement is by bypassing the host OS and just having the VMs
> deliver packets directly to the NIC. This speeds things up, but at the cost
> of any coordination across VMs. Each VM can run fq_codel but it's much
> corser timeslicing between VMs.


Well, the principal things bugging me are:

* that we have multi-core on nearly all the new routers.
* Nearly all the ethernet devices themselves support hardware multiqueue.
* we take 6 locks on the qdiscs
* rx and tx ring cleanup are often combined in existing drivers in a
single thread.

The chance to rework the mac80211 layer on make-wifi-fast (where
manufacturers are also busy adding hardware mq), gives us a chance to
rethink how we process access to these queues.

>
> David Lang



-- 
Dave Täht
Let's go make home routers and wifi faster! With better software!
http://blog.cerowrt.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Cake] faster scheduling, maybe
  2016-06-06 18:55   ` Dave Taht
@ 2016-06-06 19:25     ` David Lang
  0 siblings, 0 replies; 6+ messages in thread
From: David Lang @ 2016-06-06 19:25 UTC (permalink / raw)
  To: Dave Taht; +Cc: cake

On Mon, 6 Jun 2016, Dave Taht wrote:

> On Mon, Jun 6, 2016 at 11:48 AM, David Lang <david@lang.hm> wrote:
>> On Mon, 6 Jun 2016, Dave Taht wrote:
>>
>>> http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf
>>
>>
>> I don't think so.
>>
>> They don't even try for fairness between flows, they are just looking at
>> fairness between different VMs. they tell a VM that it has complete access
>> to the NIC for a time, then give another VM complete access to the NIC. At
>> best they put each VMs traffic into a different hardware queue in the NIC.
>>
>> This avoids all AQM decisions on the part of the host OS, because the
>> packets never get to the host OS.
>>
>> The speed improvement is by bypassing the host OS and just having the VMs
>> deliver packets directly to the NIC. This speeds things up, but at the cost
>> of any coordination across VMs. Each VM can run fq_codel but it's much
>> corser timeslicing between VMs.
>
>
> Well, the principal things bugging me are:
>
> * that we have multi-core on nearly all the new routers.
> * Nearly all the ethernet devices themselves support hardware multiqueue.
> * we take 6 locks on the qdiscs
> * rx and tx ring cleanup are often combined in existing drivers in a
> single thread.

These are valid concerns. But this paper just arbitrated between multiple VMs 
accessing one hardware NIC. If you don't have multiple VMs in play, their 
approach has nothing to work with.

> The chance to rework the mac80211 layer on make-wifi-fast (where
> manufacturers are also busy adding hardware mq), gives us a chance to
> rethink how we process access to these queues.

Watching the discussion I see a few things.

1. if we can figure out exactly how much data the system is going to handle, we 
can fill each queue with what we want in the next aggregate to that destination.

2. with multiple queues/cores, when we have data from different sources, we can 
route it to different cores and split the work of sorting the data into 
different queues between the cores (each working on a different subset of 
queues, so not having to lock against other cores)

2a. balancing traffic across the cores/queuesets (or at least the output from 
each of them) would be tricky, but that's where thinking like this paper could 
possibly help.

3. as we are seeing in the MAC80211 work, qdiscs operate way to early in the 
process, so we need to eliminate them for wifi and doing the queueing closer to 
the hardware. On a network where packets to different destinaions can be freely 
mixed, qdiscs can continue to operate.

for drivers where the rx and tx ring cleanup is combined, are you talking about 
ones that already go BQL? or are these drivers that need BQL added as well? it 
may be that splitting this when BQL is added is the right thing to do.

David Lang

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Cake] faster scheduling, maybe
  2016-06-06 18:48 ` David Lang
  2016-06-06 18:55   ` Dave Taht
@ 2016-06-06 22:34   ` Benjamin Cronce
  2016-06-06 22:51     ` David Lang
  1 sibling, 1 reply; 6+ messages in thread
From: Benjamin Cronce @ 2016-06-06 22:34 UTC (permalink / raw)
  To: David Lang; +Cc: Dave Taht, cake

[-- Attachment #1: Type: text/plain, Size: 1660 bytes --]

Preliminary benchmarks of new network APIs like netmap are showing 20mpps
 between guest and host for untrusted guests and 70mpps to trusted guests,
and scales near linearly with more cores. With that many pps per guest, why
not let the host do an AQM? High end service NICs support multiple virtual
devices where you can tell the NIC to evenly distribute bandwidth among the
virtual devices. It's already mostly a solved problem, just some people
reinventing the wheel. I know FreeBSD is currently looking at adding netmap
to connect the guest to the host so the guests can do line-rate 10Gb and
almost 40Gb.

On Mon, Jun 6, 2016 at 1:48 PM, David Lang <david@lang.hm> wrote:

> On Mon, 6 Jun 2016, Dave Taht wrote:
>
> http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf
>>
>
> I don't think so.
>
> They don't even try for fairness between flows, they are just looking at
> fairness between different VMs. they tell a VM that it has complete access
> to the NIC for a time, then give another VM complete access to the NIC. At
> best they put each VMs traffic into a different hardware queue in the NIC.
>
> This avoids all AQM decisions on the part of the host OS, because the
> packets never get to the host OS.
>
> The speed improvement is by bypassing the host OS and just having the VMs
> deliver packets directly to the NIC. This speeds things up, but at the cost
> of any coordination across VMs. Each VM can run fq_codel but it's much
> corser timeslicing between VMs.
>
> David Lang
>
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
>

[-- Attachment #2: Type: text/html, Size: 2496 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Cake] faster scheduling, maybe
  2016-06-06 22:34   ` Benjamin Cronce
@ 2016-06-06 22:51     ` David Lang
  0 siblings, 0 replies; 6+ messages in thread
From: David Lang @ 2016-06-06 22:51 UTC (permalink / raw)
  To: Benjamin Cronce; +Cc: Dave Taht, cake

That works as long as the right answer is to evenly share the bandwidth between 
the VMs.

But what if one VM is running a single elephant flow while another VM is a VoIP 
server with hundreds of connections? Is it still correct to split the bandwidth 
evenly between the two?

David Lang

On Mon, 6 Jun 2016, Benjamin Cronce wrote:

> Preliminary benchmarks of new network APIs like netmap are showing 20mpps
> between guest and host for untrusted guests and 70mpps to trusted guests,
> and scales near linearly with more cores. With that many pps per guest, why
> not let the host do an AQM? High end service NICs support multiple virtual
> devices where you can tell the NIC to evenly distribute bandwidth among the
> virtual devices. It's already mostly a solved problem, just some people
> reinventing the wheel. I know FreeBSD is currently looking at adding netmap
> to connect the guest to the host so the guests can do line-rate 10Gb and
> almost 40Gb.
>
> On Mon, Jun 6, 2016 at 1:48 PM, David Lang <david@lang.hm> wrote:
>
>> On Mon, 6 Jun 2016, Dave Taht wrote:
>>
>> http://info.iet.unipi.it/~luigi/papers/20160511-mysched-preprint.pdf
>>>
>>
>> I don't think so.
>>
>> They don't even try for fairness between flows, they are just looking at
>> fairness between different VMs. they tell a VM that it has complete access
>> to the NIC for a time, then give another VM complete access to the NIC. At
>> best they put each VMs traffic into a different hardware queue in the NIC.
>>
>> This avoids all AQM decisions on the part of the host OS, because the
>> packets never get to the host OS.
>>
>> The speed improvement is by bypassing the host OS and just having the VMs
>> deliver packets directly to the NIC. This speeds things up, but at the cost
>> of any coordination across VMs. Each VM can run fq_codel but it's much
>> corser timeslicing between VMs.
>>
>> David Lang
>>
>> _______________________________________________
>> Cake mailing list
>> Cake@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/cake
>>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-06-06 22:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-06 18:24 [Cake] faster scheduling, maybe Dave Taht
2016-06-06 18:48 ` David Lang
2016-06-06 18:55   ` Dave Taht
2016-06-06 19:25     ` David Lang
2016-06-06 22:34   ` Benjamin Cronce
2016-06-06 22:51     ` David Lang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox