免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2392 | 回复: 3

[应用] 高手的经验:网络通信程序中,最快的数据发送和接收速度能达到的多少? [复制链接]

论坛徽章:
0
发表于 2010-06-03 14:08 |显示全部楼层
本帖最后由 it-rocket 于 2010-06-03 16:31 编辑

因为最近在linux下调试A/D以100ksps采样率进行采样并将数据通过socket或者RPC两种不同的通信程序发送到windows客户端时,发觉采样出来的数据网络传输得很慢,导致板子上开辟的缓冲区溢出,数据丢失。但又不知道该怎样极大地提高网络速度才能更好地将数据传输过来。请大家提提意见。

每秒100k的采样率,其数据量有: 100k*4=400kByte=3.2Mbps

开发板的网卡速率为10M/100Mbps。
该程序只能使用TCP来传输。

   此外想请教大家通过setsockopt等设置socket之后,能达到的最快的数据发送、接收速率能达到多少?做了些什么具体的设置?非常感谢。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-06-04 22:00 |显示全部楼层
有线能达到90%以上
最起码也能到80%吧
溢出是不是因为你处理器处理数据太慢了 (步骤太多或者等待阻塞等)。 如果是应用层处理还有进程交换的时间.
如果在驱动层处理就对处理器的利用充分些.

论坛徽章:
0
发表于 2010-06-05 11:13 |显示全部楼层
有线能达到90%以上
最起码也能到80%吧
溢出是不是因为你处理器处理数据太慢了 (步骤太多或者等待阻塞等)。 ...
smalloc 发表于 2010-06-04 22:00


恩, 可能是我的步骤太多或者程序效率低下导致了别的线程占用了大量CPU,而使数据没有及时传送过来。

高手们对这个问题分析主要在这个帖子里:  http://linux.chinaunix.net/bbs/thread-1165109-1-1.html

处理器是S3C2440,性能上是否没有太多问题?

经过查看板子CPU的使用率,该程序所构成的5个线程的CPU之和高达98%,其中
T1(应该是我的采集线程,优先级最高)为89.7%;
T2(怀疑是我的处理数据线程)占8.2%,
T3占了0.1%,
T4占了0.0%,
T5占了0.1%。
其中top命令占了1.7%。总的CPU几乎有99。
此外五个线程占得内存比例均为27.4%。


确实在这个采集线程函数中,简单的一个死循环构成了该线程体:
while(1)
{
  usleep(20480);
  // 调用驱动的取数接口
  ...
  // 将数据填入FIFO1缓冲中
  ...
}

  估计这样做占用了我大量的CPU,虽然也有usleep在那里。由于采样线程很关键,其的优先级是最高的,并且里面也没有其他额外的操作。我怀疑是否是该采样线程占据了大量的CPU,而导致发送数据线程不能及时获得CPU,而未能快速发送数据?


溢出是不是因为你处理器处理数据太慢了 (步骤太多或者等待阻塞等)。 如果是应用层处理还有进程交换的时间.
如果在驱动层处理就对处理器的利用充分些.

论坛徽章:
2
2015年亚洲杯之阿曼
日期:2015-03-23 18:11:212015亚冠之大阪钢巴
日期:2015-09-07 13:54:16
发表于 2010-06-11 22:09 |显示全部楼层
需要有这么快的更新速度。没必要吧。
如果需要这么高的实时性的话可以直接在arm板做控制
windows客户端显示1s更新一次就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP