DPDK - mlx5 drop action 性能 patch

算吐槽一下吧!
Mellanox CX5 一条简单的 drop flow 在就能导致网卡硬件丢包造成数据包处理瓶颈!
跟了这个问题 2 年多, 这次终于解决了!

flow create 0 ingress pattern eth / ipv4 / udp / end actions drop / end

可惜的是, 这个只是解决了一个问题 ! hw flow 性能问题依然没有解决, 不知道是本身CX5硬件的瓶颈还是 firmware问题, 在添加多条no match flow后, CPU RX 小包性能直接从 148.8Mpps 掉到了 55Mpps!

以下是测试过程, 希望能早日解决:

testpmd> flow create 0 ingress pattern eth / ipv4 / udp dst is 53 / end actions count / rss / end
Flow rule #0 created
testpmd> flow create 0 ingress pattern eth / ipv4 / udp src is 53 / end actions count / rss / end
Flow rule #1 created
testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end actions count / rss  / end
Flow rule #2 created
testpmd>

net/mlx5: fix the drop action for the DR/DV

here are multiple branches in rdma-core library backing:
the rte flows:- Verbs- Direct Verbs (DV)- Direct Rules (DR)The Verbs API always requires the specifying the queue even
if there is the drop action in the flow, though the kernel
optimizes out the actual queue usage for the flows containing
the drop action. The PMD handles the dedicated Rx queue to
provide Verbs API compatibility.The DV/DR API does not require explicit specifying the queue
at the flow creation, but PMD still specified the dedicated
drop queue as action. It performed the packet forwarding to
the dummy queue (that was not polled at all) causing the
steering pipeline resources usage and degrading the overall
packet processing rate. For example, with inserted flow to
drop all the ingress packets the statistics reported only
15Mpps of 64B packets were received over 100Gbps line.Since the Direct Rule API for E-Switch was introduced the
rdma-core supports the dedicated drop action, that is recognized
both for DV and DR and can be used for the entire device in
unified fashion, regardless of steering domain. The similar drop
action was introduced for E-Switch, the usage of this one can be
extended for other steering domains, not for E-Switch's one only.This patch:- renames esw_drop_action to dr_drop_action to emphasizethe global nature of the variable (not only E-Switch domain)- specifies this global drop action instead of dedicateddrop queue for the DR/DV flowsCc: stable@dpdk.org
Fixes: 34fa7c0268e7 ("net/mlx5: add drop action to Direct Verbs E-Switch")
Fixes: 65b3cd0dc39b ("net/mlx5: create global drop action")Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---drivers/net/mlx5/linux/mlx5_os.c | 24 +++++++++++++++++-------drivers/net/mlx5/mlx5.h          |  2 +-drivers/net/mlx5/mlx5_flow_dv.c  | 13 +++++++++++--3 files changed, 29 insertions(+), 10 deletions(-)

DPDK - mlx5 drop action 性能 patch相关推荐

  1. DPDK mlx5 驱动使用报错

    还是记录一个小点,希望对大家有所帮助. 背景: 最近需要用 DPDK测试 Mellanox的 ConnectX-4 Lx网卡.在 DPDK中,该网卡对应的驱动是 mlx5.使用的 DPDK版本是 20 ...

  2. 数据平面开发套件(DPDK)中的Vhost / Virtio的配置和性能

    目录 Vhost / Virtio简介 接收和发送路径 可合并路径 向量路径 不可合并的路径 PVP路径性能比较 I / O转发吞吐量 Mac转发吞吐量 PVP MAC转发吞吐量 测试台信息 关于作者 ...

  3. 《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)

    Table of Contents Open vSwitch(OVS)中的DPDK性能加速 174.虚拟交换机简介 175.OVS简介 176.DPDK加速的OVS 177.OVS的数据通路 178. ...

  4. dpdk 程序适配麦洛斯 mlx5 网卡

    目标 使用 dpdk-16.04 版本的数通引擎需要适配 Mellanox 网卡,需要支持 dpdk secondary 进程正常收发包. 现状 dpdk-16.04 的 mlx5 pmd 驱动支持要 ...

  5. DPDK系列(二)——性能提升

    首先,DPDK和内核网络协议栈不是对等的概念. DPDK只是单纯的从驱动拿数据,然后组织成数据块给人用,跑在用户态.功能相当于linux的设备无关接口层,处于socket之下,驱动之上.只不过linu ...

  6. dpdk对虚拟化的支持调研

    目录: 虚拟化 dpdk的实现研究 virtio vhost SR-IOV 热迁移相关 研究拓展 本文记录近期对dpdk在虚拟化和云计算领域应用的研究成果,内容梳理如下. 虚拟化 虚拟化,抽象来说,就 ...

  7. dpdk对虚拟化支持研究

    目录: 虚拟化 dpdk的实现研究 virtio vhost SR-IOV 热迁移相关 研究拓展 本文记录近期对dpdk在虚拟化和云计算领域应用的研究成果,内容梳理如下. 虚拟化 虚拟化,抽象来说,就 ...

  8. 简单的DPDK介绍与分析

    DPDK介绍及分析 什么是DPDK Intel® DPDK 全称 __Intel Data Plane Development Kit__,是intel提供的数据平面开发工具集,为Intel arch ...

  9. 《深入浅出DPDK》读书笔记(十六):DPDK应用篇(基于DPDK的存储软件优化:SPDK)

    Table of Contents 基于DPDK的存储软件优化 180.基于以太网的存储系统 181.以太网存储系统的优化 SPDK介绍 182.SPDK介绍 (1)兼容性 (2)性能 183.用户态 ...

  10. 看完JDK并发包源码的这个性能问题,我惊了!

    国庆的时候闲来无事,就随手写了一点之前说的比赛的代码,目标就是保住前 100 混个大赛的文化衫就行了. 现在还混在前 50 的队伍里面,稳的一比. 其实我觉得大家做柔性负载均衡那题的思路其实都不会差太 ...

最新文章

  1. 最小化局部边际的合并聚类算法(中篇)
  2. 数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码
  3. 麦格纳软件公司绩效考核信息化管理解决方案
  4. 蒙特卡罗方法—举例说明(C++、python)
  5. http-server 简介 复制的
  6. 用MediaPlayer record audio简例
  7. 电子商务平台的搭建技巧与成功案例资料集
  8. java线程cpu 1000_CPU突然飙升到300%,Dubbo活动线程数直接飙到1000
  9. [软件更新]LeadBBS 6.0正式发布(更新日志和下载)
  10. 基于时域线性插值法计算信号的周期
  11. 微信记账本小程序(代码+功能介绍)
  12. Learun FrameWork,基于.NET的智能化开发工具
  13. java实现马赛克,java如何用Processing生成马赛克风格的图像
  14. 【航天】【火箭】长征九号
  15. Ubuntu22.04安装riscv64-toolchain和QEMU
  16. 01背包与完全背包的区分
  17. 洛谷—P1417 烹调方案(背包问题)
  18. 关于 SSL 及 CA 证书,你可能需要知道这些
  19. iOS隐藏和显示tabBar
  20. 隆云通光合有效辐射传感器 LYA-16

热门文章

  1. git几个救命的命令
  2. BZOJ2190 [SDOI2008]仪仗队
  3. js基础-12-判断数组和判断对象的方法
  4. Element-UI学习笔记-安装
  5. java中的内部类_Java中成员内部类的使用
  6. php测试时自动下载什么情况,新手使用PHPCUSTOM打开php文件变下载的原因分析
  7. python娃娃在地上摆积木_Python中乐高积木——函数
  8. app下载获取邀请码php,PHP根据id生成邀请码
  9. android studio moudel,Android Studio中Project和Module的关系
  10. 密码学基础(五):常见名词解释和密码学标准