打印

找lwip的高手兼职(深圳)

[复制链接]
4954|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
技术新人|  楼主 | 2013-8-6 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 技术新人 于 2013-8-6 16:31 编辑

有个项目比较着急,卡在lwip主动发送数据的速度上,一直上不去。由于对这块不熟悉,进展缓慢。之前有在其它板块求助,还是进展缓慢。

硬件平台是一个ARM7,运行在80M,整体性能肯定高过STM32的。目前怀疑是我们的流程不对或者lwipopt.h的配置不对。因为速度太慢了。根据我们的测试,目前速度大概也就4~5个包/秒。所以怀疑是流程不对。

大致的流程是:
硬件主机做为TCP Server,PC做为TCP Client。PC连接上之后,硬件主机就给PC通过TCP发送数据。硬件主机判断是否收到ack,如果收到就继续发送,没有收到ACK,就等待。

我们根据30s pc收到的数据量来大致估算速度,发现速度大概也就4~5个包/秒。但是ping包的响应很快,基本上ping 1400字节包,响应也就是1~2ms。

希望找lwip的高手,晚上或者本周末到公司,帮忙解决问题。有向公司申请费用的。

公司在南油大厦附近。希望兼职的兄弟住在附近才好。最好是这几天晚上,实在晚上不行的话,本周末也行。

有意向的请联系 arm.linux@126.com

相关帖子

沙发
bbstr| | 2013-8-6 15:46 | 只看该作者
说说你的网卡情况,用的什么arm,网卡接口是什么

使用特权

评论回复
板凳
原野之狼| | 2013-8-6 15:59 | 只看该作者
性能调优需要:技术 + 耐心 + 运气
我们公司最高的手就负责性能调优的活。

转篇**给你看看吧:

