[PATCH 1/3] WayCa: add DPDK hns3 driver features description doc

29 Jun
2023
29 Jun
'23
5:10 p.m.
Add DPDK hns3 driver features description doc.
Signed-off-by: Huisong Li
---
...�络-板载网卡DPDK驱动特性介绍.md | 338 ++++++++++++++++++
.../images/iofwd_image.png | Bin 0 -> 57678 bytes
.../images/perf_test_model_image.png | Bin 0 -> 69898 bytes
3 files changed, 338 insertions(+)
create mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡DPDK驱动特性介绍.md
create mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/iofwd_image.png
create mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/perf_test_model_image.png
diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡DPDK驱动特性介绍.md b/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡DPDK驱动特性介绍.md
new file mode 100644
index 0000000..eea7109
--- /dev/null
+++ b/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡DPDK驱动特性介绍.md
@@ -0,0 +1,338 @@
+# WayCa SIG 鲲鹏板载网卡DPDK驱动介绍
+
+## DPDK hns3驱动简介
+
+鲲鹏920系列处理器网络控制器的驱动有两个:内核态的hns3驱动和DPDK中的hns3驱动(用户态)。网卡设备同一时刻可在两者中的任意一个驱动下正常运行。DPDK hns3驱动支持物理网卡(PF)设备,也支持内核态PF生成的SR-IOV的虚拟网卡(VF)设备。
+
+### 源码仓路径
+openeuler kernel仓:https://gitee.com/openeuler/kernel.git
+openeuler DPDK仓: https://gitee.com/src-openeuler/dpdk
+DPDK社区主线仓:http://dpdk.org/git/dpdk
+DPDK稳定分支仓:http://dpdk.org/git/dpdk-stable
+驱动代码目录:drivers/net/hns3
+
+### 内核依赖
+板载网卡设备需通过内核态UIO驱动将设备托管到用户态才可运行,hns3驱动支持的UIO驱动有:igb_uio和vfio_pci。
+
+- igb_uio驱动
+该驱动不随linux主线演进,由DPDK社区自己维护,需使用源码编译ko,方可使用。
+•限制:
+(1) 仅可在关SMMU场景使用。
+(2) 仅支持一个中断,在多中断场景不可使用。
+
+- vfio驱动
+该驱动随linux主线演进,开和关SMMU场景均支持,支持多中断场景(如中断+轮训收包模式),因此推荐使用vfio_pci驱动。
+VFIO相关的编译选项:
+
+```
+CONFIG_VFIO=m
+CONFIG_VFIO_PCI=m
+CONFIG_VFIO_NOIOMMU=y
+CONFIG_VFIO_VIRQFD=m
+CONFIG_VFIO_IOMMU_TYPE1=m
+```
+注:不同的内核版本vfio相关的ko不同,请以实际的内核版本为准。
+
+## 基础版本特性列表
+* 支持多种接口形态
+•支持光口、电口和背板形态
+•支持10M/100M/1000M/10G/25G/40G/50G/100G速率
+•电口支持速率和流控自协商
+•光口和背板支持速率、FEC、PAUSE流控自协商
+* 支持多种收包模式
+•轮询模式
+•中断+轮询模式
+* 支持CPU卸载
+• 支持TX/RX校验和卸载
+• 支持TSO&GRO卸载
+• 支持VLAN TAG卸载
+• 支持RSS
+• 支持流表
+* 支持基本配置
+• 支持配置MTU
+• 支持配置MAC地址
+• 支持混杂和全组播模式配置
+• 支持VLAN过滤和PVID
+• 支持配置队列数和修改队列深度
+• 支持rx_buf_len指定
+• 支持MAC pause流控
+• 支持FEC功能
+• 支持速率切换
+• 支持keep CRC功能
+• 支持Basic统计功能
+• 支持link状态管理(link查询/LSC功能/link up/down设置)
+* 支持QOS功能
+• 支持ETS和PFC
+• 支持TM功能
+* 支持故障检测和恢复处理
+• 支持RAS处理
+• 支持FLR复位恢复
+* 支持多种dump功能
+• 支持xstats统计功能
+• 支持dump寄存器
+• 支持设备私有数据
+• 支持dump RxTx描述符信息
+• 支持dump光模块信息
+
+## 重要特性
+• 支持LSE事件上报
+• 支持runtime config功能
+• 支持多种收发包函数
+• 支持多进程功能
+• 支持故障检测和恢复处理
+• 支持高精度时钟协议
+• 支持RSS规则叠加功能
+• 支持流表规则配置
+
+* 更详细的特性列表,以及PF和VF之间特性差异见DPDK官网。
+http://doc.dpdk.org/guides/nics/overview.html
+
+以下主要针对重要特性进行介绍。
+
+### 特性1:支持LSE事件上报
+LSE全称为link status event,表示link事件快速上报,对一些需快速感知link状态变化的业务非常有用。
+
+用户通过rte_eth_dev_info_get()获取设备的dev_flags是否支持LSC能力。
+用法:
+(1) 业务注册事件处理函数;
+(2) 在调用rte_eth_dev_configure()时,若设备支持LSC能力,将struct rte_eth_conf::intr_conf::lsc设置为1。
+(3) 设备link状态变化时,事件处理函数就会被调用。
+
+- 注:
+ (1)PF和VF于DPDK-21.11及以后的版本支持该功能。
+ (2) VF的LSE功能,依赖PF驱动支持主动推送link状态的补丁。
+
+- 内核态依赖
+
+| Commit ID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: | :------------: |
+| 18b6e31f8bf4 | [net: hns3: PF add support for pushing link status to VFs](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18b6e31f8bf4ac7af7b057228f38a5a530378e4e) | kernel v5.13-rc1 | Y |
+
+
+- 用户态patch
+
+| Commit ID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: | :------------: |
+| 3b37cbe6179a | [net/hns3: support LSC event report](https://git.dpdk.org/next/dpdk-next-net/commit/?id=e63ae349e1a829b221a68466955893452aa0411e) | DPDK-v21.05 | Y |
+| 3b37cbe6179a | [net/hns3: refactor PF LSC event report](https://git.dpdk.org/next/dpdk-next-net/commit/?id=3b37cbe6179aeebc02b5e5cf3e39dfb2d5e69a01) | DPDK-v21.05 | Y |
+| 9bc2289fe5ea | [net/hns3: refactor VF LSC event report](https://git.dpdk.org/next/dpdk-next-net/commit/?id=9bc2289fe5ea771f62412fce41c22d9ed7c31e67) | DPDK-v21.05 | Y |
+| 2192c428f9a6 |[net/hns3: fix firmware compatibility configuration](https://git.dpdk.org/next/dpdk-next-net/commit/?id=2192c428f9a6a92a8d8913fd9cf727ffa5810245)| DPDK-v21.05 | Y |
+
+
+注:用户态patch列表中的commit_id为dpdk社区主线的id,下同。
+
+### 特性2:支持runtime config功能
+业务dpdk初始化进程一般会为rte_eal_init传入一些参数,其中程序加载何种设备一般是通过白名单“-a BDF”方式指定的。runtime config就是紧随设备的PCI设备号传入的那部分参数,如"-a 0000:7d:00.0,rx_func_hint=common"。这些参数可传递给该BDF对应的驱动以实现某些功能控制,驱动支持的runtime配置如下表:
+| 参数名 | 参数取值 | 说明 |
+| :------------: | :------------: | :------------ |
+| rx_func_hint | vec/simple/common | 供用户指定目标收包算法 |
+| tx_func_hint | vec/simple/common | 供用户指定目标发包算法 |
+| mbx_time_limit_ms | 2字节十进制数 | 修改VF的同步mbox消息的等待时间,范围(500,UINT16_MAX]。
VF与PF同步mbox消息,需要等待PF回复,默认等待时间为500ms。
若存在cpu调度原因PF可能未在500ms内回复VF的消息,从而导致VF命令发送超时而失败。此时,用户可通过增加此时间以规避问题出现。 | + + +- 用户态patch + +| Commit ID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: | :------------: |
+| a124f9e9591b | [net/hns3: add runtime config to select IO burst function](https://git.dpdk.org/next/dpdk-next-net/commit/?id=a124f9e9591bf2b22b20e2d117775b0ff0b9f684) | DPDK-v21.11 | Y |
+| 2fc3e696a7f1 | [net/hns3: add runtime config for mailbox limit time](https://git.dpdk.org/next/dpdk-next-net/commit/?id=2fc3e696a7f1925b20664b9de15f2430b9b68208) | DPDK-v21.11 | Y |
+
+### 特性3:支持多种收发包算法
+基于性能和功能的权衡考虑,驱动支持以下多种收发包算法。
+| 算法名称 | 对应接口 | 特征 | 支持的版本 |
+| :------------: | :------------: | :------------ | :------------: |
+| Scalar
Scattered
(common) | hns3_recv_scattered_pkts
hns3_xmit_pkts | 支持报文多BD发送和接收;
支持CKSUM、VLAN、PTP、LRO、TSO等offlaod;
功能齐全更通用 | >=19.11 | +| Scalar
Simple | hns3_recv_pkts_simple
hns3_xmit_pkts_simple |仅支持单BD报文收发;
Tx只能工作在MBUF_FAST_FREE或者无offlaod能力模式;
Rx不可工作在scattered场景和不支持LRO功能;
可运用于PTP场景;| >=20.11 | +| Vector
Neon | hns3_recv_pkts_vec
hns3_xmit_pkts_vec | Neon向量指令加速解析和填充描述符;
仅支持单BD报文收发;
Tx只可工作在MBUF_FAST_FREE offload模式;
不可运行在PTP场景;
Rx不支持LRO、VLAN、PTP等功能,接收队列深度有限制;
Rx burst大小为1时不支持;
不支持上报流表的fd_id。 | >=20.11 | + +- 注意: +1. 上表所述的单BD,即一个报文用一个描述符接收,只有一个mbuf。 +2. Rx方向的VLAN功能包括vlan strip/filter、qinq strip。 +3. 向量算法的接收队列深度需满足:大小是64的整数倍、且大于等于128; +4. 网卡支持的最小发包长度为33Byte,小于该长度的报文需软件padding到该长度驱动方可发送。Simple、Neon向量发包算法,不支持软件padding,由业务保证。 +5. 驱动根据用户配置的offload能力,进行收发包算法匹配。可通过rx/tx_burst_mode接口获取当前收发包算法。 + +- 用户态patch + +| CommitID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: | :------------: |
+|7ef933908f| [net/hns3: add simple Tx path](https://git.dpdk.org/next/dpdk-next-net/commit/?id=7ef933908f04983ce6e8d1a930d59263b84d0485) | DPDK-20.05 |Y|
+|a3d4f4d291 |[net/hns3: support NEON Rx](https://git.dpdk.org/next/dpdk-next-net/commit/?id=a3d4f4d291d79e2801397055067d903ef5e4d4aa)| DPDK-20.11 | Y |
+|e31f123db0 |[net/hns3: support NEON Tx](https://git.dpdk.org/next/dpdk-next-net/commit/?id=e31f123db06b4400dbaa1298882401cebd541398)| DPDK-20.11 | Y |
+
+
+### 特性4:支持多进程功能
+DPDK框架支持多进程功能,主进程对主从进程间的共享内存和资源具有完全的控制权限,负责创建共享内存区并对共享内存做初始化操作。从进程依附于主进程,不会做共享内存区的初始化,不能对主从进程共享的内存做释放和重申请的操作。若从进程中有ethdev设备,从进程不能为设备做队列的建立或释放,不可对设备进行初始化和卸载。
+
+hns3 PF和VF驱动均支持ethdev设备的主从进程方式运行,支持情况如下:
+(1) 主进程负责对网络设备的初始化,可对设备进行配置和查询;从进程仅支持查询设备配置信息。
+(2) 只支持主进程到从进程的通讯,支持的消息类型有:
+|消息名 | 功能 |
+| :------------: | :------------: |
+|HNS3_MP_REQ_START_RXTX | 请求使能RxTx数据通路 |
+|HNS3_MP_REQ_STOP_RXTX| 请求关闭RxTx数据通路|
+|HNS3_MP_REQ_START_TX| 请求使能Tx数据通路|
+|HNS3_MP_REQ_STOP_TX|请求关闭Tx数据通路|
+
+- 合入主线patch
+
+| Commit ID | Subject | Tag | OpenEuler合入状态
|
+| :------------: | :------------: | :------------: |:------------: |
+|69f9b420d858| [net/hns3: add Tx start/stop multi-process handling](https://git.dpdk.org/next/dpdk-next-net/commit/?id=69f9b420d858ddbecb8d05c17fe77dbaf76df187)| DPDK-21.11 | Y |
+|ff6dc76e40b8| [net/hns3: refactor multi-process initialization](https://git.dpdk.org/next/dpdk-next-net/commit/?id=ff6dc76e40b8d707df9c6273215d00fa46b628be)|DPDK-21.11| Y |
+|443242212bae| [net/hns3: unregister MP action on close for secondary](https://git.dpdk.org/next/dpdk-next-net/commit/?id=443242212baeb67d298c54cc927553c92aa29bec)|DPDK-21.11| Y |
+|841f8693536f| [net/hns3: fix multi-process action register and unregister](https://git.dpdk.org/next/dpdk-next-net/commit/?id=841f8693536f9410fd51d385e1090d35cfe59914)|DPDK-21.11| Y |
+|323263717774| [net/hns3: fix secondary process reference count](https://git.dpdk.org/next/dpdk-next-net/commit/?id=323263717774df318d8a6e64ac8bfe546e03b8f6)|DPDK-21.11| Y |
+|ac8962e96599| [net/hns3: fix ordering in secondary process initialization](https://git.dpdk.org/next/dpdk-next-net/commit/?id=ac8962e96599b713b3e87d22be602a2d9d951321)|DPDK-21.05| Y |
+|23d4b61fee5d| [net/hns3: support multiple process](https://git.dpdk.org/next/dpdk-next-net/commit/?id=23d4b61fee5dc75ced7938169dc87a6174a093aa)|DPDK-19.11| Y |
+
+
+### 特性5:支持故障检测和恢复处理
+网卡硬件支持RAS错误故障上报,驱动支持RAS故障检测,并通过IMP、Global、PF/VF等复位进行功能恢复,以支持在不复位系统就能恢复模块功能,从而增强系统可靠性。
+网卡异常时,支持FLR(function level reset)复位恢复,命令如下:
+> echo 1 > /sys/bus/pci/devices/0000\:7d\:00.0/reset
+
+如果业务正在进行收发包处理,驱动会先通过替换收发包算法为dummy函数的方式来停流,再进行硬件复位流程。触发复位后,PF和VF驱动有复位相关日志打印,驱动xstats统计中有复位相关统计。
+
+### 特性6:支持高精度时钟协议
+
+IEEE1588 协议,又称 PTP( precise time protocol,精确时间协议),时间同步精度可以达到亚微秒级别。
+使用方法请参考DPDK工程中examles\ptpclient的实现。
+
+- 合入主线patch
+
+| Commit ID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: |:------------: |
+|6170abd5c0cc|[net/hns3: fix inaccurate RTC time to read](https://git.dpdk.org/next/dpdk-next-net/commit/?id=6170abd5c0cc3d8cf4e358c4200ed7737d639d10)| DPDK-23.03 | Y |
+|4ac14c1d961b|[net/hns3: fix Rx with PTP](https://git.dpdk.org/next/dpdk-next-net/commit/?id=4ac14c1d961b27212f7af1c6441fa8f7ec594db9)| DPDK-22.11 | Y |
+|3ca3dcd65101 | [net/hns3: fix vector Rx/Tx when PTP enabled](https://git.dpdk.org/next/dpdk-next-net/commit/?id=3ca3dcd6510127162aaef359cf5b28684693da07)| DPDK-22.03 | Y |
+|38b539d96eb6 |[net/hns3: support IEEE 1588 PTP](https://git.dpdk.org/next/dpdk-next-net/commit/?id=38b539d96eb60cd8bb50e4b4f7bb8f5d4c01212c)| DPDK-21.05 | Y |
+
+
+### 特性7:支持RSS规则叠加功能
+驱动rte_flow接口支持配置的RSS action有:types(元组)、func(算法)、key和queue(重定向表)。RSS action配置接口如下:
+
+```
+struct rte_flow_action_rss {
+ enum rte_eth_hash_function func; /**< RSS hash function to apply. */
+ uint32_t level;
+ uint64_t types; /**< Specific RSS hash types (see RTE_ETH_RSS_*). */
+ uint32_t key_len; /**< Hash key length in bytes. */
+ uint32_t queue_num; /**< Number of entries in @p queue. */
+ const uint8_t *key; /**< Hash key. */
+ const uint16_t *queue; /**< Queue indices to use. */
+};
+```
+hash算法、KEY和重定向表,在硬件中一个function只有一个硬件寄存器开关或者一个表项,属于全局配置。元组使能的配置,硬件每个function可基于报文类型来使能对应的元组域,属于非全局配置。
+DPDK-20.11.8及以后的版本支持RSS规则叠加功能(若使用版本中没有此功能,请查看是否回合了此关键patch: e3069658da9f ("[net/hns3: reimplement hash flow function](https://git.dpdk.org/next/dpdk-next-net/commit/?id=e3069658da9ffb6f83a0d972ff2776c405eb6a8f)"))。
+
+* 配置策略如下:
+1. rte flow接口配置RSS功能的优先级高于ethdev ops接口。
+2. 驱动支持带pattern和不带pattern属性+RSS action的规则。
+ (a) 不带pattern属性创建规则时,表示RSS规则中的action是作用于所有流类型。
+ (b) 带pattern属性创建规则,一般表示该规则只对pattern属性指定的流类型生效。
+3. 带pattern属性配置规则时,若RSS types为0,则与pattern指定流类型匹配的所有类型的报文的RSS hash均会被disable;若types大于0,则types需按照如下要求配置:
+ (a) types中必须包含与pattern指定的流类型关联的RSS types,且只允许指定一种。如pattern指定eth/ipv4,types只可指定为ipv4、ipv4-other或ipv4-frag。
+ (b) types还可指定L3或L4的SRC/DST_ONLY,但同一层的SRC和DST不可同时下发。若types中不设置任何SRC/DST_ONLY,则会使能该报文类型支持的所有元组。
+4. 不带pattern属性配置RSS types,其配置效果等价于ethdev ops接口配置元组,会作用于所有流类型。
+5. 后面的规则与前面的规则有配置项重叠时,新规则的配置项会覆盖旧规则的重叠配置项;若后面的规则被销毁后,前面的规则重叠配置项会被激活。
+6. destroy一条规则,若驱动中还有其他规则,会还原被该条规则覆盖的旧规则中的配置项。若无任何规则,则RSS配置会还原到ethdev ops接口的配置状态或者默认RSS配置状态。
+7. flush所有规则,RSS配置会还原到ethdev ops接口的配置状态或者默认RSS配置状态。
+
+- 注意:
+1. RSS ethdev ops接口和rte_flow接口不支持交叉混合使用。
+2. 带pattern属性创建RSS规则时,该规则一般只对pattern指定的流类型生效。但hns3驱动的重定向表、算法和hash key为全局配置,对其他流类型同样生效。因此不建议用户带有pattern属性配置重定向表、算法和hash key。
+
+
+### 特性8:支持流表规则配置
+- 通过配置一些过滤规则,对接收的报文进行匹配,根据命中结果对报文进行丢弃或转发处理;提供的计数功能可支持规则的命中计数。仅hns3 PF驱动支持该功能。
+- 接收路径上流表优先级高于RSS,接收报文时先按照流表规则进行匹配,若不命中再走RSS处理流程。
+
+- 支持ether、vlan、tcp/udp/sctp(ipv4和ipv6)、隧道报文(vxlan/nvgre/geneve)的规则匹配;驱动支持根据以下表中的报文字段进行规则匹配:
+
+| 报文字段 | 字段宽度(bits) | 说明 |
+| :------------: | :------------: | :------------: |
+|ot_eth_type |16|外层报文Ether type|
+|ot_ip_proto |8|外层报文Protocol field for IPv4 packet and Next header field for IPv6 packet|
+|ot_sp |16 |外层报文UDP source port|
+|ot_dp |16 |外层报文UDP destination port|
+|ot_tun_vni |24 |外层报文VxLAN/GENEVE Network identifier or NVGRE Virtual Subnet ID|
+|ot_tun_flow_id |8 |外层报文NVGRE Flow ID|
+|in_dmac|48 |内层报文DMAC |
+|in_smac|48|内层报文SMAC |
+|in_vlan_tag_fst|16 |内层报文Tag1|
+|in_vlan_tag_sec|16 |内层报文Tag2|
+|in_eth_type|16 |内层报文Ether type|
+|in_ip_tos|8|内层报文Type of servers|
+|in_ip_proto|8|内层报文Protocol field for IPv4 packet and Next header field for IPv6 packet|
+|in_sip |128|内层报文IPv4 or IPv6 source address|
+|in_dip |128|内层报文IPv4 or IPv6 destination address|
+|in_sp |16 |内层报文TCP/UDP/SCTP source port|
+|in_dp |16 |内层报文TCP/UDP/SCTP destination port|
+|in_l4_rsv |32| 内层报文SCTP tag information|
+
+
+- 支持的action类型如下表:
+
+| 报文字段 | 字段宽度(bits) |
+| :------------: | :------------: |
+|RTE_FLOW_ACTION_TYPE_QUEUE |指定报文到给定的队列|
+|RTE_FLOW_ACTION_TYPE_DROP |指定报文丢弃|
+|RTE_FLOW_ACTION_TYPE_RSS |指定报文到几个队列中(流表+RSS)|
+|RTE_FLOW_ACTION_TYPE_MARK |指定报文的Rx mbuf中带有指定的fd_id|
+|RTE_FLOW_ACTION_TYPE_FLAG |指定报文的Rx mbuf中带有fd_id|
+|RTE_FLOW_ACTION_TYPE_COUNT |指定的规则需要硬件计数(支持多个规则共用一个计数寄存器,结合indirect action使用)|
+|RTE_FLOW_ACTION_TYPE_INDIRECT |指定报文流的action为indirect action(需要先创建indiret action)|
+
+- 合入主线patch
+-
+| Commit ID | Subject | Tag |OpenEuler合入状态
|
+| :------------: | :------------: | :------------: |:------------: |
+| f8e7fcbfd0 | [net/hns3: support flow action of queue region](https://git.dpdk.org/next/dpdk-next-net/commit/?id=f8e7fcbfd0b8d883343d11a5e621350362ad77ac) | DPDK-20.11 | Y |
+|fcba820d9b9e| [net/hns3: support flow director](https://git.dpdk.org/next/dpdk-next-net/commit/?id=fcba820d9b9e34007223590d4c75417ed42563c1) | DPDK-19.11 | Y |
+
+## 性能
+### 测试组网:
+
+
+
+
+### 环境配套
+|名称| 描述|
+| :------------: | :------------ |
+|服务器 |XA320 V2 Kunpeng 920|
+|BIOS版本 |1.09 (U76)|
+|OS版本 |openEuler release 22.03 (LTS-Next) |
+|kernel版本 |5.10.0-142.0.0.71.oe2203.aarch64|
+|DPDK版本 |dpdk-22.11.2|
+|GCC版本 |gcc version 10.3.1 (GCC)|
+|meson版本 |0.59.4|
+|编译命令 |meson build && ninja -C build|
+|CPU |主频2600 MHz,96 cores/96 threads|
+|内存 |16 * 32768 MB,主频 2933 MHz|
+|网卡 |华为HNS3 1*100G板载网卡 1块 |
+|驱动 |HNS3 DPDK PMD (based on vfio-pci)|
+|BIOS设置 |开SMMU
Advanced->MISC Config->Support Smmu->Enabled
关闭CPU动态调频
Advanced->Performance Config->Power Policy->Performance| +|grub cmdline |default_hugepagesz=1G hugepagesz=1G hugepages=80 isolcpus=1-18 nohz_full=1-18 rcu_nocbs=1-18 iommu.strict=0| + +- 用例1:HNS3网卡1*100G 不同收发包算法的单核转发能力 +启动命令: +> ./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=common,tx_func_hint=common --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a +./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=simple,tx_func_hint=simple --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a +./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=vec,tx_func_hint=vec --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a + +发包仪以100%速率发包,统计Rx吞吐量。不同收发包算法单核iofwd测试如下: + + +- 用例2:HNS3网卡1*100G 4队列macfwd零丢包性能测试 +启动命令: +> ./build/app/dpdk-testpmd -l 1,3,5,7,9 -n 4 -a 0000:7d:00.0,rx_func_hint=vec,tx_func_hint=vec --file-prefix=lee -- -i --rxq=4 --txq=4 --txd=2048 --rxd=2048 --burst=64 --nb-cores=4 --forward-mode=mac -a + +|Frame Size
(Bytes)|Line Rate
`[1*100G`](Mpps)|Throughput
(Mpps)|Line Rate
(%)| +| :------------: | :------------: | :------------: | :------------: | +|64|148.809|98.0|65.86| +|128|84.459|84.451|99.99| +|256|45.289|45.285|99.99| +|512|23.496|23.494|99.99| +|1024|11.973|11.973|100| +|1518|8.127|8.127|100| diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/iofwd_image.png b/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/iofwd_image.png new file mode 100644 index 0000000000000000000000000000000000000000..f7aa256723ceaeb54bc09f24d1a7f3f91cc54138 GIT binary patch literal 57678 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
VF与PF同步mbox消息,需要等待PF回复,默认等待时间为500ms。
若存在cpu调度原因PF可能未在500ms内回复VF的消息,从而导致VF命令发送超时而失败。此时,用户可通过增加此时间以规避问题出现。 | + + +- 用户态patch + +| Commit ID | Subject | Tag |OpenEuler合入状态
Scattered
(common) | hns3_recv_scattered_pkts
hns3_xmit_pkts | 支持报文多BD发送和接收;
支持CKSUM、VLAN、PTP、LRO、TSO等offlaod;
功能齐全更通用 | >=19.11 | +| Scalar
Simple | hns3_recv_pkts_simple
hns3_xmit_pkts_simple |仅支持单BD报文收发;
Tx只能工作在MBUF_FAST_FREE或者无offlaod能力模式;
Rx不可工作在scattered场景和不支持LRO功能;
可运用于PTP场景;| >=20.11 | +| Vector
Neon | hns3_recv_pkts_vec
hns3_xmit_pkts_vec | Neon向量指令加速解析和填充描述符;
仅支持单BD报文收发;
Tx只可工作在MBUF_FAST_FREE offload模式;
不可运行在PTP场景;
Rx不支持LRO、VLAN、PTP等功能,接收队列深度有限制;
Rx burst大小为1时不支持;
不支持上报流表的fd_id。 | >=20.11 | + +- 注意: +1. 上表所述的单BD,即一个报文用一个描述符接收,只有一个mbuf。 +2. Rx方向的VLAN功能包括vlan strip/filter、qinq strip。 +3. 向量算法的接收队列深度需满足:大小是64的整数倍、且大于等于128; +4. 网卡支持的最小发包长度为33Byte,小于该长度的报文需软件padding到该长度驱动方可发送。Simple、Neon向量发包算法,不支持软件padding,由业务保证。 +5. 驱动根据用户配置的offload能力,进行收发包算法匹配。可通过rx/tx_burst_mode接口获取当前收发包算法。 + +- 用户态patch + +| CommitID | Subject | Tag |OpenEuler合入状态
Advanced->MISC Config->Support Smmu->Enabled
关闭CPU动态调频
Advanced->Performance Config->Power Policy->Performance| +|grub cmdline |default_hugepagesz=1G hugepagesz=1G hugepages=80 isolcpus=1-18 nohz_full=1-18 rcu_nocbs=1-18 iommu.strict=0| + +- 用例1:HNS3网卡1*100G 不同收发包算法的单核转发能力 +启动命令: +> ./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=common,tx_func_hint=common --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a +./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=simple,tx_func_hint=simple --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a +./build/app/dpdk-testpmd -l 1,3 -n 4 -a 0000:7d:00.0,rx_func_hint=vec,tx_func_hint=vec --file-prefix=lee -- -i --rxq=1 --txq=1 --txd=2048 --rxd=2048 --burst=64 --nb-cores=1 --forward-mode=io -a + +发包仪以100%速率发包,统计Rx吞吐量。不同收发包算法单核iofwd测试如下: + + +- 用例2:HNS3网卡1*100G 4队列macfwd零丢包性能测试 +启动命令: +> ./build/app/dpdk-testpmd -l 1,3,5,7,9 -n 4 -a 0000:7d:00.0,rx_func_hint=vec,tx_func_hint=vec --file-prefix=lee -- -i --rxq=4 --txq=4 --txd=2048 --rxd=2048 --burst=64 --nb-cores=4 --forward-mode=mac -a + +|Frame Size
(Bytes)|Line Rate
`[1*100G`](Mpps)|Throughput
(Mpps)|Line Rate
(%)| +| :------------: | :------------: | :------------: | :------------: | +|64|148.809|98.0|65.86| +|128|84.459|84.451|99.99| +|256|45.289|45.285|99.99| +|512|23.496|23.494|99.99| +|1024|11.973|11.973|100| +|1518|8.127|8.127|100| diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/iofwd_image.png b/WayCa-Kunpeng-底软/Wayca-Kunpeng-高速网络/images/iofwd_image.png new file mode 100644 index 0000000000000000000000000000000000000000..f7aa256723ceaeb54bc09f24d1a7f3f91cc54138 GIT binary patch literal 57678 zcmXtA1yELL+Xf_+E&=IAQlz^}q?9fx1*E%?k`ifAkrpKcq`Ra=De2Ay=@3cbzt1=G z&+N|5?&ABN^PD@bIz($}DC6Cvx`~2
9TadvRV0Y$ChGnSg6T#2N={;-9N8zEz* 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
>t=w#DVh7laR(kLwv7T1f{t zr(~gqkq={OT%L!p7r^is#|vXUpg+CqF3g9pp4Oy79>QN!e@6^`LURi3{wM{tk)j?D zZJb$o8caEGpI|jZEd4S>m?!#;n&CQu+dSVhyp(AwY({K-1SkZ}MIe=?(k}SM1u(`O z7Gfouk8l&)tK(k?mt1E59p(-!eHu5I@Z0B&^0A(SkB({EzcwClbd6QxZCpM*h_ezc zfPRMU7^59{MQq9DaSZ!CNj8x8A0>z5I*bv?<0E