fq_codel

In 2012, Eric Dumazet contributed the fq_codel queueing discipline to the Linux kernel. It is thus available in recent Linux versions (3.5 and later). It combines CoDel with a variant (Deficit Round Robin) of stochastic flow-based fair queueing, and some logic to the effect that new flows get priority over old ones. It also enables ECN by default, has low computational and memory (64 bytes per flow) overhead, and can be used even on 10Gb/s links with contemporary hardware.

How to Use

For a simple device your_device, fq_codel can be activated simply by saying (as root):

tc qdisc add dev your_device root fq_codel

Unfortunately some devices are not that simple, e.g. Wifi interfaces have more than one queue, and fq_codel would have to be attached to each of them. Dave Täht has written a debloat script that should work for any type of interface. Hopefully, future releases of GNU/Linux distributions will be enhanced to set it up automatically by default for all devices on which it makes sense. (Source: Message by D. Täht to the LWN mailing list, June 2012.)

Contributed Packages for Debian/Ubuntu and Arch Linux

Toke Høiland-Jørgensen has provided packages of iproute2, debloat, netperf and netperf-wrapper with support for fq_codel for recent releases of Debian, Ubuntu and Arch GNU/Linux on http://archive.tohojo.dk/.

Performance Evaluation Results

The following graphs illustrate the effect of fq_codel compared to conventional FIFO (tail-drop) queueing with large buffers, and also compared to other mechanisms such as PIE.

Simulation Study for DOCSIS Cable Modems

These two CDF plots are from an IETF-86 presentation by Greg White (CableLabs) of NS-2 simulations of DOCSIS 3.0 cable modems with different queueing mechanisms under different simulated workloads.

CDF of Gaming Traffic Packet Latency CDF of Gaming Traffic Packet Latency, CDF of Web Page Load Time CDF of Web Page Load Time (courtesy Greg White)

Measurements on Dedicated Lab Network

Toke Høiland-Jørgensen from the University of Roskilde performed comparative measurements of CoDel, fq_codel, traditional Linux SFQ and the default FIFO queueing on a dedicated network of workstations connected by Ethernet. Toke implemented a new "RRUL" (Realtime Response Under Load) test, which is implemented as a Python wrapper around the netperf benchmarking tool, and is distributed as part of the netperf-wrapper package. The results were also presented at IETF-86. The summary/spoiler slide again clearly shows the benefits of fq_codel over previous methods.

Effects of bufferbloat mitigation - RRUL test

The data underlying this presentation is available on http://akira.ruc.dk/~tohojo/bufferbloat/.

References

-- SimonLeinen - 2013-03-30 - 2016-03-20

Topic attachments
I Attachment History Action Size Date Who Comment
PDFpdf gaming_latency_all_5ms_preso.pdf r1 manage 135.0 K 2013-03-30 - 17:13 SimonLeinen CDF of Gaming Traffic Packet Latency (courtesy D. Täht)
PNGpng gaming_latency_all_5ms_preso.png r1 manage 9.0 K 2013-03-30 - 17:15 SimonLeinen CDF of Gaming Traffic Packet Latency (courtesy D. Täht, thumbnail)
PNGpng toke-4.png r1 manage 8.9 K 2013-03-30 - 17:39 SimonLeinen Effects of bufferbloat mitigation - RRUL test (courtesy T. Høiland-Jørgensen)
PDFpdf webPLTs_all_5ms_preso.pdf r1 manage 138.9 K 2013-03-30 - 17:15 SimonLeinen CDF of Web Page Load Time (courtesy D. Täht)
PNGpng webPLTs_all_5ms_preso.png r1 manage 8.4 K 2013-03-30 - 17:16 SimonLeinen CDF of Web Page Load Time (courtesy D. Täht, thumbnail)
Edit | Attach | Watch | Print version | History: r9 < r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r9 - 2016-03-20 - SimonLeinen
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2004-2009 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.