Activer de force fq_pie
Je suis très intéressé par la mise en place de la discipline de file d'attente fq_pie pour le contrôle de la congestion TCP. Si je vous écris net.core.default_qdisc = fq_pieà /etc/sysctl.d/90-override.conf, il devrait permettre fq_pie sur les derniers noyaux.
Cela fonctionne cependant sur mon bureau. Mais sur mon ordinateur portable:
$ 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
Comme on peut le voir, j'ai 2 adaptateurs wifi. L'un est intégré à mon ordinateur portable, qui est Qualcomm Atheros (ath10k), fq_pie ne peut pas être activé à ce sujet.
Cependant, le fq_pie peut être activé sur l'adaptateur TP Link (RTL8188EUS).
J'ai également essayé 2 autres ordinateurs portables (Dell et HP), l'adaptateur wifi intégré ne fonctionne pas réellement fq_pie.
Existe-t-il un moyen d'activer de force fq_pie sur le Qualcomm Atheros et d'autres adaptateurs wifi?
Détails du système:
$ 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
Réponses
Il semble net.core.default_qdiscaffecter un pilote d'interface lorsqu'il est chargé. Si le module du noyau a été chargé avant d' net.core.default_qdiscêtre modifié, cela ne l'affectera pas par la suite. Certaines interfaces ont un comportement modifié : les interfaces multiqueue seront conservées mqmais leurs feuilles héritent de cette valeur par défaut. lo ou veth n'obtiendra aucune file d'attente par défaut.
Si vous voulez vous assurer que le sysctl est changé avant le pilote, vous pouvez:
faites-le changer dans les scripts initramfs (quelques ajustements sont probablement nécessaires),
faites-le charger à partir de la cmdline du noyau. Ce Q / R indique qu'il est possible pour n'importe quel sysctl arbitraire seulement depuis le noyau 5.8 , que vous utilisez. Donc, en théorie, vous pouvez ajouter quelque chose de ceci dans les paramètres de démarrage (probablement dans GRUB_CMDLINE_LINUX de GRUB) et oublier cela:
sysctl.net.core.default_qdisc=fq_piemais en fait, cela n'est possible que pour les pilotes intégrés. Il est très peu probable que cela ait
sch_fq_pieété compilé intégré.retarder le chargement du pilote pendant
wlp1s0(je ne saurais pas où faire cela)rmmod ath10ketmodprobe ath10kdonc la nouvelle valeur par défaut s'applique.
Quoi qu'il en soit, pour changer immédiatement le qdisc d'une interface, définissez simplement son qdisc, qui remplacera le qdisc du noyau par défaut, qui a le handle réservé 0:. Par exemple:
tc qdisc add dev wlp1s0 handle 1: root fq_pie