Linux 流量控制:qdisc mq

Zak*_*Zak 5 networking linux tc

在我的 Linux 系统上,我看到了这个:

# ip link list
....
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
....
Run Code Online (Sandbox Code Playgroud)

什么qdisc mq?在http://lartc.org/lartc.html 中,我只找到了有关 IMQ 的信息。

在 howto 的示例中也有qdisc noopqdisc noqueue,但没有关于它们的详细信息。

the*_*bit 9

谷歌搜索很容易从 vger 内核邮件列表中找到这篇文章

这些补丁包含一个有类多队列 (“mq”) 虚拟调度程序,用于修复当前多队列 TC API 集成的一些问题。补丁 05 和 07 的更新日志包含更多细节。

mq 调度器做两件事:

  • 将设备 TX 队列作为类,允许将不同的 qdiscs 附加到它们,这些 qdiscs 被嫁接到 TX 队列

  • 当前所有设备队列根 qdiscs 的累积统计信息

它默认用于多队列设备而不是常规的 pfifo_fast qdisc,但也可以手动附加以在附加非多队列(共享)qdisc 后恢复多队列行为。

Multiqueue 是一个特性,也称为 RSS(接收端缩放),它基本上是在多个内核之间分配数据包处理的负载。进一步阅读:https : //elixir.bootlin.com/linux/latest/source/Documentation/networking/scaling.rst