请问用NC_SystemOpen、NC_NetStart及DaemonNew等函数调用进行TCP和UDP网络数据传输,配置了全双工百M的RJ45以太网,如何提升最大网络吞吐速率?
有哪些方面需要注意?有可能接近百M吗?有哪些相关参数需要设置?有哪些资料需要参考学习?谢谢!
user6619181:
user6619181 说:
请问用NC_SystemOpen、NC_NetStart及DaemonNew等函数调用进行TCP和UDP网络数据传输,配置了全双工百M的RJ45以太网,如何提升最大网络吞吐速率?
有哪些方面需要注意?有可能接近百M吗?有哪些相关参数需要设置?有哪些资料需要参考学习?谢谢!
,
Nancy Wang:
请问现在测得的吞吐率是多少?
,
user6619181:
比如使用ndk_evmOMAPL138_arm9_client这个demo里面的dtask_tcp_echo,只有12KB/s… 跑一会儿以后差不多还会掉一半…
,
Nancy Wang:
感谢提供测试结果,我需要咨询相关工程师再给您回复。
,
Nancy Wang:
请将使用的SDK版本贴出来一下,并且提供有关如何测量吞吐量的详细信息,谢谢!
,
user6619181:
Nancy Wang 说:请将使用的SDK版本贴出来一下,并且提供有关如何测量吞吐量的详细信息,谢谢!
,
Nancy Wang:
我们在NDK 3.40.1.01下没有发现这个例程。
./ndk/nimu/example/helloWorld/omapl138/c674/bios/NIMU_emacExample_lcdkOMAPL138C674xBiosExampleProject.txt./ndk/nimu/example/helloWorld/omapl138/armv5/bios/NIMU_emacExample_lcdkOMAPL138ARMBiosExampleProject.txt./ndk/nimu/example/helloWorld/omapl137/c674/bios/NIMU_emacExample_evmOMAPL137C674xBiosExampleProject.txt./ndk/nimu/example/helloWorld/omapl137/armv5/bios/NIMU_emacExample_evmOMAPL137ARMBiosExampleProject.txt./ndk/nimu/example/client/omapl138/c674/bios/NIMU_emacExampleclient_lcdkOMAPL138C674xBiosExampleProject.txt./ndk/nimu/example/client/omapl138/armv5/bios/NIMU_emacExampleClient_lcdkOMAPL138ARMBiosExampleProject.txt./ndk/nimu/example/client/omapl137/c674/bios/NIMU_emacExampleClient_evmOMAPL137C674xBiosExampleProject.txt./ndk/nimu/example/client/omapl137/armv5/bios/NIMU_emacExampleClient_evmOMAPL137ARMBiosExampleProject.txt
再次确认一下您使用的版本,我在 https://e2e.ti.com/support/processors/f/processors-forum/484379/the-problem-with-use-ndk-in-omapl138 看到 nsp_1_10_02_09\packages\ti\ndk\examples\ndk_evmOMAPL138_arm9_client。
,
Nancy Wang:
请问cache使能了吗?NDK buffer放在哪里?可以分享一下cmd和map文件吗?是否使用的是CPSW?
,
user6619181:
对,ndk_evmOMAPL138_arm9_client是nsp下的例程,ndk里面没有带。 使用的不是CPSW,cmd和map文件就是ndk_evmOMAPL138_arm9_client自带的(nsp_1_10_02_09\packages\ti\ndk\examples\ndk_omapl138_arm9_examples\ndk_evmOMAPL138_arm9_client\Debug\configPkg下的linker.cmd,nsp_1_10_02_09\packages\ti\ndk\examples\ndk_omapl138_arm9_examples\ndk_evmOMAPL138_arm9_client\Debug下编译自动生成的map),没有修改过,其实ndk_evmOMAPL138_arm9_client这个例程里面的所有配置都没有动过原模原样直接使用的… 但是ndk里面带的NIMU_emacExampleClient_lcdkOMAPL138ARMBiosExampleProject也试过,相关配置也没动过,效果也类似,吞吐不高。 最后,cache的使能和NDK buffer的相关配置方式可以明确指导一下排查步骤吗?
,
Nancy Wang:
NSP比较老了,关于NIMU_emacExampleClient_lcdkOMAPL138ARMBiosExampleProject,如果没有修改那默认cache应该是使能的,.cfg文件中有配置。NDK buffer部分的细节我还需要再确认一下。
另外您的需求是在arm上跑RTOS+NDK吗?还是只是想测试网口的性能,一般来说都在arm上运行linux。,
user6619181:
需求是在138的arm核上跑SYS/BIOS的网口,而且对网口的吞吐有硬性要求,因为是实时数据监控而且流量不低,目前换Linux暂时不太可行,因为前期都是基于SYS/BIOS。
,
Nancy Wang:
将.cfg中Program.sectMap部分配置的NDK buffer相关段放到内部ram上看一下有没有改善。例如:
Program.sectMap[".far:NDK_OBJMEM"] = {loadSegment: "DDR", loadAlign: 8};
Program.sectMap[".far:NDK_PACKETMEM"] = {loadSegment: "DDR", loadAlign: 128};
另外将您详细的测试步骤(包括ccs console窗口及网络测试工具界面截图)贴出来一下,谢谢!,
user6619181:
我看到cfg中的这俩行配置是注释掉的,放开以后重新clean再build试过了,很遗憾,没有改善。
测试步骤:导入、build然后运行demo工程,利用里面的echo callback服务,朝它发送数据(周立功 TCP&UDP测试工具连接以后,配置好最快时间间隔,每隔0ms发送,发送窗口里面填入数据),勾选自动发送复选框,然后查看周立功 TCP&UDP测试工具 的接收速度。
CCS的console的话我认为没什么可参考的吧?(除非我printf输出调试信息?)周立功 TCP&UDP测试工具 的界面截图如下:
,
user6619181:
CCS的控制台demo默认自己输出的就是这些内容,看起来也没有什么不正常的:
,
user6619181:
把 TCP&UDP测试工具 的发送区填满数据,填到不能再多填(大概是32KB左右),看到的demo的echo服务回数据的接收速度最快大概是下面这样子,还不到100KB/s:
但是按上面的情况,以1秒发送1000次也就是1ms发送一次来低估,32KB*1000 是约能达到30MB/s的发送速度的,之所以发送速度也显示不到100KB/s,应该可以认为受到接收速度的限制导致与接收速度相同吧?
,
Nancy Wang:
感谢提供信息,再问一下您说的echo callback是以下函数吗?hEcho = DaemonNew( SOCK_STREAMNC, 0, 7, dtask_tcp_echo,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 );
,
user6619181:
是的,就是demo工程里面netHooks.c第23行的这一句调用里面的这个 int dtask_tcp_echo( SOCKET s, UINT32 unused ); 回调函数。
,
Nancy Wang:
请关注该贴的测试结果。
e2e.ti.com/…/3685796,
user6619181:
Nancy Wang 说:请关注该贴的测试结果。 e2e.ti.com/…/3685796
,
user6619181:
Nancy Wang 说:请关注该贴的测试结果。 e2e.ti.com/…/3685796
,
Nancy Wang:
user6619181 说:
在SYS/BIOS下,有类iperf的官方吞吐benchmark工具或者demo工程之类的可以参考吗(仍然因为我们前期一直是SYS/BIOS,马上切换到Linux不现实)?
没有这样的工具。
例程应该是可以直接与iperf交互的。
WARNING: did not receive ack of last datagram after 10 tries 是不是有可能是防火墙的原因,我建议您按照英文论坛上给出的测试方法试一下,看看结果如何?
,
Nancy Wang:
请问您目前有什么进展吗?