GithubHelp home page GithubHelp logo

fq_codel_fast's Introduction

FQ_CODEL_FAST

This is an attempt to make fq_codel faster and more relevant

It is intended as a drop-in replacement for the existing fq_codel code in the stack. As development procedes either feeding back these changes into the linux mainline can happen or we can fork it to be more suitable for the openwrt audience

There were also mistakes made in early development, tracking stats that aren't useful, and new features added that also weren't used, and since the major use of fq_codel is in sqm systems, adding in an fast integral shaper is a goal.

Probably override the ce_threshold for this

I also might fiddle with alternate codel ideas but first up is to make it fast. Adding in the scheduler component requires a mild rewrite of codel because it throws away the timestamp and works in a different time base.

  • also test increasing the bulk dropper signal strength

major mods

  • I always hated the search on the maxbacklog stat I'd rather it just kept track of the flow with the biggest backlog, and now that we do bulk drops, we can automagically shift to the next biggest flow most of the time in 32 (64?) rounds.

  • Kathie chickened out on when to turn off codel. outside of ns2, there's always another queue....

  • I'm increasingly uncomfortable with the "find the rtt" part of the algo in the case of ecn

fq_codel_fast's People

Contributors

dtaht avatar chromi avatar

Stargazers

Yixin Yuan avatar jump_forge avatar Aaron A. Glenn avatar  avatar Dinesh avatar Fernando avatar Yusuf Altuntepe avatar Aaron Stone avatar  avatar Luke Hamburg avatar Rob Patershuk avatar

Watchers

 avatar James Cloos avatar Loganaden Velvindron avatar Luke Hamburg avatar  avatar  avatar Gautam Ramakrishnan avatar  avatar

fq_codel_fast's Issues

feature: improve module naming for testing

Hi Dave,
I've been curious to try out your changes. Just a suggestion, but if you renamed the built module (and I guess internal .id too) as "fast_fq_codel" instead of the current "fq_codel", it would be easier to have the old/new modules coexist and also simplify A/B testing. And both should still trigger the same regexes within sqm-scripts for their tc args.

Thanks!

Any plans to update to Kernel 5.10.x?

Hi there,

FQ_CODEL_FAST compiles normally on a Debian 10 router Kernel 4.19, but it does not compile on the same Debian running 5.10 Kernel, giving the error:

make: Entering directory '/usr/src/linux-headers-5.10.0-0.bpo.5-amd64'
CC [M] /usr/src/fq_codel_fast/sch_fq_codel_fast.o
In file included from /usr/src/fq_codel_fast/sch_fq_codel_fast.c:26:
/usr/src/linux-headers-5.10.0-0.bpo.5-common/include/net/pkt_cls.h:913:22: error: ‘TCQ_ETS_MAX_BANDS’ undeclared here (not in a function); did you mean ‘TCQ_MIN_PRIO_BANDS’?
unsigned int quanta[TCQ_ETS_MAX_BANDS]; /* 0 for strict bands. */
^~~~~~~~~~~~~~~~~
TCQ_MIN_PRIO_BANDS
/usr/src/fq_codel_fast/sch_fq_codel_fast.c: In function ‘fq_codel_enqueue’:
/usr/src/fq_codel_fast/sch_fq_codel_fast.c:162:2: warning: parameter names (without types) in function declaration
int uninitialized_var(ret);
^~~
/usr/src/fq_codel_fast/sch_fq_codel_fast.c:168:37: error: ‘ret’ undeclared (first use in this function); did you mean ‘net’?
idx = fq_codel_classify(skb, sch, &ret);
^~~
net
/usr/src/fq_codel_fast/sch_fq_codel_fast.c:168:37: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [/usr/src/linux-headers-5.10.0-0.bpo.5-common/scripts/Makefile.build:284: /usr/src/fq_codel_fast/sch_fq_codel_fast.o] Error 1
make[1]: *** [/usr/src/linux-headers-5.10.0-0.bpo.5-common/Makefile:1819: /usr/src/fq_codel_fast] Error 2
make: *** [/usr/src/linux-headers-5.10.0-0.bpo.5-common/Makefile:185: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-5.10.0-0.bpo.5-amd64'

Any plans to update to 5.10? I ask because I only managed to get fq_pie on kernel 5.10 and I kinda want to test fq_codel_fast along with fq_pie

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.