ixgbe网卡队列数量设置

news/2024/11/14 13:15:30/

linux内核版本 5.10

1队列初始化 alloc_netdev_mqs

内核网络设备结构使用两个成员表示队列数量,num_tx_queues表示最大队列数量,而real_num_tx_queues表示实际可用的队列数量。以intel的ixgbe驱动来看,在分配网卡设备时,队列数量设置为MAX_TX_QUEUES。

如下将num_tx_queues和real_num_tx_queues都设置为了MAX_TX_QUEUES的值。

宏MAX_TX_QUEUES定义为64,即最大队列数量为64。但是真正可用的队列数量为real_num_tx_queues,之后将更新其值。

2 实际发送队列计算 ixgbe_set_num_queues

函数ixgbe_set_num_queues根据使能的feature特性来设置队列的长度。注意以下的顺序,优先根据使能最多特性feature的情况设置队列,以最小feature的情况结束。这样,可以尽可能为多特性组合分配队列。

以82599网卡为例,其使用如下的发送队列配置:

2.1 SR-IOV与DCB队列 ixgbe_set_dcb_sriov_queues

首先在初始化函数中,RSS队列最大数量取值为:16(IXGBE_MAX_RSS_INDICES)和系统的处理器核心数量,两者之间的较小值。VMDQ队列最大值初始化为1。

在使能macvlan设备(macvlan_open)时,调用函数ixgbe_fwd_add初始化流控类别(TC)。首先,如果可用的pool已经达到pool总数量,尝试增加pool的数量。其次,如果pool数量已经达到最大值,返回错误。a)使能DCB的情况下,pool数量大于等于每个流量类别的队列数量;b)pool数量大于MACVLAN数量(63)。

PF以及每个VF都需要占用一个pool队列,已使用的used_pools数量不能超过最大的VF数量IXGBE_MAX_VF_FUNCTIONS(64)。

由于启用的pool数量越少,分配给每个pool的队列数量就越多。以下pool数量按照三个等级16/32/64进行分配,将最终结果写入VMDQ的limit中。

在同时启用DCB和SRIOV的情况下,对于82599网卡,TC取值为8或者4。

以下计算每个pool(每个TC需要一个pool)的队列数量,vmdq_i的pool数量不能超过最大值(MAX_TX_QUEUES / tcs)。先将vmdq_i加上偏移量转换为索引值,对于8TC的情况,pool数量需小于等于16;对于4TC的情况,pool数量需小于等于32。

IXGBE不支持同时开启DCB,VMDq和RSS,以下关闭RSS和FDIR。真实的发送队列的数量num_tx_queues 等于pool数量乘以每个pool中的队列数量(每个pool中有所有TC类别的队列)。

2.2 DCB队列 ixgbe_set_dcb_queues

首先在初始化时,RSS队列的数量不超过系统的处理器核心数量,最大值为16(IXGBE_MAX_RSS_INDICES)。

如下设置DCB队列函数,首先将发送队列数量平均分到每个流量类别(Traffic Class),对于82598EB,仅支持8TC模式,确保以上计算得到的队列数量不超过4。对于其它网卡(82599),其支持8TC和4TC模式,如果是8TC模式,确保每个类别的队列数量小于8。对于4TC模式,每个流量类别可使用16个队列。

确保以上得到的队列数量小于RSS设置的最大值,最后,每个流量类别的队列数量乘以类别总数为真实的发送队列总数量。

2.3 SR-IOV队列 ixgbe_set_sriov_queues

首先在初始化函数中,RSS队列和FDIR队列的数量不超过系统的处理器核心数量,VMDQ队列最大值初始化为1。

首先,确保rss_i值不超过每个vmdq_i所占用的最大队列数量。其次,将pool值vmdq_i加上偏移量offset转换为索引值,其值限定在最大索引值64(IXGBE_MAX_VMDQ_INDICES)。82599网卡在VT模式下,仅支持32和64pool的配置,对于64pool的情况,每个pool的队列数量限定在2;对于32pool的情况,每个pool的队列数量可选择4/2/1。

此时,发送队列数量由pool数量(vmdq_i非索引),乘以每个pool中的rss_i队列数量来确定。

