I have tested network performance of ConnectME 9210 using socket api. In all tests the 8 Kbyte packets were sent to a host on the same subnet. The transfer rate were:
default UDP: 4.3MBytes/s
zero-copy UDP: 4.8MBytes/s
default TCP: 2.1MBytes/s
zero-copy TCP: 2.2MBytes/s
I am not sure if these rates are as expected.
One important note - the zero-copy sockets does not improve the transfer rate. Is this indication that DMA engine is not involved in the TCP stack?
Are there any tricks for improvement?
You may find that the transfer rate is being limited by other parts of your test setup - I certainly found that a single moderately specced PC couldn’t saturate the ME9210. It took me three PCs to achieve saturation!
Not directly comparable, but I use a ‘polled’ mode (i.e. PC sends message, ME9210 responds) with short packets, over a permanent TCP/IP connection. With that I just managed to hit 1000 polls/second
In case of UDP transfers I am not limited on other side, I can even do connectionless UDP transfers to non-existing IP and the sending rate is the same. The CPU utilization on ConnectMe 9210 is 100%.
I also tried some hidden tricks like
and see no difference.
It looks like 4.7MB/s is maximum I can reach sending out 8KB buffers through UDP.
It is actually not bad for the tiny box.