打印

DM9000+linux+TCP,为何只有1.6MBytes每秒,速度损失在哪里?

[复制链接]
5541|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sddzycnq|  楼主 | 2013-6-3 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DM9000+linux+TCP,为何只有1.6MBytes每秒,速度损失在哪里?

硬件:S3C2416(400MHz) + DDR2(266MHz) + DM9000cep
测试方法:client收到第一个数据(非文件名)包的时刻开始计时(调用time函数),接收完毕时刻结束计时(再次调用time函数)。速度=文件大小/两次时间差

各位前辈,大家好。最近我在做一个TCP文件传输的实验。但测试下来数据传输速度大概只有1.5MBytes每秒。我想知道,原本百兆网卡的DM9000,为什么速度会损失这么多呢?
理论上,100Mbps/10=10MBps,再扣除程序处理过程开销及由总线方式带来的内存访问耗时(估计在20%-30%)。那么还剩余7-8MBps。即使损耗达到50%,也还有5MBps。和我的1.5MBps还是差距太大。
不知道哪位前辈能给指点一二。

相关帖子

沙发
jlass| | 2013-6-4 08:40 | 只看该作者
nand读写速度的限制吧

使用特权

评论回复
板凳
drentsi| | 2013-6-4 15:16 | 只看该作者
百兆TCP理论极限11.9MB/s

使用特权

评论回复
地板
sddzycnq|  楼主 | 2013-6-4 15:28 | 只看该作者
jlass 发表于 2013-6-4 08:40
nand读写速度的限制吧

非常感谢您的回复,这个问题我确实也有考虑过。
我尝试client接收文件数据但在本地保存。速度丝毫没有提升(或者说极其有限的提升)。目前经过一番查阅资料,已经开始怀疑驱动的问题。也就是说这种总线方式访问网卡,速度上是有很多制约瓶颈的。

再次感谢前辈的指点。

使用特权

评论回复
5
sddzycnq|  楼主 | 2013-6-4 15:32 | 只看该作者
drentsi 发表于 2013-6-4 15:16
百兆TCP理论极限11.9MB/s

首先谢谢您的回复。
确实,理论上是这样的。但关于DM9000的速度测试,网络上也有好多朋友测试过,情况跟我测试的差不多。而有的朋友对于其它一些内置MAC的芯片测试结果却相当惊人。可以达到80Mbps甚至90Mbps。这样的吞吐量已经是网卡性能的充分榨取了。
而我的DM9000只能做到标称值的五分之一,甚至更低。这确实是让人郁闷的事情。

再次感谢您的指点。

使用特权

评论回复
6
sddzycnq|  楼主 | 2013-6-4 15:57 | 只看该作者
jlass 发表于 2013-6-4 08:40
nand读写速度的限制吧

不好意思。少打一个字。“但不在本地保存”

使用特权

评论回复
7
bbstr| | 2013-6-4 16:34 | 只看该作者
建议你用Chariot,netio等专业工具测试下

使用特权

评论回复
8
sddzycnq|  楼主 | 2013-6-4 16:57 | 只看该作者
bbstr 发表于 2013-6-4 16:34
建议你用Chariot,netio等专业工具测试下

谢谢你的建议。之后我参考了飞思卡尔的一篇技术文档 《i.MX28 Ethernet Performance on Linux.pdf》做了测试,结果有些许提升,2MBytes每秒。里面运用的工具是:iperf 。

再次感谢。

使用特权

评论回复
9
dld2| | 2013-6-5 11:05 | 只看该作者
直接在ethernet驱动级测试,才能确定dm9000是不是主要因素。400M的arm也不算太快。

使用特权

评论回复
10
sddzycnq|  楼主 | 2013-6-5 12:53 | 只看该作者
dld2 发表于 2013-6-5 11:05
直接在ethernet驱动级测试,才能确定dm9000是不是主要因素。400M的arm也不算太快。 ...

谢谢您的回复。请教一下,你所说的驱动级测试是什么意思呢?
谢谢。

使用特权

评论回复
11
dld2| | 2013-6-5 13:54 | 只看该作者
sddzycnq 发表于 2013-6-5 12:53
谢谢您的回复。请教一下,你所说的驱动级测试是什么意思呢?
谢谢。

