Bug#890343: linux: make fq_codel default for default_qdisc

2021-12-01 Thread Noah Meyerhans
On Fri, Feb 26, 2021 at 06:58:50PM +0100, Vincent Blut wrote:
> > > I think the distinction is that the other packages that tweak sysctl
> > > values don't claim to be doing so on behalf of the kernel team.  If
> > > the
> > > kernel team is responsible for the values being set, then the
> > > settings
> > > should come from a package that the kernel team owns, not some other
> > > package.
> > 
> > Right, maybe in linux-base?  Although that might annoy derivatives that
> > want different defaults.
> > 
> > procps is the wrong place, not just because it's out of our hands, but
> > because systemd applies sysctl configuration now and procps is
> > optional.
> 
> Is there a definitive answer from the kernel team about how this should be
> implemented? In the meantime, Noah sent [1].

I've rebased 
https://salsa.debian.org/kernel-team/linux/-/merge_requests/309 against
the current 'master' kernel branch on Salsa.  Basic test results are
below.  It'd be nice if the kernel team could have a look and give
feedback on the approach or recommend an alternative one if this isn't
the one they'd like to pursue.

# before reboot:
admin@ip-10-0-0-136:~$ /sbin/tc qdisc
qdisc noqueue 0: dev lo root refcnt 2
qdisc mq 0: dev ens5 root
qdisc pfifo_fast 0: dev ens5 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: dev ens5 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-136:~$ sudo apt install 
./linux-image-5.16.0-rc3-cloud-amd64-unsigned_5.16~rc3-1~exp2_amd64.deb
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'linux-image-5.16.0-rc3-cloud-amd64-unsigned' instead of 
'./linux-image-5.16.0-rc3-cloud-amd64-unsigned_5.16~rc3-1~exp2_amd64.deb'
The following additional packages will be installed:
  firmware-linux-free
Suggested packages:
  linux-doc-5.16 debian-kernel-handbook grub-pc | grub-efi-amd64 | extlinux
The following NEW packages will be installed:
  firmware-linux-free linux-image-5.16.0-rc3-cloud-amd64-unsigned
...
admin@ip-10-0-0-136:~$ sudo reboot
Connection to 18.236.97.48 closed by remote host.
...
admin@ip-10-0-0-136:~$ uname -a
Linux ip-10-0-0-136 5.16.0-rc3-cloud-amd64 #1 SMP PREEMPT Debian 
5.16~rc3-1~exp2 (2021-12-01) x86_64 GNU/Linux
admin@ip-10-0-0-136:~$ /sbin/tc qdisc
qdisc noqueue 0: dev lo root refcnt 2
qdisc mq 0: dev ens5 root
qdisc fq_codel 0: dev ens5 parent :2 limit 10240p flows 1024 quantum 1514 
target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
qdisc fq_codel 0: dev ens5 parent :1 limit 10240p flows 1024 quantum 1514 
target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64



Bug#890343: linux: make fq_codel default for default_qdisc

2021-02-26 Thread Vincent Blut
Hi,

Le 2021-01-21 00:43, Ben Hutchings a écrit :
> On Wed, 2021-01-20 at 14:46 -0800, Noah Meyerhans wrote:
> > On Wed, Jan 20, 2021 at 11:39:16PM +0100, Vincent Blut wrote:
> > > > We could do that.  However, in the past (earlier in this bug,
> > > > even) it's
> > > > been pointed out that other packages should not be responsible
> > > > for
> > > > setting kernel policies, so changes like this should be the
> > > > responsibility of the kernel packages.  That seems like a
> > > > sensible
> > > > position to take.
> > > 
> > > If this is the position of the kernel team, then fine. But some
> > > packages *do*
> > > tweak kernel parameters using the sysctl interface mechanism. So
> > > does the kernel
> > > team provides documention about what is acceptable?
> > 
> > I think the distinction is that the other packages that tweak sysctl
> > values don't claim to be doing so on behalf of the kernel team.  If
> > the
> > kernel team is responsible for the values being set, then the
> > settings
> > should come from a package that the kernel team owns, not some other
> > package.
> 
> Right, maybe in linux-base?  Although that might annoy derivatives that
> want different defaults.
> 
> procps is the wrong place, not just because it's out of our hands, but
> because systemd applies sysctl configuration now and procps is
> optional.

Is there a definitive answer from the kernel team about how this should be
implemented? In the meantime, Noah sent [1].

> Ben.

Cheers,
Vincent

[1] https://salsa.debian.org/kernel-team/linux/-/merge_requests/309/diffs


