请选择 进入手机版 | 继续访问电脑版

[LINUX] Linux多队列网卡的硬件的实现详解

[复制链接]
查看55 | 回复3 | 2021-9-5 02:45:04 | 显示全部楼层 |阅读模式

多队列网卡是一种技术,最初是用来办理 网络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四元组,将一条流总是收到类似 的队列。同时触发与该队列绑定的制止 。

Linux多队列网卡的硬件的实现详解

图1.1 82575硬件逻辑图

2. 2.6.21从前 网卡驱动实现

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

Linux多队列网卡的硬件的实现详解

图2.1 2.6.21之前内核协议栈

Linux多队列网卡的硬件的实现详解

图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性能降落 。

Linux多队列网卡的硬件的实现详解

图3.1 2.6.21之后内核协议栈

Linux多队列网卡的硬件的实现详解

图3.2 2.6.21之后net_device

4.制止 绑定

当CPU可以平行收包时,就会出现不同的核收取了同一个queue的报文,这就会产生报文乱序的题目 ,办理 方法是将一个queue的制止 绑定到唯一的一个核上去,从而避免了乱序题目 。同时假如 网络流量大的时间 ,可以将软制止 匀称 的分散到各个核上,避免CPU成为瓶颈。

Linux多队列网卡的硬件的实现详解

图4.1 /proc/interrupts

5.制止 亲合改正

一些多队列网卡驱动实现的不是太好,在初始化后会出现图4.1中同一个队列的tx、rx制止 绑定到不同核上的题目 ,如许 数据在core0与core1之间活动 ,导致核间数据交互加大,cache掷中 率降低,降低了服从 。

Linux多队列网卡的硬件的实现详解

图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所示。

                                                                                     

Linux多队列网卡的硬件的实现详解

Linux多队列网卡的硬件的实现详解

图4.2 set_irq_affinity

Linux多队列网卡的硬件的实现详解

图4.3 合理的制止 绑定

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

上一页12 下一页 阅读全文
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 馥琳 | 2021-9-20 00:25:54 | 显示全部楼层
看了这么多帖子,第一次看看到这么有内涵的!
回复

使用道具 举报

avatar 紫色214 | 2021-10-9 02:20:16 | 显示全部楼层
不灌水就活不下去了啊!
回复

使用道具 举报

avatar 雷JY | 4 天前 | 显示全部楼层
视死如归的架势啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则