[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#890343: linux: make fq_codel default for default_qdisc



Hi Noah,

Le 2021-01-07 16:12, Noah Meyerhans a écrit :
> On Thu, Apr 23, 2020 at 03:34:06PM -0700, Matt Taggart wrote:
> > #890343 was originally opened against systemd asking to install the upstream
> > systemd sysctl.d/50-default.conf file that sets:
> > 
> > net.core.default_qdisc = fq_codel
> > 
> > As explained in #950701 (and the systemd debian changelog) the debian
> > systemd maintainers felt that systemd in debian should not be changing
> > kernel policies (and I agree).
> > So #890343 was reassigned to linux to consider changing the default.
> > 
> > fq_codel is better in every way than pfifo_fast and I am unaware of any
> > reason why it would not be a better default. (but don't trust me, ask the
> > kernel networking experts)
> > 
> > Can we change it?
> 
> I strongly agree that we should make this change for the bullseye
> release.
> 
> I'm looking into provding a patch to implement the switch to fq_codel by
> default, but it appears to require something more than just a kernel
> config change.  I have tried the following with the 5.10 kernel from the
> current sid branch:
> 
> CONFIG_NET_SCH_FQ_CODEL=m
> CONFIG_DEFAULT_FQ_CODEL=y
> CONFIG_DEFAULT_NET_SCH="fq_codel"
> 
> Then we don't see any change at all to the qdisc in use:
> 
> admin@ip-10-0-0-162:~$ grep -i fq_codel /boot/config-$(uname -r)
> CONFIG_NET_SCH_FQ_CODEL=m
> CONFIG_DEFAULT_FQ_CODEL=y
> CONFIG_DEFAULT_NET_SCH="fq_codel"
> admin@ip-10-0-0-162:~$ /sbin/sysctl net.core.default_qdisc
> net.core.default_qdisc = pfifo_fast
> admin@ip-10-0-0-162:~$ tc qdisc show dev ens5
> qdisc mq 0: root
> qdisc pfifo_fast 0: parent :2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
> qdisc pfifo_fast 0: parent :1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
> admin@ip-10-0-0-162:~$ ip link show dev ens5
> 2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
>     link/ether 02:47:e2:7c:be:ff brd ff:ff:ff:ff:ff:ff
>     altname enp0s5
> 
> If we statically link the fq_codel module into the kernel, then we see:
> 
> admin@ip-10-0-0-162:~$ grep -i fq_codel /boot/config-$(uname -r)
> CONFIG_NET_SCH_FQ_CODEL=y
> CONFIG_DEFAULT_FQ_CODEL=y
> CONFIG_DEFAULT_NET_SCH="fq_codel"
> admin@ip-10-0-0-162:~$ /sbin/sysctl net.core.default_qdisc
> net.core.default_qdisc = fq_codel
> admin@ip-10-0-0-162:~$ /sbin/tc qdisc show dev ens5
> qdisc mq 0: root
> qdisc fq_codel 0: parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> admin@ip-10-0-0-162:~$ ip link show dev ens5
> 2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
>     link/ether 02:47:e2:7c:be:ff brd ff:ff:ff:ff:ff:ff
>     altname enp0s5
> 
> So in this case, we have fq_codel configured, but not as the root
> qdisc for the interface.  If we manually set it:
> 
> admin@ip-10-0-0-162:~$ sudo /sbin/tc qdisc add root dev ens5 fq_codel
> 
> Then we get the following configuration:
> 
> admin@ip-10-0-0-162:~$ /sbin/tc qdisc show dev ens5
> qdisc fq_codel 8001: root refcnt 3 limit 10240p flows 1024 quantum 9015 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> admin@ip-10-0-0-162:~$ ip link show dev ens5
> 2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
>     link/ether 02:47:e2:7c:be:ff brd ff:ff:ff:ff:ff:ff
>     altname enp0s5
> 
> I believe that this is what we want.  Is that accurate?
> 
> The recent thread at https://www.mail-archive.com/netdev@vger.kernel.org/msg380410.html
> also seems relevant.

I was about to start a thread on the debian-kernel ML about switching from
pfifo_fast to FQ_Codel when I stumble across this bug report.

My proposal would differ from yours though in that it would not touch the kernel
configuration but would instead consist in patching procps to provide a
configuration file (let's say default_qdisc.conf) to set the value of the
net.core.default_qdisc variable to fq_codel via sysctl.
This would allow to benefit from FQ_Codel without depending on a specific Linux
version.

Opinion?

> noah

Cheers,
Vincent

Attachment: signature.asc
Description: PGP signature


Reply to: