mbox series

[net-next,v7,00/10] net: sched: add Flow Queue PIE packet scheduler

Message ID 20200122182233.3940-1-gautamramk@gmail.com
Headers show
Series net: sched: add Flow Queue PIE packet scheduler | expand

Message

Gautam Ramakrishnan Jan. 22, 2020, 6:22 p.m. UTC
From: Gautam Ramakrishnan <gautamramk@gmail.com>

Flow Queue PIE packet scheduler

This patch series implements the Flow Queue Proportional
Integral controller Enhanced (FQ-PIE) active queue
Management algorithm. It is an enhancement over the PIE
algorithm. It integrates the PIE aqm with a deficit round robin
scheme.

FQ-PIE is implemented over the latest version of PIE which
uses timestamps to calculate queue delay with an additional
option of using average dequeue rate to calculate the queue
delay. This patch also adds a memory limit of all the packets
across all queues to a default value of 32Mb.

 - Patch #1
   - Creates pie.h and moves all small functions and structures
     common to PIE and FQ-PIE here. The functions are all made
     inline.
 - Patch #2 - #8
   - Addresses code formatting, indentation, comment changes
     and rearrangement of structure members.
 - Patch #9
   - Refactors sch_pie.c by changing arguments to
     calculate_probability(), [pie_]drop_early() and
     pie_process_dequeue() to make it generic enough to
     be used by sch_fq_pie.c. These functions are exported
     to be used by sch_fq_pie.c.
 - Patch #10
   - Adds the FQ-PIE Qdisc.

For more information:
https://tools.ietf.org/html/rfc8033

Changes from v6 to v7
 - Call tcf_block_put() when destroying the Qdisc as suggested
   by Jakub Kicinski.

Changes from v5 to v6
 - Rearranged struct members according to their access pattern
   and to remove holes.

Changes from v4 to v5
 - This patch series breaks down patch 1 of v4 into
   separate logical commits as suggested by David Miller.

Changes from v3 to v4
 - Used non deprecated version of nla_parse_nested
 - Used SZ_32M macro
 - Removed an unused variable
 - Code cleanup
 All suggested by Jakub and Toke.

Changes from v2 to v3
 - Exported drop_early, pie_process_dequeue and
   calculate_probability functions from sch_pie as
   suggested by Stephen Hemminger.

Changes from v1 ( and RFC patch) to v2
 - Added timestamp to calculate queue delay as recommended
   by Dave Taht
 - Packet memory limit implemented as recommended by Toke.
 - Added external classifier as recommended by Toke.
 - Used NET_XMIT_CN instead of NET_XMIT_DROP as the return
   value in the fq_pie_qdisc_enqueue function.


Mohit P. Tahiliani (10):
  net: sched: pie: move common code to pie.h
  pie: use U64_MAX to denote (2^64 - 1)
  pie: rearrange macros in order of length
  pie: use u8 instead of bool in pie_vars
  pie: rearrange structure members and their initializations
  pie: improve comments and commenting style
  net: sched: pie: fix commenting
  net: sched: pie: fix alignment in struct instances
  net: sched: pie: export symbols to be reused by FQ-PIE
  net: sched: add Flow Queue PIE packet scheduler

 include/net/pie.h              | 138 ++++++++
 include/uapi/linux/pkt_sched.h |  31 ++
 net/sched/Kconfig              |  13 +
 net/sched/Makefile             |   1 +
 net/sched/sch_fq_pie.c         | 562 +++++++++++++++++++++++++++++++++
 net/sched/sch_pie.c            | 289 ++++++-----------
 6 files changed, 849 insertions(+), 185 deletions(-)
 create mode 100644 include/net/pie.h
 create mode 100644 net/sched/sch_fq_pie.c

Comments

David Miller Jan. 23, 2020, 10:39 a.m. UTC | #1
From: gautamramk@gmail.com
Date: Wed, 22 Jan 2020 23:52:23 +0530

> From: Gautam Ramakrishnan <gautamramk@gmail.com>
> 
> Flow Queue PIE packet scheduler
> 
> This patch series implements the Flow Queue Proportional
> Integral controller Enhanced (FQ-PIE) active queue
> Management algorithm. It is an enhancement over the PIE
> algorithm. It integrates the PIE aqm with a deficit round robin
> scheme.
> 
> FQ-PIE is implemented over the latest version of PIE which
> uses timestamps to calculate queue delay with an additional
> option of using average dequeue rate to calculate the queue
> delay. This patch also adds a memory limit of all the packets
> across all queues to a default value of 32Mb.
> 
>  - Patch #1
>    - Creates pie.h and moves all small functions and structures
>      common to PIE and FQ-PIE here. The functions are all made
>      inline.
>  - Patch #2 - #8
>    - Addresses code formatting, indentation, comment changes
>      and rearrangement of structure members.
>  - Patch #9
>    - Refactors sch_pie.c by changing arguments to
>      calculate_probability(), [pie_]drop_early() and
>      pie_process_dequeue() to make it generic enough to
>      be used by sch_fq_pie.c. These functions are exported
>      to be used by sch_fq_pie.c.
>  - Patch #10
>    - Adds the FQ-PIE Qdisc.
> 
> For more information:
> https://tools.ietf.org/html/rfc8033

Series applied, thank you.
Gautam Ramakrishnan Jan. 23, 2020, 4:14 p.m. UTC | #2
On Thu, Jan 23, 2020 at 4:09 PM David Miller <davem@davemloft.net> wrote:
>
> From: gautamramk@gmail.com
> Date: Wed, 22 Jan 2020 23:52:23 +0530
>
> > From: Gautam Ramakrishnan <gautamramk@gmail.com>
> >
> > Flow Queue PIE packet scheduler
> >
> > This patch series implements the Flow Queue Proportional
> > Integral controller Enhanced (FQ-PIE) active queue
> > Management algorithm. It is an enhancement over the PIE
> > algorithm. It integrates the PIE aqm with a deficit round robin
> > scheme.
> >
> > FQ-PIE is implemented over the latest version of PIE which
> > uses timestamps to calculate queue delay with an additional
> > option of using average dequeue rate to calculate the queue
> > delay. This patch also adds a memory limit of all the packets
> > across all queues to a default value of 32Mb.
> >
> >  - Patch #1
> >    - Creates pie.h and moves all small functions and structures
> >      common to PIE and FQ-PIE here. The functions are all made
> >      inline.
> >  - Patch #2 - #8
> >    - Addresses code formatting, indentation, comment changes
> >      and rearrangement of structure members.
> >  - Patch #9
> >    - Refactors sch_pie.c by changing arguments to
> >      calculate_probability(), [pie_]drop_early() and
> >      pie_process_dequeue() to make it generic enough to
> >      be used by sch_fq_pie.c. These functions are exported
> >      to be used by sch_fq_pie.c.
> >  - Patch #10
> >    - Adds the FQ-PIE Qdisc.
> >
> > For more information:
> > https://tools.ietf.org/html/rfc8033
>
> Series applied, thank you.
Thanks for the reviews and for applying the patch series.