直连PC和通过交换机连PC网卡性能差异
本帖最后由 liwei_swjtu 于 2015-02-11 16:10 编辑遇到一个比较怪异的问题,如下描述:
一台嵌入式Linux设备,出百兆网口,用iperf作性能测试工具。做如下测试:
1.PC机(windows端)作iperf服务端,linux设备做客户端,均使用TCP连接进行测试。
a)将设备与PC机直接连接,使用iperf进行测试,结果为10Mbits/s左右;
b)通过交换机将PC与设备连接,使用iperf,参数相同进行测试,结果为86Mbits/s左右。
2.PC机(windows端)作iperf客户端,linux设备作服务器,均使用TCP连接进行测试。
a)将设备与PC机直接连接,使用iperf进行测试,结果为92Mbits/s左右;
b)通过交换机将PC与设备连接,使用iperf,参数相同进行测试,结果为92Mbits/s左右。
查看了两种连接状态下设备上的网口速率,均为100M。
目前暂没有其他思路,请各位帮忙看看,感激不尽! 顶一下,求思路。 再顶一下。求思路。 问题已经定位,是由于在定义ETH设备的DMA RXTX链环大小不一致引起,但至于为什么两者不一致会引起这个问题,还在找原因,有人有碰到过类似问题的吗? 这个问题,解决了吗?我也遇到了同样的问题。能否说一下是如何决绝的。 回复 5# songjyf
LZ 四楼提到了问题的原因啊。你对照调整一下试试
比较好奇case 1/a, 丢包发生在哪端? linux or windows?瓶颈是rx还是tx? 我是用stm32+lwip,通过交换机连接PC,在ram中造数据发送,速度可达9MB/s。但是如果直接连到PC上,速度只有几百k。通过抓包工具查看,有丢包现象。重传比较严重。我用的是TCP通讯。
然后尝试将单片机的发送速度降下来。PC那边接收速度就会有提升。大概可以达到3MB/s.
所以怀疑是,PC端的接收缓冲区不不够大,用setsockopt,设置接收缓存为128K。情况也没有什么好转。
至于是,DMA的TX,RX链大小不一致,具体是指那一边,是arm+linux的RXTX链不一致,还是和PC端的不一致? 纯udp通信,两个方向有区别么? 如果是丢包导致的重传的话,估计问题在rx端,那样的话,指的是PC端的网卡队列长度吧?windows下对应linux ehtool -g/-G的配置?
页:
[1]
2