千家信息网

Linux中多队列网卡硬件的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Linux中多队列网卡硬件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!多队列网卡是一种技术,
千家信息网最后更新 2026年11月03日Linux中多队列网卡硬件的示例分析

小编给大家分享一下Linux中多队列网卡硬件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

多队列网卡是一种技术,最初是用来解决网络IO QoS (quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。

常见的有Intel的82575、82576,Boardcom的57711等,下面以公司的服务器使用较多的Intel 82575网卡为例,分析一下多队列网卡的硬件的实现以及linux内核软件的支持。

1.多队列网卡硬件实现

图1.1是Intel 82575硬件逻辑图,有四个硬件队列。当收到报文时,通过hash包头的SIP、Sport、DIP、Dport四元组,将一条流总是收到相同的队列。同时触发与该队列绑定的中断。

图1.1 82575硬件逻辑图

2. 2.6.21以前网卡驱动实现

kernel从2.6.21之前不支持多队列特性,一个网卡只能申请一个中断号,因此同一个时刻只有一个核在处理网卡收到的包。如图2.1,协议栈通过NAPI轮询收取各个硬件queue中的报文到图2.2的net_device数据结构中,通过QDisc队列将报文发送到网卡。

图2.1 2.6.21之前内核协议栈

图2.2 2.6.21之前net_device

3. 2.6.21后网卡驱动实现

2.6.21开始支持多队列特性,当网卡驱动加载时,通过获取的网卡型号,得到网卡的硬件queue的数量,并结合CPU核的数量,最终通过Sum=Min(网卡queue,CPU core)得出所要激活的网卡queue数量(Sum),并申请Sum个中断号,分配给激活的各个queue。

如图3.1,当某个queue收到报文时,触发相应的中断,收到中断的核,将该任务加入到协议栈负责收包的该核的NET_RX_SOFTIRQ队列中(NET_RX_SOFTIRQ在每个核上都有一个实例),在NET_RX_SOFTIRQ中,调用NAPI的收包接口,将报文收到CPU中如图3.2的有多个netdev_queue的net_device数据结构中。

这样,CPU的各个核可以并发的收包,就不会应为一个核不能满足需求,导致网络IO性能下降。

图3.1 2.6.21之后内核协议栈

图3.2 2.6.21之后net_device

4.中断绑定

当CPU可以平行收包时,就会出现不同的核收取了同一个queue的报文,这就会产生报文乱序的问题,解决方法是将一个queue的中断绑定到唯一的一个核上去,从而避免了乱序问题。同时如果网络流量大的时候,可以将软中断均匀的分散到各个核上,避免CPU成为瓶颈。

图4.1 /proc/interrupts

5.中断亲合纠正

一些多队列网卡驱动实现的不是太好,在初始化后会出现图4.1中同一个队列的tx、rx中断绑定到不同核上的问题,这样数据在core0与core1之间流动,导致核间数据交互加大,cache命中率降低,降低了效率。

图5.1 不合理中断绑定

linux network子系统的负责人David Miller提供了一个脚本,首先检索/proc/interrupts文件中的信息,按照图4.1中eth0-rx-0($VEC)中的VEC得出中断MASK,并将MASK

写入中断号53对应的smp_affinity中。由于eth-rx-0与eth-tx-0的VEC相同,实现同一个queue的tx与rx中断绑定到一个核上,如图4.3所示。

图4.2 set_irq_affinity

图4.3 合理的中断绑定

set_irq_affinity脚本位于http://mirror.oa.com/tlinux/tools/set_irq_affinity.sh。

以上是"Linux中多队列网卡硬件的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

网卡 队列 硬件 报文 网卡驱动 驱动 数据 网络 问题 如图 支持 分析 不同 内核 数量 篇文章 需求 示例 相同 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 互联网是不是新科技 智能科技公司是互联网公司吗 朗新科技与工业互联网 麻工互联网科技 互联网科技与金融科技 壕鑫互联网络科技 互联网科技美容 广西拼得多互联网科技有限公司 科技互联网的估值 汽车互联网创新科技园 互联网金融科技公司干啥的 南山科技园互联网公司有哪些 互联网科技与管理 世界互联网科技公司市值排名 厦门千工互联网科技有限公司 四川慕妮娅互联网科技有限公司 互联网科技接地气 银川新华互联网科技学校是国营吗 安徽九吞吴互联网科技有限公司 金融科技 互联网金融 喔噻互联网科技 浩特互联网科技 汉立互联网科技有限公司联系电话 北京大学互联网科技怎么样 阿里巴巴算科技企业还是互联网 岳阳华臻互联网科技有限公司 允成互联网科技有限公司融资 锡山区互联网智能科技产品供应 互联网科技和医药行业
0