DPDK imissed、ierrors、rx_nombuf

news2025/1/12 6:01:14

在采用DPDK进行网络抓包时常常会通过rte_eth_stats_get函数获取当前网卡的丢包状态,首先看一下该函数的声明:

// 函数声明(dpdk-stable-19.11.3/lib/librte_ethdev/rte_ethdev.h)
int rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats);

// rte_eth_stats 结构体(dpdk-stable-19.11.3/lib/librte_ethdev/rte_ethdev.h)
struct rte_eth_stats {
    uint64_t ipackets;  /**< Total number of successfully received packets. */
    uint64_t opackets;  /**< Total number of successfully transmitted packets.*/
    uint64_t ibytes;    /**< Total number of successfully received bytes. */
    uint64_t obytes;    /**< Total number of successfully transmitted bytes. */
    uint64_t imissed;
    /**< Total of RX packets dropped by the HW,
     * because there are no available buffer (i.e. RX queues are full).
     */
    uint64_t ierrors;   /**< Total number of erroneous received packets. */
    uint64_t oerrors;   /**< Total number of failed transmitted packets. */
    uint64_t rx_nombuf; /**< Total number of RX mbuf allocation failures. */

可以看到rte_eth_stats结构体中包含imissed、ierrors、rx_nombuf三个与抓包性能相关的统计量,以下内容将对其进行展开介绍。

DPDK 数据包处理流程

在对以上三个统计量进行展开介绍之前有必要介绍一下DPDK对数据包的处理流程,这将对理解这三个统计参数具有较好的帮助。
在这里插入图片描述

