尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
100G交换机时延却突然增加30%——一次DPDK TX Completion回收机制深度分析(下)
八、TX Completion 为什么不会实时发生很多开发者第一次阅读DPDK发送代码时都会产生一个疑问既然一个数据包已经发送完成为什么不能立即释放对应的mbuf原因在于对于支持DMA的网卡而言CPU并不知道DMA什么时候真正结束。真正的数据路径如下Application │ ▼ TX Descriptor │ ▼ NIC DMA读取mbuf │ ▼ MAC发送 │ ▼ 硬件更新Descriptor状态 │ ▼ 驱动回收Descriptor │ ▼ 释放mbuf只有当网卡确认DMA已经完成并更新Descriptor状态以后。驱动才能安全释放对应mbuf。否则CPU可能提前释放一块仍然正在被DMA访问的内存这会造成严重的数据错误。因此TX资源释放永远滞后于rte_eth_tx_burst()。核心知识点四rte_eth_tx_burst()完成的是提交Submit而不是完成Complete。九、批量回收为什么更高效继续分析DPDK驱动。无论Intel还是NVIDIA PMD。通常都不会每完成一个Descriptor。立即执行资源回收。原因很简单。如果每发送一个Packet就读取一次TX Descriptor状态。PCIe访问次数将急剧增加。因此驱动通常采用批量检查。例如Packet1 Packet2 Packet3 ...... Packet32 ↓ 统一检查Completion ↓ 统一释放mbuf这样能够减少PCIe访问。提高发送吞吐。但是也带来了资源释放存在延迟。十、问题真正出现的位置继续分析应用统计。发现发送速度始终稳定。但是资源释放具有明显波动。例如时间 0ms ↓ 发送 10000 Packet ↓ 释放 9800 ---------------- 10ms ↓ 发送 10000 ↓ 释放 6000 ---------------- 20ms ↓ 发送 10000 ↓ 释放 13000可以看到释放速度并不是均匀发生。而是成批完成。于是系统中的Inflight mbuf开始周期性增长。核心知识点五对于高速交换机而言。真正重要的不是发送速度。而是发送资源的周转速度。如果资源回收慢。即使带宽没有达到极限。系统仍然可能出现吞吐下降。十一、为什么版本升级后才暴露继续比较两个版本。最终发现新版本调整了TX Queue参数。其中一个配置发生变化tx_free_thresh该参数控制驱动什么时候开始批量回收已经完成发送的Descriptor。阈值设置过高。意味着需要等待更多Descriptor完成才开始统一释放。于是mbuf停留时间更长。对象周转效率下降。需要说明的是tx_free_thresh的具体作用由 PMD 实现决定。DPDK API 对其定义的是回收触发阈值并不保证所有驱动都采用完全一致的回收策略因此调优时应结合具体 PMD 源码和官方文档。十二、如何验证为了进一步验证。增加TX Ring监控。同时统计可用mbuf数量。结果每当Inflight mbuf达到高点。可用mbuf同步下降。而TX Completion发生以后。二者同时恢复。整个过程完全一致。说明真正的问题不是发送慢。而是资源回收慢。十三、源码分析中的一个细节很多开发者注意到DPDK提供rte_eth_tx_done_cleanup()于是认为主动调用就可以立即释放所有资源。事实上并不是。该接口只是尝试回收已经完成的Descriptor。如果硬件尚未完成对应发送。那么依然不能释放mbuf。因此它并不能绕过NIC发送完成机制。这一点也是很多工程实践中容易误解的地方。核心知识点六TX资源回收最终仍然依赖硬件Completion。软件只能发现。不能制造。十四、工程优化方案经过分析最终进行了以下优化。一、重新评估TX回收参数结合业务Burst特点。调整TX回收阈值。避免资源长时间滞留。注意不是越小越好。过小意味着驱动需要更加频繁检查Completion。反而增加CPU开销。因此需要结合业务模型综合评估。二、保持发送Burst稳定以前应用发送8 32 64 12 48调整以后统一32 32 32减少Descriptor碎片化。提升回收效率。三、监控资源周转增加如下统计Inflight mbufTX Ring OccupancyCompletion Rate相比仅监控PPS。更容易提前发现资源回收异常。十五、优化结果连续压测24小时。结果如下指标优化前优化后PPS周期性下降稳定P99 Latency8.3 μs6.1 μsInflight mbuf周期波动基本稳定Completion Delay高明显下降整个过程中CPU始终保持100%。说明真正改善的是资源生命周期管理。而不是CPU利用率。十六、全文总结DPDK发送路径最大的特点就是异步。应用调用rte_eth_tx_burst()。仅仅意味着Packet已经提交给网卡。真正的数据发送、DMA完成、Descriptor回收、mbuf释放都是后续异步完成。因此很多性能问题。并不是发送速度不足。而是资源回收效率下降。对于高性能交换机而言。TX路径实际上也是一条完整的资源流水线。只有Descriptor、mbuf、DMA、Completion形成稳定闭环。系统才能长期保持高吞吐、低时延。全文核心知识点rte_eth_tx_burst()表示提交成功不代表发送完成。TX Descriptor 生命周期包含提交、DMA、发送、Completion、回收五个阶段。批量Completion能够提升吞吐但会引入资源释放延迟。TX性能不仅取决于发送速度还取决于资源周转速度。tx_free_thresh是重要调优参数但应结合具体PMD实现分析。rte_eth_tx_done_cleanup()只能回收已完成的Descriptor不能强制完成发送。监控 Inflight mbuf 和 Completion Rate比单纯监控 PPS 更容易发现TX路径瓶颈。工程实践建议对于100G及以上DPDK交换机建议建立一套完整的TX资源监控体系包括Inflight mbuf 数量TX Ring 使用率Descriptor 回收速率Mempool 可用对象数量Packet 生命周期。这样能够比传统的CPU、PPS和网卡错误统计更早发现系统进入资源周转瓶颈为持续优化提供可靠依据。
RELATED

