这篇 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
什么是根,哪些是父级。我在猜测,但我的猜测似乎很遥远。
内核的默认保留句柄0:无法正确引用(作为主要值 0: )。您必须首先(重新)安装 qdisc 根mq,使用有效的句柄(即:不是0:):
现在应该给你这个:
您现在可以使用父级 1:1 而不是 0:1 等按预期运行命令。