加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Zynq 7000上的嵌入式Linux,几乎丢弃了所有UDP数据包

发布时间:2021-01-08 03:42:51 所属栏目:Linux 来源:网络整理
导读:我在Zynq 7000板上使用Xilinx Linux发行版.它有两个ARM处理器,一些L2缓存,一个DRAM接口和大量的FPGA架构.我们的设备收集F??PGA处理的数据,然后通过千兆网络将其发送到其他系统. 我们需要在此设备上支持的服务之一是SNMP,它依赖于UDP数据报,虽然SNMP确实支持T

我在Zynq 7000板上使用Xilinx Linux发行版.它有两个ARM处理器,一些L2缓存,一个DRAM接口和大量的FPGA架构.我们的设备收集F??PGA处理的数据,然后通过千兆网络将其发送到其他系统.

我们需要在此设备上支持的服务之一是SNMP,它依赖于UDP数据报,虽然SNMP确实支持TCP,但我们无法强制客户端使用它.

我发现这个系统几乎失去了所有的SNMP请求.

重要的是要注意网络和CPU都不会过载.数据速率不是特别高,CPU通常约为30%负载.此外,我们正在使用SNMP的SNMP和代理库,因此我们可以控制这些,因此系统守护程序破坏不是问题.但是,如果我们停止处理和网络活动,则SNMP请求不会丢失. SNMP正在自己的线程中处理,我们确保保持稀疏和扩散请求,以便在任何时候都应该只有一个请求缓冲.由于CPU负载较低,因此上下文切换到接收进程以处理请求时应该没有问题.

由于它不是CPU或以太网带宽问题,我最好的猜测是问题在于Linux内核.尽管网络负载很低,但我猜测网络堆栈缓冲区数量有限,这就是它丢弃UDP数据报的原因.

在谷歌搜索时,我找到了如何使用netstat报告丢失数据包的示例,但这似乎不适用于此系统,因为没有“-s”选项.如何监控这些丢包?我该如何诊断病因?如何调整内核参数以最大限度地减少这种损失?

谢谢!

最佳答案 Wireshark或tcpdump是一个很好的方法.
您可能需要查看/ proc / sys / net / ipv4 /中的设置,或者尝试使用较旧的内核(3.x而不是4.x).我们在使用4.4内核的Zynq上遇到了tcp连接问题,但这可以在系统日志中看到(关于SYN cookie和可能的洪水的警告).

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!