强制启用fq_pie

强制启用fq_pie

我对为 TCP 拥塞控制设置 fq_pie 队列规则非常感兴趣。如果我写入 net.core.default_qdisc = fq_pie/etc/sysctl.d/90-override.conf它应该在最新的内核上启用 fq_pie 。

不过它确实可以在我的桌面上运行。但在我的笔记本电脑上:

$ tc qdisc show
qdisc noqueue 0: dev lo root refcnt 2 
qdisc noqueue 0: dev wlp1s0 root refcnt 2 
qdisc mq 0: dev wlp0s20f0u3 root 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :4 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :3 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :2 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :1 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10

可以看出我有 2 个 wifi 适配器。我的笔记本电脑内置了一个,它是 Qualcomm Atheros (ath10k),fq_pie 无法在此激活。

然而,fq_pie 可以在 TP Link (RTL8188EUS) 适配器上激活。

我还尝试了另外 2 台笔记本电脑(戴尔和惠普),集成 WiFi 适配器实际上并未运行 fq_pie。

有没有办法强制激活 Qualcomm Atheros 和其他 WiFi 适配器的 fq_pie?

系统详细信息:

$ cat /proc/version
Linux version 5.8.12-xanmod1-1 (makepkg@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Wed, 30 Sep 2020 14:19:49 +0000

$ ip -V
ip utility, iproute2-v5.7.0-77-gb687d1067169

$ tc -V
tc utility, iproute2-v5.7.0-77-gb687d1067169

答案1

它似乎net.core.default_qdisc会在加载时影响接口驱动程序。如果更改之前加载了内核模块net.core.default_qdisc,则不会影响之后的更改。有些接口有行为改变:多队列接口将保留mq,但它们的叶子继承此默认值。或者韦斯不会获得任何默认队列。

如果您想确保 sysctl 在驱动程序之前更改,您可以:

  • 是否在 initramfs 脚本中进行了更改(可能需要进行一些调整),

  • 从内核命令行加载它。这个问答告诉任何人都有可能随意的仅限系统控制从内核 5.8 开始,您正在使用的。所以理论上你可以在引导参数中添加一些东西(可能在 GRUB 的 GRUB_CMDLINE_LINUX 中)然后忘记它:

    sysctl.net.core.default_qdisc=fq_pie
    

    但实际上这仅适用于内置驱动程序。它不太可能是sch_fq_pie内置编译的。

  • 延迟驱动程序的加载wlp1s0(我不知道在哪里执行此操作)

  • rmmod ath10k因此modprobe ath10k应用新的默认值。

无论如何,要立即更改接口的 qdisc,只需定义其 qdisc,这将覆盖默认的内核 qdisc,该内核 qdisc 具有保留的句柄0:。例如:

tc qdisc add dev wlp1s0 handle 1: root fq_pie

相关内容