In contrast to tuning for low code size, many users want to tune lwIP for maximum throughput. This page wants to give an overview what influences the performance of an ethernet device using lwIP.
Architecture designEdit
Favour big-endian systems over little-endian systems if you have the choice (since network byte order is big-endian, so conversion can be omitted)
One bottle neck of the system is the ethernet MAC driver (called "netif-driver" with lwIP):
Use interrupts and DMA if possible
Make sure it is as fast as it can be
Often, drivers can be written in a way to prefer TX or RX. If, for your application, one direction is more important than the other one, make sure this direction is preferred in high load situations!
If the hardware allows, make sure the driver supports scatter-gather. This allows the driver to DMA a packet consisting of multiple pbufs (e.g. one pbuf for the protocol headers and another pbuf for the application data, which can then be sent zero-copy).
The other big bottleneck is (TCP- and UDP-) checksum calculation (creating checksums when transmitting data, checking checksums when receiving data):
If the hardware allows it, leave checksum-generation and -checking to the hardware (see also configuration options CHECKSUM_CHECK_* and CHECKSUM_GEN_*)
If you do not have hardware support, make sure you have a really optimized software routine to calculate the checksums. This routine is probably the most critical path regarding throughput in the whole stack, so knowing the architecture well and writing a highly optimized assembler-routine is recommended!
Define a fast alternative (that copies the architecture's maximum word size) for the default memcpy (define MEMCPY), which results in (slow!) byte-copy on many targets
Configuration options influencing throughputEdit
Options are only listed here if they must be changed from their default values in opt.h. Make sure to check your lwipopts.h for unnecessarily changing from defaults.
First of all, turn on statistics in a test-run (defines LWIP_STATS and *_STATS for each protocol) and check that none of the statistic counters reports an error (member '.err' != 0)
Generally, set the MEMP_NUM_* defines as high as your memory allows to prevent running out of pools in high-load situations
Turn off debugging options (don't define LWIP_DEBUG, )
As mentioned in the previous paragraph, set the CHECKSUM_CHECK_* and CHECKSUM_GEN* defines to 0 if checksum is generated and/or checked by your hardware
If your memory allows it, set MEM_USE_POOLS to 1 and define LWIP_MALLOC_MEMPOOL's in lwippools.h. This may waste memory, but pools are way faster than a heap!
On 32-bit platforms, set ETH_PAD_SIZE to 2 to make sure data and headers are 32-bit aligned.
You may even turn off structure-packing for better performance, but this is not thoroughly tested, yet, so make sure you test it!
When using a version later than 1.3.2, make sure LWIP_CHECKSUM_ON_COPY is set to 1. This lets the stack calculate the checksum on-the-fly when copying data using memcpy. (This has no effect when the hardware generates/checks checksums.)
Set LWIP_RAW to 0 if you don't nee raw pcbs (speeds up input processing).
For TCP optimizations, see Tuning TCP

http://lwip.wikia.com/wiki/Maximizing_throughput

使用特权

评论回复
地板
技术新人|  楼主 | 2013-8-6 16:28 | 只看该作者
对不起了,之前没有描述清楚。描述的内容重新更新了下

使用特权

评论回复
5
技术新人|  楼主 | 2013-8-6 16:36 | 只看该作者
3楼的朋友,多谢您了。

按照我们的估计,应该是我们的流程不对。因为目前我们tcp发送的速度太低了,只有4~5包/秒。

使用特权

评论回复
6
drentsi| | 2013-8-6 17:22 | 只看该作者

使用特权

评论回复
7
bbstr| | 2013-8-6 18:22 | 只看该作者
建议你用netio或者其他开源的测试工具,先测试一把tcp,看看带宽具体是多少 也许你整套测试环境有问题

如果确实有问题了,你在网卡的驱动里加些打印时间,看看是不是你驱动里处理慢了

我们之前s3c44b0(66MHz)+lwip+rtl8019(10M网卡),数据总线连接,tcp的带宽最高是1.03MBps的样子

使用特权

评论回复
8
lhtzyn777| | 2013-8-6 20:30 | 只看该作者
大概流程是查询当前TCPPCB还有多少memory空间可用,调用tcp_write将数据写入buf中,其实数据并没有发送,再次调用tcp_out才真正的发送。
大概流程就在这样。另外你发生速度如此慢,可能内部进行了重试,你可以试试修改定时器,将时间变短,加快重试频率看看是否有改善。
大概流程就是这样。我觉得我算是有点熟。最近一年一直在用。说错了,请指正。

使用特权

评论回复
9
zhlei327| | 2013-8-7 08:37 | 只看该作者
跟我遇到的问题一样,不过后来我解决了,发现是一个地方配的不对,遗憾的是你在深圳那么远,我在广州。

使用特权

评论回复
10
技术新人|  楼主 | 2013-8-7 09:04 | 只看该作者
lhtzyn777 发表于 2013-8-6 20:30
大概流程是查询当前TCPPCB还有多少memory空间可用,调用tcp_write将数据写入buf中,其实数据并没有发送,再 ...

多谢您呀。我们把250ms定时器修改成了25ms,问题还是依旧。另外我们在重试中加打印,没有打印出来,应该说明是没有重发的

使用特权

评论回复
11
sxhhhjicbb| | 2013-8-7 13:46 | 只看该作者
我用的时候,测试结果是8Mbit/s。

使用特权

评论回复
12
lhtzyn777| | 2013-8-7 22:34 | 只看该作者
TCP一般是2包一次应答。例如LWIP向PC发送数据,如果发送一包数据,则PC会等待下一包,如果在200MS左右没有等到下一包,则才会对本包数据进行一次ACK。会不会这个地方出问题了?可以把你的手法数据贴出来看看

使用特权

评论回复
13
lhtzyn777| | 2013-8-7 22:36 | 只看该作者
在发送数据时尽量一次多发些,看看效率是不是就提上来了,我这边用的可以达到40Mbit

使用特权

评论回复
14
buaaszb| | 2013-8-8 11:26 | 只看该作者
建议先抛开具体任务和流程,仅编写一个测试代码,将客户机发来的数据原样返回。你可以用周立功的TCP&UDP测试软件进行数据的发送,设备将收到的数据原样返回。这样看看传输速度能到多少。

使用特权

评论回复
15
avt-deng| | 2013-8-8 15:30 | 只看该作者
这个问题就是存在怎么收费的问题啊,一些技术问题,讲破了就是很简单,也许楼主的问题只需要在某一个函数中修改某一个初始化的参数。但是这个不说的话,可能他们花上一个月,一个部门几个工程师的努力也解决不了,但是,你跟他们说“哦,你只需要将那个初始化流程修改成这样就OK了”,然后他们也就恍然大悟了。
你跟他们说,你们这个能给我付5万的咨询费用么?根本就没有公司认这个帐的!
呵呵,我就这样给好多公司这样免费当过好多次技术顾问。

使用特权

评论回复
评论
sinanjj 2013-8-10 00:06 回复TA
关键问题是这个形成不了商业模式。而且钱又不是一次100万可以买房翻身的。意义大么? 
评分
参与人数 1威望 +1 收起 理由
高工老头 + 1 就是这么回事,空手套白狼。
16
bbstr| | 2013-8-8 16:34 | 只看该作者
avt-deng 发表于 2013-8-8 15:30
这个问题就是存在怎么收费的问题啊,一些技术问题,讲破了就是很简单,也许楼主的问题只需要在某一个函数中 ...

这个看你遇到什么样的公司了,我们曾经给一个研究所没收任何订金的前提下,帮他们实验wince下的DM8168视频采集功能,这个功能在原厂也没有做,即使原厂做也是从linux移植,但是里面有个瓶颈是底层通信协议的移植,结果最后甲方发现也是到了这部分短期内没法完成,提出来不合作了。但是,我们这边还是把板子等相关东西寄回去了,后来甲方自知理亏,主动要求付了5000辛苦费过来,没有要任何的我们阶段性成果。

所以,这个就看你遇到一个什么样的合作对象,遇到好的,不会让你吃亏,后续还有合作。遇到不好的,就当自己增加了一份经验了

使用特权

评论回复
评论
sinanjj 2013-8-10 00:07 回复TA
主动付了5000辛苦费过来。有没有要一个5w的发票? 
17
xuwulian| | 2013-8-8 22:35 | 只看该作者
先确定下是硬件主机发送慢还是PC机响应慢。

使用特权

评论回复
18
戒指320| | 2013-8-9 19:18 | 只看该作者
www.rt-thread.com 建议到这里寻求高手帮助,绝对靠谱。

使用特权

评论回复
19
mybao| | 2013-8-9 22:00 | 只看该作者
连个电话也没有,不太靠谱。15楼说的好

使用特权

评论回复
20
e_007| | 2013-8-10 12:35 | 只看该作者
本帖最后由 e_007 于 2013-8-10 12:47 编辑

:$难得又见到这种临危救急的情形出现...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:、低成本串口wifi模块; wifi插座、wifi遥控器、wifi安防、wifi视频等智能家居解决方案

18

主题

53

帖子

0

粉丝