tc
通过命令 vs控制什么 qdisc sysctl net.core.default_qdisc
?考虑
$ tc qdisc show dev eth2
qdisc mq 0: dev eth2 root
$ sysctl net.core.default_qdisc
net.core.default_qdisc = pfifo_fast
在此系统上,默认 qdisc 设置为pfifo_fast但使用的 qdisc 是MQ(多队列)重启后。很明显,它们并不直接相关,或者至少不是以一种“开箱即用”的方式相关。 这个链接关于 Linux 网络堆栈中的排队清楚地表明tc qdisc ...
适用于队列它位于 IP 堆栈和驱动程序队列之间。
谁能帮我消除这两个歧义吗?
答案1
多队列(“mq”)调度程序使 Linux 内核能够支持称为接收端扩展(RSS)的功能,其中数据包处理的负载分布在多个 CPU 内核上。
在我的 Ubuntu 18.04.1 桌面系统上,net.core.default_qdisc 设置为 pfifo_fast,我执行以下命令:
$ tc qdisc show dev eth0
这是输出的内容:
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
mq 调度程序默认在设备 eth0 上配置了两个 pfifo_fast 队列。
希望这能解决问题。