这篇 LWN 文章建议人们可以为“下”的队列添加/替换网络调度程序MQ“虚拟调度程序。”这两点都指向这个目的:
The mq scheduler does two things:
- present device TX queues as classes, allowing to attach
different qdiscs to them, which are grafted to the TX queues
- present accumulated statistics of all device queue root qdiscs
我很乐意接受关于如何做到这一点的教育。我尝试过很多组合。例如,从以下默认列表(CentOS 7.6)中:
# tc qdisc show dev eth2
qdisc mq 0: root
qdisc pfifo_fast 0: parent :8 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :7 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :6 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :5 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :4 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :3 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
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
我尝试了很多变体,尝试嫁接不同的调度程序低于 mq。以下是一些尝试:
# tc qdisc add dev eth2 parent 0:1 fq_codel target 1ms interval 10ms quantum 9014
RTNETLINK answers: No such file or directory
# tc qdisc add dev eth2 parent 0:1 handle 1: fq_codel target 1ms interval 10ms quantum 9014
RTNETLINK answers: No such file or directory
有人知道将不同的调度程序放在下面的魔力吗MQ不仅仅是pfifo_fast?非常令人沮丧的一点是,手册页和许多互联网文章、参考文献根和父母关于调度程序和队列。然而,从我上面的命令输出来看,没有人能够充分描述tc qdisc show dev eth2
什么是根,哪些是父项。我在猜测,但我的猜测似乎还很遥远。
答案1
内核的默认值预订的处理0:无法正确引用(作为主值 0: )。您必须首先(重新)安装 qdisc 根MQ,使用有效的句柄(即:不0:):
# tc qdisc add dev eth2 root handle 1: mq
现在应该给你这个:
# tc qdisc show dev eth2
qdisc mq 1: root
qdisc pfifo_fast 0: parent 1:8 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:7 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:6 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:5 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:4 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:3 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: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:1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
您现在可以使用父级 1:1 而不是 0:1 等按预期运行命令。