2.4 RSS队列 ixgbe_set_rss_queues

对于82598/82599/X540网卡,RSS队列的最大值为16(IXGBE_MAX_RSS_INDICES)。对于X550系列网卡,RSS队列最大为63(IXGBE_MAX_RSS_INDICES_X550)。

另外,RSS队列的数量不超过系统CPU核心的数量。FDIR的数量取值在CPU核心数量,和63(IXGBE_MAX_FDIR_INDICES)之间的较小值。

没有启动DCB和VT模式,函数ixgbe_set_rss_queues尝试为每个处理器核心发配一个发送/接收队列。

如果RSS索引大于1,使用FDIR配置的队列索引。真实的发送队列数量等于RSS数量。

3 设置真实队列数量 netif_set_real_num_tx_queues


http://www.ppmy.cn/news/111719.html

相关文章

x550网卡linux驱动,Intel英特尔X520/X540/X550/82599系列万兆网卡虚拟功能驱动4.10.2版For Linux(2021年2月1日发布)...

驱动说明 Intel英特尔X520/X540/X550/82599系列万兆网卡虚拟功能驱动4.10.2版For Linux(2021年2月1日发布) 英特尔X520、X540、X550、82599系列万兆网卡虚拟功能驱动,适用于Linux系统。 具体支持的产品型号如下: 英特尔82598EB 万兆位以太网控制器 英特尔…

i350t4和v2区别_I350T4V2 英特尔原装I350网卡 全新千兆电口网卡

全新服务器网卡,英特尔 AM4芯片 PCI-E X4 插口,适用于千兆以太网 适用于台式机网络连接 千兆电口网卡: I350-T2 千兆电口网卡 PCI-E X4 插口 1000Mbps I350-T4 千兆电口网卡 PCI-E X1 插口 1000Mbps I350-T4 千…

解剖华为 Mate 50 Pro主板

华为Mate 50 Pro整体拆解难度中等,可还原性强。主板则是采用堆叠结构,主板1正面主要IC包括高通骁龙84G处理器芯片…… 日前,有拆解机构对华为Mate 50 Pro整机进行了拆解,表示其内部的配件大约有90%是国产元器件,如屏幕…

Nginx 500 Internal Server Error

Nginx对客户端请求缓冲区大小有个默认限制,如果超过了该值(比如在上传大文件时),会报500 Internal Server Error。 1、 client_body_buffer_size: 指定客户端请求体缓冲区大小,如果请求大于该值&#xff0…

DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器

DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器 https://core.dpdk.org/supported/ 目录 CPUs - 处理器 NICs - 网卡 Crypto Engines - 加密引擎 Baseband Accelerators - 基带加速器 CPUs - 处理器 CPUs - 处理器 架构 armBlueField, DPAA, DPAA2, OCTE…

华硕X550高性价比

华硕X550高性价比   在科学技术飞速发展的当今时代,笔记本的性能也变得越来越热门的话题,什么样的笔记本买的笔记本,已经成为价值的关键指标的最具成本效益,成本较高的标准产品。在此背景下,新的华硕笔记本连连&…

几个适合车载的ITX/MATX服务器主板信息总结

几个适合车载的ITX/MATX服务器主板信息总结 个人对于这类主板的要求开始介绍ROMED4ID-2T永擎X570D4I-2T超微 X11SRI-IF C422 个人对于这类主板的要求 1.最好12VDC 单供电 2.能支持到主流高性能CPU 3.能通过slimline/sff8647/oculink/m.2等方式引出pcie 4.ITX/MATX板型 5.价格不…

x550网卡linux驱动,Intel英特尔X520/X540/X550/82599系列万兆网卡驱动5.10.2版For Linux(2021年2月1日发布)...

驱动说明 Intel英特尔X520/X540/X550/82599系列万兆网卡驱动5.10.2版For Linux(2021年2月1日发布) 英特尔X520、X540、X550、82599系列万兆网卡驱动,适用于Linux系统。 具体支持的产品型号如下: 英特尔82598EB 万兆位以太网控制器 英特尔82599EB 万兆位以…