相关推荐

通讯协议--CAN控制器局域网

通讯协议--CAN控制器局域网

文章目录一、CAN简介1、CAN总线特征:2、主流通信协议对比二、物理层1、CAN硬件电路2、CAN电平标准3、CAN收发顺-TJA1050(高速CAN)1.引脚定义:2.发送通路(TXD → CANH/CANL)3.接收通路(CANH/CANL → RXD&…

📅 2026/10/2 13:16:52
obsidian黑曜石 整合CC安装保姆教程

obsidian黑曜石 整合CC安装保姆教程

Obsidian安装保姆教程 一、版本选择建议 对于大多数用户,推荐使用最新稳定版,同时根据插件兼容性和个人需求选择是否保留旧版功能。 最新稳定版 最新版本通常包含最新功能和性能优化,例如1.2.8版本修复了早期版本可能导致笔记丢失的问题,同时支持更多新插件 。如果你希望…

📅 2026/10/2 15:16:50
一人公司必备AI工具:5分钟将详情页变废为宝,产出高转化社媒图文

一人公司必备AI工具:5分钟将详情页变废为宝,产出高转化社媒图文

详情页变废为宝!一人公司必备 AI 工具,如何 5 分钟产出高转化社媒图文? 对于“一人公司(OPC)”的经营者来说,最奢侈的资产不是资金,而是精力。 很多老板在电商平台(淘宝、拼多多、…

📅 2026/10/2 13:56:33
MORE NEWS

更多资讯

📰

SSE与LangChain流式输出实战:AI对话打字机效果全链路指南

做 AI 应用做了快两年,我最大的感受是:能不能把一个流式对话做顺,决定了用户打开你产品的第一印象。你辛辛苦苦调好了 Prompt,结果前端一直在转圈,用户等了三秒没有反应,直接关页面了——这类问题十有八九不…

📰

高云FPGA程序固化与软核处理器开发全流程实战指南

1. 项目概述 1.1 高云FPGA项目背景与核心需求 这段时间一直在折腾高云FPGA的工程,从逻辑设计到程序固化,再到软核处理器跑起来,整个过程踩了不少坑,也总结出了一些可以直接用的经验。高云半导体这两年在国内FPGA市场越来越常见&a…

📰

轻量级AI中台实战:OCR与本地大模型实现财务自动对账

做财务系统的朋友跟我吐槽过一件事:月底对账的时候,手里拿着供应商的清单、内部ERP的单据、银行流水的电子账单,三边数据来回倒腾,光是把各种格式的金额、单号、日期整理到一个表里就要花一整天,中间还免不了手滑粘错单…

📰

2024上半年系统分析师综合知识真题解析:高频考点与错题复盘指南

简介:本资源为2024上半年系统分析师综合知识真题的答案与解析文档,面向备考软考系统分析师的中高级考生及计算机专业学习者,帮助读者在冲刺阶段快速检验知识掌握程度、定位薄弱环节。压缩包内共1个docx文件,约46KB,内容…

📰

Dify + RAG实战:100页手册秒变AI问答助手

最近做了一个把 100 页产品手册变成 AI 问答助手的小项目,主角是 Dify、知识库和 RAG。同事之前查一个操作参数,要在 PDF 里翻半天目录,现在直接问一句,AI 几秒钟给出答案,还会附带原文出处。整个过程没有写太多代码&a…

📰

DeepSeek Harness 桌面端实测:从安装配置到技能调用的完整指南

前阵子刷社区的时候,我发现 DeepSeek 官方仓库悄悄多了一个叫 Harness 的桌面端安装包,没有做任何大喇叭宣发,Release 页面只挂了简短说明。社区里已经有人开始跑起来了,我也第一时间下载安装,连着跑了几天。简单说&am…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