当前位置: 首页 > news >正文

ubuntu下udp丢包

问题描述

  • 在测试开发板rk3588的千兆网口时,出现了丢包情况。
  • 具体是从内网中连续接收数据,发送端速率在650Mbps左右。
  • 接收端丢包率15%左右。

问题原因

  • ubuntu对于应用程序能申请的udp接收缓存大小存在限制。如下命令可以查看当前的Ubuntu接收缓存限制大小。
    cat /proc/sys/net/core/rmem_max

  • 获取结果如下:

jie@ubuntu:~$ cat /proc/sys/net/core/rmem_max
212992
  • 可知接收缓存大小为212KB左右,对于650Mbps的发送速率,非常小。
  • 使用如下命令将接收缓存限制调整到60M
    sysctl -w net.core.rmem_max=60000000 # 设置为 60M
  • 同时修改最大缓存报文数量,将系统允许的最大缓存设置为6000个,如下所示:
    sudo sysctl -w net.core.netdev_max_backlog=6000
  • 最后修改网络的mtu值为1280,这里将mtu调为1280,因为我的程序固定一包长1062,所以调小mtu可以加速处理流程,我的接收网口是eth0,所以命令如下:
    ifconfig eth0 mtu 1280 up

修改程序代码

  • 上一节的第一条仅修改了系统缓存上限设置,我们的程序也要同事修改缓存大小,我这里使用的c++编程,在设置接收sock的数据时,设置缓存大小为48M,如下所示:
cosnt char* valueTemp = new char[48 * 1024 * 1024]; // 48M
//设置接收缓冲区
setsockopt(sockfd,S0L SOCKET, S0 RCVBUF, (const char*)&valueTemp, sizeof(valueTemp));
  • 注意,这里应用的接收缓存要在上节设置的系统缓存上限限制内,如上节设置是60M,这里48M就没有问题!

问题解决

  • 再次测试,以650Mbps发送,接收端实现了0丢包。

修改cpu频率

  • udp的速率瓶颈也和cpu处理存在一定关系,为了进一步稳定速率和丢包率,这里对cpu频率进行修改。
    cpufreg-set-r-f 2.26GHz
  • 使用如上命令讲cpu频率固定在2.26GHz。
  • 可将上述命令添加进/etc/rc.local中,使其开机自动执行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 关于换肤框架Android-skin-support的使用方法
  • Qt登录窗口设计
  • HTML 列表和容器元素——WEB开发系列10
  • 人工智能缺陷检测方案METIS(梅迪斯):汽车零部件检测
  • 我的世界 异地联机教程 无需公网IP、服务器
  • 利用EditPlus进行Json数据格式化
  • 机器学习系列—深入探索弗里德曼检验:非参数统计分析的利器
  • 3.MySQL面试题之Redis 和 Mysql 如何保证数据一致性?
  • 【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
  • 将2,3,4,5,6,8分别填入算式“口口口X口口口“的“囗“中,怎么填使得算式结果最大。
  • 什么是视频比特率?与视频时长是什么关系
  • Python环境安装及PIP安装(Mac OS版)
  • python蟒蛇绘制
  • 【Qt开发】QtCharts图表 在ui上添加QChartView控件并进行绘图配置
  • drools规则引擎 规则配置文件drl语法使用案例
  • ES6指北【2】—— 箭头函数
  • 时间复杂度分析经典问题——最大子序列和
  • css属性的继承、初识值、计算值、当前值、应用值
  • egg(89)--egg之redis的发布和订阅
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Lucene解析 - 基本概念
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • oschina
  • Protobuf3语言指南
  • sessionStorage和localStorage
  • Vim Clutch | 面向脚踏板编程……
  • VUE es6技巧写法(持续更新中~~~)
  • 基于 Babel 的 npm 包最小化设置
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 深度学习中的信息论知识详解
  • 详解移动APP与web APP的区别
  • nb
  • 06-01 点餐小程序前台界面搭建
  • 湖北分布式智能数据采集方法有哪些?
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​学习一下,什么是预包装食品?​
  • # 安徽锐锋科技IDMS系统简介
  • # 数论-逆元
  • (+4)2.2UML建模图
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • .Net CF下精确的计时器
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net 代码性能 - (1)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • ::前边啥也没有
  • @staticmethod和@classmethod的作用与区别
  • @SuppressWarnings(unchecked)代码的作用
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [8] CUDA之向量点乘和矩阵乘法
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [Android]创建TabBar