signature.asc
Description: PGP signature


Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Ben Hutchings
On Wed, 2021-01-20 at 14:46 -0800, Noah Meyerhans wrote:
> On Wed, Jan 20, 2021 at 11:39:16PM +0100, Vincent Blut wrote:
> > > We could do that.  However, in the past (earlier in this bug,
> > > even) it's
> > > been pointed out that other packages should not be responsible
> > > for
> > > setting kernel policies, so changes like this should be the
> > > responsibility of the kernel packages.  That seems like a
> > > sensible
> > > position to take.
> > 
> > If this is the position of the kernel team, then fine. But some
> > packages *do*
> > tweak kernel parameters using the sysctl interface mechanism. So
> > does the kernel
> > team provides documention about what is acceptable?
> 
> I think the distinction is that the other packages that tweak sysctl
> values don't claim to be doing so on behalf of the kernel team.  If
> the
> kernel team is responsible for the values being set, then the
> settings
> should come from a package that the kernel team owns, not some other
> package.

Right, maybe in linux-base?  Although that might annoy derivatives that
want different defaults.

procps is the wrong place, not just because it's out of our hands, but
because systemd applies sysctl configuration now and procps is
optional.

Ben.

> AFAIK, there are no guidelines or policy anywhere in Debian about
> whether or not a package can provide its own sysctl settings.
> 
> noah
> 

-- 
Ben Hutchings
Computers are not intelligent.  They only think they are.


signature.asc
Description: This is a digitally signed message part


Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Vincent Blut
Le 2021-01-20 14:46, Noah Meyerhans a écrit :
> On Wed, Jan 20, 2021 at 11:39:16PM +0100, Vincent Blut wrote:
> > > We could do that.  However, in the past (earlier in this bug, even) it's
> > > been pointed out that other packages should not be responsible for
> > > setting kernel policies, so changes like this should be the
> > > responsibility of the kernel packages.  That seems like a sensible
> > > position to take.
> > 
> > If this is the position of the kernel team, then fine. But some packages 
> > *do*
> > tweak kernel parameters using the sysctl interface mechanism. So does the 
> > kernel
> > team provides documention about what is acceptable?
> 
> I think the distinction is that the other packages that tweak sysctl
> values don't claim to be doing so on behalf of the kernel team.  If the
> kernel team is responsible for the values being set, then the settings
> should come from a package that the kernel team owns, not some other
> package.

Makes sense!

> AFAIK, there are no guidelines or policy anywhere in Debian about
> whether or not a package can provide its own sysctl settings.

That would be nice to have a statement on this, though.

> noah

Cheers,
Vincent


signature.asc
Description: PGP signature


Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Noah Meyerhans
On Wed, Jan 20, 2021 at 11:39:16PM +0100, Vincent Blut wrote:
> > We could do that.  However, in the past (earlier in this bug, even) it's
> > been pointed out that other packages should not be responsible for
> > setting kernel policies, so changes like this should be the
> > responsibility of the kernel packages.  That seems like a sensible
> > position to take.
> 
> If this is the position of the kernel team, then fine. But some packages *do*
> tweak kernel parameters using the sysctl interface mechanism. So does the 
> kernel
> team provides documention about what is acceptable?

I think the distinction is that the other packages that tweak sysctl
values don't claim to be doing so on behalf of the kernel team.  If the
kernel team is responsible for the values being set, then the settings
should come from a package that the kernel team owns, not some other
package.

AFAIK, there are no guidelines or policy anywhere in Debian about
whether or not a package can provide its own sysctl settings.

noah



Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Vincent Blut
Le 2021-01-20 13:58, Noah Meyerhans a écrit :
> On Wed, Jan 20, 2021 at 10:22:16PM +0100, Vincent Blut wrote:
> > 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.
> 
> We could do that.  However, in the past (earlier in this bug, even) it's
> been pointed out that other packages should not be responsible for
> setting kernel policies, so changes like this should be the
> responsibility of the kernel packages.  That seems like a sensible
> position to take.

If this is the position of the kernel team, then fine. But some packages *do*
tweak kernel parameters using the sysctl interface mechanism. So does the kernel
team provides documention about what is acceptable?


signature.asc
Description: PGP signature


Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Noah Meyerhans
Control: tags -1 + patch

A proposed patch is at
https://salsa.debian.org/kernel-team/linux/-/merge_requests/309



Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Noah Meyerhans
On Wed, Jan 20, 2021 at 10:22:16PM +0100, Vincent Blut wrote:
> 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.

We could do that.  However, in the past (earlier in this bug, even) it's
been pointed out that other packages should not be responsible for
setting kernel policies, so changes like this should be the
responsibility of the kernel packages.  That seems like a sensible
position to take.

One possible way for the kernel team to take ownership of this would be
for it to introduce a new "debian-kernel-sysctl" package or something
like that to provide some sysctl.d drop-in files.  It could then set
net.core.default_qdisc, and potentially others in various scenarios.
Such a package can be installed indepdendently of whether the user is
running a Debian-provided kernel package.

The other alternative is the one I've proposed, which involves changing
the compile-time defaults in Debian's kernel packages.  This obviously
only affects users of those packages.  However, I think that's fine;
people who are building their own packages may very well be starting
from Debian's config, in which case they'll still get this change, or
may be constructing their own configuration from scratch, in which case
they're assuming ownership of all the parameters.