  1. 物理网卡监听物理链路上的信息号,解析得到数据包,并将其存放在物理网卡上的RX FIFO中;
  2. 物理网卡上的DMA将数据包写入到内存中的rte_rx_queue;
  3. 应用程序通过PMD的形式轮询从rte_rx_queue读取数据包。

三个参数解析

imissed
imissed发生在上述DPDK抓包流程的第二步,表示rte_rx_queue已经塞满了数据包,所以该包被丢失。此时该包存在于物理网卡的RX FIFO中,但是不会存在于内存中的rte_rx_queue中。

ierrors
ierrors发生在上述第一步中,表示该数据包存在错误,被网卡丢弃。此时该包不会存在于物理网卡的RX FIFO中,更不会存在于内存中的rte_rx_queue中。

// dpdk-stable-19.11.3/drivers/net/ixgbe/ixgbe_ethdev.c:3369
stats->ierrors  = hw_stats->crcerrs +
              hw_stats->mspdc +
              hw_stats->rlec +
              hw_stats->ruc +
              hw_stats->roc +
              hw_stats->illerrc +
              hw_stats->errbc +
              hw_stats->rfc +
              hw_stats->fccrc +

rx_nombuf
rx_nombuf记录在读取数据包时分配mbuf错误的次数,一般情况下不会影响网卡的丢包(imissed、ierrors)。该变量的维护在dpdk-stable-19.11.3/drivers/net/ixgbe/ixgbe_rxtx.c:1651:rx_recv_pkts中。

解决方法

上面讲了那么多,那么如何才能降低丢包呢?

imissed

如上所述imissed表示从网卡到内存写入数据包时的丢包个数,因此需要从以下2个方面进行调试:

1. PCIe是否存在瓶颈?

因为报文从网卡到系统是经过PCIe总线来传输的,PCIe总线的吞吐将直接影响数据包从网卡拷贝到内存的速率。通过lspci -s 03:00.1 -vv | grep Lnk可以查看当前网卡的PCIe速率,其中03:00.1是网卡的PCIe地址,可通过lspci -v|grep Ethernet查到。
在这里插入图片描述
由上图可以看到网口能力是传输速率5GT/s,总线宽带x8(LnkCap),实际使用的是传输速率5GT/s,总线宽带x8(LnkSta),工作正常。如果传输速率和总线带宽下降,则需要调试PCIe兼容性问题。一般是服务器与网卡兼容性问题,可以更换网卡或者更换服务器。如果有条件,可以找服务器厂商从bios等方面进行详细定位解决兼容性问题。

2. rte_rx_queue中的数据包没有及时消费掉?

1.检查CPU运行模式,cpupower frequency-info
在这里插入图片描述
如果当前运行在powersave模式下,可以将其修改为performance,提升CPU频率,cpupower frequency-set -g performance

2.程序性能不佳,无法及时消耗掉rte_rx_queue中的数据包。

ierrrors
这个就没得办法了,毕竟本身数据包就有错误,接收了也没啥意思。如果实在想接收,可通过rte_eth_rxconfoffloads成员进行设置。

rx_nombuf
直接增大mempool的大小。

Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家 教程
https://ke.qq.com/course/5066203?flowToken=1043068

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高级程序员和新手小白程序员区别你是那个等级看解决bug速度

IT入门深似海 ,程序员行业&#xff0c;我觉得是最难做的。加不完的班&#xff0c;熬不完的夜。 和产品经理&#xff0c;扯不清,理还乱的宿命关系 一直都在 新需求-做项目-解决问题-解决bug-新需求 好像一直都是这么一个循环。&#xff08;哈哈哈&#xff09;我觉得一个好的程序…

【传染病模型】

传染病模型&#xff1a;原理介绍与应用实战 一、概述 在公共卫生研究中&#xff0c;传染病模型是一种关键的理论工具&#xff0c;用于理解和预测传染病的传播方式。 二、传染病模型原理 2.1 SIR模型 SIR模型是描述感染性传播病病人数量变化最简单的模型之一。其中&#xf…

不要再重复造轮子了,这几款开源工具类库贼好使

在实际项目开发中&#xff0c;从稳定性和效率的角度考虑&#xff0c;重复造轮子是不被提倡的。但是&#xff0c;自己在学习过程中造轮子绝对是对自己百利而无一害的&#xff0c;造轮子是一种特别能够提高自己系统编程能力的手段。 基于 SpringBoot Vue uni-app 实现的全套电商…

小白如何快速入门?

入门 Web 安全、安卓安全、二进制安全、工控安全还是智能硬件安全等等&#xff0c;每个不同的领域要掌握的技能也不同。当然入门 Web 安全相对难度较低&#xff0c;也是很多人的首选。主要还是看自己的兴趣方向吧。 本文就以下几个问题来说明网络安全大致学习过程&#x1f447…

【CSS3系列】第三章 · CSS3新增边框和文本属性

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

5月总共面试15次,我真哭了....

3年测试经验原来什么都不是&#xff0c;只是给你的简历上画了一笔&#xff0c;一直觉得经验多&#xff0c;无论在哪都能找到满意的工作&#xff0c;但是现实却是给我打了一个大巴掌&#xff01;事后也不会给糖的那种... 先说一下自己的个人情况&#xff0c;普通二本计算机专业…

【Spring Cloud】Spring Cloud 中 Zuul 网关原理及其配置

文章目录 前言一、Zuul 网关简介二、Zuul 网关使用场景三、Zuul 网关原理3.1 过滤器3.2 生成路由并发送给后端服务3.3 处理路由响应 四、Zuul 网关配置过程步骤1&#xff1a;添加依赖步骤2&#xff1a;创建配置类步骤3&#xff1a;配置路由规则步骤4&#xff1a;添加过滤器 五、…

【C# 10 和 .NET 6】使用MVC模式构建网站(笔记2)

3. 自定义 ASP.NET Core MVC 网站 现在您已经了解了基本 MVC 网站的结构&#xff0c;您将对其进行自定义和扩展。您已经为 Northwind 数据库注册了一个 EF Core 模型&#xff0c;因此下一个任务是在主页上输出一些数据。 3.1 定义自定义样式 主页将显示 Northwind 数据库中77 种…

常见的IO模型

计算机硬件包括CPU&#xff0c;内存&#xff0c;网卡 为了避免用户应用和操作系统内核产生冲突乃至内核崩溃&#xff0c;用户应用和内核是隔离开的 1)进程的寻址空间会被划分成两部分&#xff0c;内核空间和用户空间&#xff0c;内核和用户应用都无法直接访问物理内存&#xff…

【Vue】Vuex,Vue-Router

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 Vuexvue-router Vuex 将公用的数据统一存放在store(全局数据中心)中&#xff0c;实现更方便的跨…

从实习到秋招成为一名安全工程师,我经历了什么

前言 借朋友口述总结了安全招聘面试经历分享&#xff0c;希望更多的人看到这篇文&#xff0c;从中得到启发&#xff0c;找到自己心仪的工作。 基本情况 签了字节的三方&#xff0c;秋招终于告一段落。从八月份边实习边准备秋招到现在&#xff0c;经历了许多&#xff0c;这篇帖…

2023金三银四Java开发岗热门面试题总结

最近很多粉丝朋友私信我说&#xff1a;熬过了去年的寒冬却没熬过现在的内卷&#xff1b;打开 Boss 直拒一排已读不回&#xff0c;回的基本都是外包&#xff0c;薪资还给的不高&#xff0c;对技术水平要求也远超从前&#xff1b;感觉 Java 一个初中级岗位有上千人同时竞争&#…

都说00后已经躺平了,但是有一说一,该卷的还是卷啊。

这不&#xff0c;三月份春招我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条件不太好&…

Java学习路线(21)——网络通信

一、网络通信三件套 1、IP地址&#xff1a; 设备在网络中的地址&#xff0c;唯一标识 概念&#xff1a; Internet Protocal&#xff0c;简称为IP&#xff0c;全称“互联网协议地址”。 常见分类&#xff1a; IPv4&#xff08;32位&#xff09; 和 IPv6&#xff08;128位&#…

IDEA debug断点调试认识与技巧

IDEA debug断点调试认识与技巧 文章目录 IDEA debug断点调试认识与技巧认识debug常见的操作如何开启debug模式 基本用法和快捷键1、显示执行点&#xff08;Alt F10&#xff09;2、步过&#xff08;F8&#xff09;3、步入&#xff08;F7&#xff09;4、强制步入&#xff08;Alt…

【容器云架构】确定容器网络calico最佳网络选项

大图 了解 Calico 支持的不同网络选项&#xff0c;以便您可以根据需要选择最佳选项。 价值 Calico 灵活的模块化架构支持广泛的部署选项&#xff0c;因此您可以选择适合您特定环境和需求的最佳网络方法。这包括使用各种 CNI 和 IPAM 插件以及底层网络类型以非覆盖或覆盖模式运行…

线性回归模型一二三

文章目录 什么是线性回归线性回归的求解一元线性回归&#xff08;最小二乘法&#xff09;多元线性回归 衍生求解梯度下降智能搜索算法求解&#xff08;PSO&#xff09;简要分析 线性回归与简单神经网络联系类比推导反向传播 总结 什么是线性回归 线性回归的基本假设是&#xf…

Java JUC并发编程调优

前言 1、JUC是指有关 java.util.concurrent包以及其子包&#xff0c;这些包都是有关线程操作的包 2、HTTPS服务请求中&#xff0c;WEB服务只负责创建主线程来接收外部的HTTPS请求&#xff0c;如果不做任何处理&#xff0c;默认业务逻辑是通过主线程来做的&#xff0c;如果业务…

预训练大语言模型的三种微调技术总结:fine-tuning、parameter-efficient fine-tuning和prompt-tuning

预训练大模型&#xff0c;尤其是大语言模型已经是当前最火热的AI技术。2018年Google发布BERT模型&#xff08;BERT在DataLearner官方模型卡信息&#xff1a;https://www.datalearner.com/ai-models/pretrained-models/BERT &#xff09;的时候&#xff0c;大家还没有意识到本轮…

国际植物命名数据库(International Plant Names Index)

功能介绍 https://www.ipni.org/ 是国际植物命名数据库&#xff08;International Plant Names Index&#xff09;的官方网站。国际植物命名数据库是一个全球性的植物命名和分类资源&#xff0c;旨在提供植物命名信息的权威来源。以下是该网站的一些特点和功能&#xff1a; 植…