请教vxworks下使用socket的send速度问题

sunruistone 2014-08-01 10:58:28
小弟目前使用xilinx的zynq 7045进行控制操作,其中涉及和上位机网络通讯。网络部分是创建了几个套接字,分别用于和上位机之间的上传和下发操作。
现在发现使用send进行发送数据时候,速度很慢,发完一包TCP的1472字节要消耗800us左右,总体数据率不到2MB/s。
网络部分所应用的send,sendto,recv,recvfrom等函数都是vxworks库函数。

领导表示2MB/s无法接受,请教各位达人,这个send速度到底能达到多少,我目前的速率低可能原因有哪些?
...全文
2986 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
嚎啕哥 2016-03-08
  • 打赏
  • 举报
回复
哥们 我也用的6.9,测试条件如下: 1. 有个发送udp包的测试任务,间隔1s发送数据至目标机ip,发送数据有当前发送包序号 2.目标机使用抓包工具,打印接收的信息,接收的信息有唯一的当前包序号 3.网络测试任务同时通过串口打印当前发送完的包序号 结果发现: 抓包序号比串口打印的当前刚刚发送完成的序号总是小1. 不知道这个什么问题?能帮我分析一下吗
qq_20677441 2014-09-11
  • 打赏
  • 举报
回复
我当时测的是64的貌似是11m
Heaven_Redsky 2014-08-30
  • 打赏
  • 举报
回复
学习了,mark。
sunruistone 2014-08-25
  • 打赏
  • 举报
回复
网速问题解决了,之前由于cache在AXI读写时有问题,我就把cache禁用掉了,这直接导致网速慢了十几倍,把cache重新打开之后,网速就恢复了,TCP有35MB/s左右。 但现在使用DMA访问AXI时候还是有点问题。 我在sysLib.c里面添加AXI端口的地址映射,访问权限仿照DDR设置了cache_default,导致AXI接口读写不正常,数据不能正常传送,每一次操作都要单独手动flush或者invalidate cache,后来把AXI端口的cache属性设置为cache_off,端口读写数据正常了,但是DMA还是不正常。
yiwusuoyou2008 2014-08-04
  • 打赏
  • 举报
回复
zynq 7045的自带的网卡在vxworks 6.9下专门做了优化,可以满速跑,你的速度慢是你应用程序问题。
sunruistone 2014-08-03
  • 打赏
  • 举报
回复
多谢指点,明天去仔细调调看。 我用的vxworks是6.9,BSP是Xilinx的zynq7k
引用 1 楼 ghyd 的回复:
尝试去定位一下消耗时间的位置,无外乎两个部分,驱动和协议栈。驱动层面,你可以写个小函数,直接绕过协议栈调用endsend函数,如果你板子上有一些外部io,那么可以在开始发送和发送完成时分别操控一下外部io,用示波器量一下波形,就知道精确的单次发送时间了,如果也是800us左右,说明问题在于驱动,否则就在协议栈。vx5.5的协议栈本来效率就不高,如果是协议占问题,可以尝试打plotform NE的补丁,或者升级使用vxWorks6.6以上系统。如果开始驱动问题,还需进一步定位,是驱动软件效率不高还是网络控制器本身效率就是这样。总之还是比较复杂的。
ghyd 2014-08-01
  • 打赏
  • 举报
回复
尝试去定位一下消耗时间的位置,无外乎两个部分,驱动和协议栈。驱动层面,你可以写个小函数,直接绕过协议栈调用endsend函数,如果你板子上有一些外部io,那么可以在开始发送和发送完成时分别操控一下外部io,用示波器量一下波形,就知道精确的单次发送时间了,如果也是800us左右,说明问题在于驱动,否则就在协议栈。vx5.5的协议栈本来效率就不高,如果是协议占问题,可以尝试打plotform NE的补丁,或者升级使用vxWorks6.6以上系统。如果开始驱动问题,还需进一步定位,是驱动软件效率不高还是网络控制器本身效率就是这样。总之还是比较复杂的。

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