Hi,
I've been working on some simple code to test the TCP/IP throughput we can get from the AM572x EVM using one of the Gigabit Ethernet ports. I wrote a simple socket application on windows to receive data from the EVM, and I modified one of the NIMU FTP example projects to get the configuration and setup. I removed the FTP code and replaced it with a simple socket application that loops over a "send()" call to send a message as fast as possible. I'm only able to get roughly 200Mbit/s, which is much lower than I would expect. Using the same recv() application but sending from another Windows machine, I'm able to get 800-900 Mbit/s, so the issue doesn't seem to be in how I'm receiving the messages, the Ethernet cable (CAT5e), or my PC's network card.
I'm getting the best throughput with message sizes around 500 bytes, even though I'd expect the best throughput from messages right at the payload limit for Ethernet/TCP/IP (1460 bytes). When I send messages closer to or above that limit, my throughput is slightly lower, and eventually slows down drastically as I start getting a large volume of TCP retransmissions. One strange behavior I've seen is that if I kill my recv() application on my PC, the TCP retransmissions sent by the EVM jump from 200Mbit/s up to 800Mbit/s, suggesting that it should be capable of sending messages much faster while connected.
I'm using Processor SDK RTOS 6.03.00.106 and I modified the NIMU_FtpExample_evmAM572x_armExampleproject. I haven't changed much in the configuration, I've mostly tried optimizing my own code to send messages as quickly as possible. Is there anything else I need to change to optimize throughput? I can send you some of my code and configuration if it would help.
Thanks,
Jon