fq_codel qdisc compiled but not enabled on 22.10
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Ubuntu | Status tracked in Oracular | |||||
Noble |
Confirmed
|
Undecided
|
Unassigned | |||
Oracular |
Fix Released
|
Undecided
|
Heitor Alves de Siqueira | |||
procps (Ubuntu) | Status tracked in Oracular | |||||
Noble |
In Progress
|
High
|
Heitor Alves de Siqueira | |||
Oracular |
Fix Released
|
High
|
Heitor Alves de Siqueira |
Bug Description
[ Impact ]
Starting with Ubuntu 22.10, the default qdisc regressed to pfifo_fast. This is due to a change we merged from Debian, removing systemd's /usr/lib/
[ Test Plan ]
On an Ubuntu VM, check that net.core.
halves@noble-vm:~$ sysctl net.core.
net.core.
halves@noble-vm:~$ tc qdisc show
qdisc noqueue 0: dev lo root refcnt 2
qdisc mq 0: dev enp5s0 root
qdisc fq_codel 0: dev enp5s0 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
[ Where Problems Could Occur ]
Users relying on the default pfifo_fast qdisc could see different networking behavior. Although fq_codel should be an across-the-board improvement over pfifo_fast, we could monitor network latency stats and throughput to make sure no weird regressions arise from the qdisc scheduler.
[ Other Info ]
Instead of adding a sysctl.conf file, Debian has decided to change their default kernel configs to use fq_codel. This has the disadvantage of being "hidden" from end users, instead of being a queryable setting in e.g. /etc/sysctl.d/, and all kernel documentation still refers to pfifo_fast as being the default.
Systemd's /usr/lib/
--
[ Original Description ]
fq_codel has been the default in ubuntu since #1436945
It is also now the default in debian. Somewhere between 22.04 and 22.10 though, it stopped being enabled by systemd? (it used to be enabled there via a sysctl), and thus 22.10 (I tried both ubuntu server and ubuntu studio) doesn't have it on. I rather *immediately* noticed this huge regression (I run my ethernet at 100Mbit, and thus immediately saw 400+ms latency) - and I hope it can be fixed in the next release?
it can also be made the default via compiling it into the kernel as a kernel default.
Aggh! death to fifos!
root@localhost:~# sysctl -a | grep qdisc
net.core.
disc pfifo_fast 0: dev eth0 parent :1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 5250 bytes 53 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Related branches
- Nick Rosbrook (community): Approve
- Canonical Server Core Reviewers: Pending requested
- git-ubuntu import: Pending requested
-
Diff: 28 lines (+14/-0)2 files modifieddebian/changelog (+6/-0)
debian/sysctl.d/10-bufferbloat.conf (+8/-0)
description: | updated |
Changed in ubuntu: | |
status: | Confirmed → In Progress |
assignee: | nobody → Heitor Alves de Siqueira (halves) |
Changed in procps (Ubuntu): | |
assignee: | nobody → Heitor Alves de Siqueira (halves) |
status: | New → In Progress |
importance: | Undecided → High |
Changed in procps (Ubuntu Oracular): | |
status: | In Progress → Fix Committed |
Changed in procps (Ubuntu Noble): | |
status: | Confirmed → In Progress |
assignee: | nobody → Heitor Alves de Siqueira (halves) |
importance: | Undecided → High |
description: | updated |
Very weird.
Oddly enough, there was a change in how the parameter was specified around systemd 248 -- but that change predates 22.04. The documentation suggests that it should just keep a service from failing in case the setting can't be set, so it feels like it shouldn't actually change anything here.
sarnold@ wopr:/fst/ trees/ubuntu/ main/s/ systemd $ grep -L -- 'net.core. default_ qdisc = fq_codel' */sysctl. d/50-default. conf 204-5ubuntu20. 31/sysctl. d/50-default. conf 204-5ubuntu20/ sysctl. d/50-default. conf wopr:/fst/ trees/ubuntu/ main/s/ systemd $ grep -- 'net.core. default_ qdisc = fq_codel' */sysctl. d/50-default. conf 229-4ubuntu21. 21/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 22/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 23/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 27/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 28/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 29/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu21. 31/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 229-4ubuntu4/ sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 19/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 26/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 28/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 29/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 31/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 33/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 34/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 38/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 39/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 40/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 41/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 42/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 43/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 44/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 45/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 46/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 47/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 48/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 49/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 50/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 51/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 52/sysctl. d/50-default. conf:net. core.default_ qdisc = fq_codel 237-3ubuntu10. 53/sysctl. d/50-def. ..
systemd_
systemd_
sarnold@
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_
systemd_