Modify

Opened 5 years ago

Closed 5 years ago

#13260 closed enhancement (fixed)

fq_codel default packet limit (10240 packets) is to large

Reported by: Octoploid@… Owned by: developers
Priority: normal Milestone: Chaos Calmer 15.05
Component: base system Version: Trunk
Keywords: qos, fq_codel Cc:

Description

According to http://www.bufferbloat.net/projects/codel/wiki/Best_Practices_for_Benchmarking_CoDel_and_FQ_CoDel

»The default packet limit of 10000 packets is crazy in any other scenario. It is sane to reduce this to a 1000, or less, on anything running at gigE or below. The over-large packet limit leads to bad results during slow start on some benchmarks.«

My own measurements confirm this.
Downloading a bitorrent on my cable line would result in huge latency spikes
even with fq_codel and hfsc enabled.
Setting the fq_codel packet limit to 1024 fixes the issue.

(
print "tc qdisc add dev "device" parent 1:"class[i]"0 handle "class[i]"00: fq_codel limit 1024"
in /usr/lib/qos/tcrules.awk in enough)

Attachments (0)

Change History (6)

comment:1 Changed 5 years ago by phuque99@…

I would suggest making that packet limit value a user-configurable option on the qos-scripts Luci interface. This will allow users to change them based on their own connection.

comment:2 Changed 5 years ago by anonymous

I've just tested a 100Mbps WAN to LAN download with both 10240p and 1000p fq_codel limit and found no difference in terms of latency. What was the speed of your WAN to LAN connection when you measured this?

comment:3 Changed 5 years ago by anonymous

The big problem with the default 10k packet limit is that if you run fq_codel on like 18 interfaces, that's 15MB used per interface, on a box that doesn't necessarily have that much ram... so a udp flood can run you out of memory. 1k is just fine at GigE and below.

We have also generally found that running fq_codel on an uplink, a smaller quantum like 500 or 300 helps on interactive traffic. We also recommend disabling ecn on low speed egress links (like 10Mbit or below) with the noecn parameter. (in ingress, it's ok to leave it on, it seems)

Lastly, the default openwrt qos system does not handle ipv6 correctly, the "simple_qos.sh" script in cerowrt which I keep hoping to replace openwrt's with, does, and it also optimizes a bit for dns traffic, and has a few other possibilities.

There are also now several variants of fq_codel in cerowrt of mildly better performance, not a lot of data yet on them.

PS We just got back great data from cablelabs as to what would happen if a variant of fq_codel was enabled directly on a cablemodem.

http://www.ietf.org/proceedings/86/slides/slides-86-iccrg-3.pdf

-- dave taht

comment:4 Changed 5 years ago by anonymous

another thing that simple_qos does is it deprios background traffic. More than a few torrent clients mark their traffic as CS1.

comment:5 Changed 5 years ago by anonymous

so I would suggest making the default limit 1024 unless the bandwidth was greater than a gigabit.

comment:6 Changed 5 years ago by nbd

  • Resolution set to fixed
  • Status changed from new to closed

fixed in r36302

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.