操作系统和TCP/IP协议栈都会影响数据吞吐量。要想测试芯片能力,只能直接修改以太网驱动,让处理器只用来收发数据。比如测试发送方向,可以让驱动尽最大能力向芯片输出数据包,然后在PC用网络监测软件接收数据包计算数据速率。

使用特权

评论回复
评论
sddzycnq 2013-6-7 11:33 回复TA
分数就给你吧。主要是我提的问题不够犀利,没有引起大家的共鸣。 
评分
参与人数 1威望 +2 收起 理由
sddzycnq + 2 散分是通过这样散吗?
12
sddzycnq|  楼主 | 2013-6-5 14:38 | 只看该作者
哦。你说的是这个意思啊。但我觉得这样没有意义啊。因为这样你或许会测试出了一个较为满意的结果,但这个结果对实际应用没有丝毫用处啊。你说的这样的方法可以单纯验证芯片是否能达到它的标称指标。你觉得呢?

谢谢你的指点。

使用特权

评论回复
13
sddzycnq|  楼主 | 2013-6-5 14:38 | 只看该作者
dld2 发表于 2013-6-5 13:54
操作系统和TCP/IP协议栈都会影响数据吞吐量。要想测试芯片能力,只能直接修改以太网驱动,让处理器只用来 ...

哦。你说的是这个意思啊。但我觉得这样没有意义啊。因为这样你或许会测试出了一个较为满意的结果,但这个结果对实际应用没有丝毫用处啊。你说的这样的方法可以单纯验证芯片是否能达到它的标称指标。你觉得呢?

谢谢你的指点。

使用特权

评论回复
14
dld2| | 2013-6-5 14:53 | 只看该作者
sddzycnq 发表于 2013-6-5 14:38
哦。你说的是这个意思啊。但我觉得这样没有意义啊。因为这样你或许会测试出了一个较为满意的结果,但这个 ...

怎么没意义。比如某个项目必须达到一定吞吐量,知道了哪里是瓶颈,才能找到相应的解决方法。比如是换处理器还是换网络接口芯片,甚至放弃linux直接裸奔。

使用特权

评论回复
15
sddzycnq|  楼主 | 2013-6-5 23:34 | 只看该作者
dld2 发表于 2013-6-5 14:53
怎么没意义。比如某个项目必须达到一定吞吐量,知道了哪里是瓶颈,才能找到相应的解决方法。比如是换处理 ...

嗯。我明白了。不好意思,我曲解了你的意思。你的意思是从根本上找到问题的原因。我的想法是,如果在不增加软件开发难度的前提下,该网络接口芯片不合要求,那就换掉。可能我太浮于表面了。不好意思。
向您的一丝不苟致敬。再次感谢你的指点。

使用特权

评论回复
16
zzb147| | 2013-6-12 23:11 | 只看该作者
之前用过DM9000,优化驱动,最高速度达到50Mb/s
用USB转LAN的芯片速度可达到95Mb/s,还是很快的,可以参考下。

使用特权

评论回复
17
sddzycnq|  楼主 | 2013-6-13 14:14 | 只看该作者
zzb147 发表于 2013-6-12 23:11
之前用过DM9000,优化驱动,最高速度达到50Mb/s
用USB转LAN的芯片速度可达到95Mb/s,还是很快的,可以参考 ...

你好,你用的SOC是哪款芯片?USB转LAN?这个没用过。请指点。

使用特权

评论回复
18
ic12580| | 2013-6-14 12:24 | 只看该作者
楼主,USB转LAN的,最开始是DM9601,现在是DM9620EP和DM9621NP。

使用特权

评论回复
19
ic12580| | 2013-6-14 12:26 | 只看该作者
关于DM9000的速度传输问题,有2个因素:1.驱动本身没有写好,没有简化;2.网络的传输速率,跟系统的整个性能有关。 一个汽车轮胎速度如果是100M的,装在宝马上,和装在奇瑞上的效果,是不一样的。这样你不能说我们这个轮胎速度达不到。

使用特权

评论回复
20
zzb147| | 2013-6-24 10:07 | 只看该作者
sddzycnq 发表于 2013-6-13 14:14
你好,你用的SOC是哪款芯片?USB转LAN?这个没用过。请指点。

不好意思,这些天没上论坛,我用的是台湾亚信的AX88772B,经测试,还是比较稳定的。

使用特权

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

本版积分规则

6

主题

80

帖子

0

粉丝