noah



Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Noah Meyerhans
On Sun, Jan 17, 2021 at 10:29:44PM -0300, Ivan Baldo wrote:
>     I think we want the mq qdisc to distribute the load between cores, to
> support very high speed network cards or too slow CPUs.

Yep, you're right. Though it's not about CPU cores, but about tx queues
on the NIC hardware.

>     Also, if net.core.default_qdisc = fq_codel is used, it also has the mq
> qdisc and fq_codel childs for each CPU core, so that's the default behavior
> in other distros.

Yep, so I think the behavior when we set the default qdisc to fq_codel
in the kernel config has the effect we're looking for, after all.

noah



Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-20 Thread Vincent Blut
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:  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:  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:  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


signature.asc
Description: PGP signature


Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-17 Thread Ivan Baldo

    Hello.

    Not an expert nor kernel developer, etc., just simple sysadmin 
here, but will answer anyway since nobody did yet.


    I think we want the mq qdisc to distribute the load between cores, 
to support very high speed network cards or too slow CPUs.


    Also, if net.core.default_qdisc = fq_codel is used, it also has the 
mq qdisc and fq_codel childs for each CPU core, so that's the default 
behavior in other distros.


    I guess being under mq it could impact fq_codel's ability somewhat, 
but it's better to support all the hardware spectrum by default, 
otherwise we should use cake as default since it can handle up to 
10Gbit/s without troubles; we don't, because Debian is a generic 
operating system so it should work on embedded devices, laptops, 
workstations and big iron servers...


    Also, I don't see a problem with statically linking fq_codel if we 
are using it as default, since it will probably get loaded anyway...


    Thanks for pushing this forward, doing these tests, etc.!!!

    Bye.



El 7/1/21 a las 21:12, Noah Meyerhans escribió:

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:  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:  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:  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.

noah


--
Ivan Baldo - iba...@adinet.com.uy - http://ibaldo.codigolibre.net/
Freelance C++/PHP programmer and GNU/Linux systems administrator.
The sky is not the limit!



Bug#890343: linux: make fq_codel default for default_qdisc

2021-01-07 Thread Noah Meyerhans
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:  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:  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:  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.

noah



Bug#890343: linux: make fq_codel default for default_qdisc

2020-04-23 Thread Matt Taggart

On 4/23/20 4:24 PM, Noah Meyerhans wrote:

On Thu, Apr 23, 2020 at 03:34:06PM -0700, Matt Taggart wrote:

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)


Isn't CAKE supposed to be even better than fq_codel, including better
handling of both large numbers of flows (e.g. busy routers) and small
systems with limited resources.

https://www.bufferbloat.net/projects/codel/wiki/Cake/

If we consider a change (which I think we should), is there a reason we
wouldn't go with CAKE?


In net/sched/Kconfig, the options for NET_SCH_DEFAULT are:
 fq, codel, fq_codel, sfq, pfifo_fast

Also Documentation/admin-guide/sysctl/net.rst explains:

  default_qdisc
  -

  The default queuing discipline to use for network devices. This allows
  overriding the default of pfifo_fast with an alternative. Since the 


  default queuing discipline is created without additional parameters so
  is best suited to queuing disciplines that work well without
  configuration like stochastic fair queue (sfq), CoDel (codel) or fair
  queue CoDel (fq_codel). Don't use queuing disciplines like
  Hierarchical Token Bucket or Deficit Round Robin which require setting
  up classes and bandwidths. Note that physical multiqueue interfaces
  still use mq as root qdisc, which in turn uses this default for its
  leaves. Virtual devices (like e.g. lo or veth) ignore this setting and
  instead default to noqueue.

CAKE, while better for AQM, requires interface specific parameters and 
so won't work for a default (and also is generally used in conjunction 
with fq_codel)


--
Matt Taggart
tagg...@debian.org



Bug#890343: linux: make fq_codel default for default_qdisc

2020-04-23 Thread Noah Meyerhans
On Thu, Apr 23, 2020 at 03:34:06PM -0700, Matt Taggart wrote:
> 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)

Isn't CAKE supposed to be even better than fq_codel, including better
handling of both large numbers of flows (e.g. busy routers) and small
systems with limited resources.

https://www.bufferbloat.net/projects/codel/wiki/Cake/

If we consider a change (which I think we should), is there a reason we
wouldn't go with CAKE?

noah



Bug#890343: linux: make fq_codel default for default_qdisc

2020-04-23 Thread Matt Taggart
#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?

Related thoughts:
* ubuntu issue, looks like maybe they already switched by default due to 
the systemd change? 
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1773157
* another ubuntu issue that might help 
https://bugs.launchpad.net/ubuntu/+bug/940541
* are there other related defaults that should change too? like tcp_ecn, 
syncookies, BBR, etc

* what are upstream kernel defaults and why?

--
Matt Taggart
tagg...@debian.org