Project

General

Profile

Gigabit Ethernet Throughput

The following tests were performed using a Linux PC running the "nttcp" application in daemon mode and having a MitySOM-335x based device connect using its own nttcp application to the test server. The connection between the server and the MitySOM-335x device was a full gigabit link.

NTTCP Setup

For the server side we were able to use the servers package manager to setup and install NTTCP.

For the MitySOM-335x we cross-compiled the application to work on our ARM Cortex-A8 CPU. It is attached to this wiki page. The application needs to be copied onto your target 335x SoM. Example test cases of using the nttcp application are shown in the sections below, see -help for details about the options used.

NTTCP Testing

Note 1: When viewing the NTTCP results the line labeled "l" is the local device (MitySOM-335x) and the "1" is the remote device (userv1).
Note 2: Changing the -l (length of bufs written to network) setting (default is 4k) to 64k produces an approx 20% increase in throughput. There may be other settings that can lead to even higher throughput (or lower) depending on your specific application.

TCP Transmit and Receive from the MitySOM-335x Device to the Server (userv1)

TCP Receive: ~380Mb
TCP Transmit: ~300Mb

root@mityarm-335x:~# ./nttcp -T -r -l64000 userv1
     Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
l131072000    2.77    2.73    378.2611    384.0938    2056    741.68     753.1
1131072000    2.77    0.05    379.1302  20163.7598    2048    740.49   39382.3

root@mityarm-335x:~# ./nttcp -T -t -l64000 userv1
     Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
l131072000    3.48    3.41    301.4660    307.5003    2048    588.80     600.6
1131072000    3.48    0.99    301.4568   1061.2462   60871  17499.90   61606.5

UDP Transmit and Receive from the MitySOM-335x Device to the Server (userv1)

UDP Receive: TBD
UDP Transmit: ~670Mb

root@mityarm-335x:~# ./nttcp -u -T -r userv1
TBD

root@mityarm-335x:~# ./nttcp -u -T -t -l64000 userv1
     Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
l131072000    1.56    1.54    671.3417    680.8935    2051   1313.13    1331.8
1131072000    1.56    0.10    670.8066  10485.1309    2049   1310.81   20488.8

Iperf Setup

For the server side we were able to setup the iperf package

linux ~$ sudo apt-get install iperf
linux ~$ iperf -s

Iperf Testing

Dev-Kit - 3.2.0-00229-g6c32ff7 720MHz Module (3354-GX-X38-RC)

root@am335x:~# iperf -t 60 -c 10.0.102.122

On the server side
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36347
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec  2.38 GBytes   341 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36348
[  5]  0.0-60.0 sec  2.38 GBytes   341 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36349
[  4]  0.0-60.0 sec  2.33 GBytes   334 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36350
[  5]  0.0-60.0 sec  2.36 GBytes   338 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36351
[  4]  0.0-60.0 sec  2.34 GBytes   334 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 36352
[  5]  0.0-60.0 sec  2.34 GBytes   336 Mbits/sec

Average Throughput ~337.3Mbits/sec

Dev-Kit - 3.2.0-00229-g6c32ff7 800MHz Module (3352-HX-X47-RI)

root@am335x:~# iperf -t 60 -c 10.0.102.122

On the server side
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55217
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec  2.57 GBytes   368 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55218
[  5]  0.0-60.0 sec  2.57 GBytes   368 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55219
[  4]  0.0-60.0 sec  2.56 GBytes   366 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55220
[  5]  0.0-60.0 sec  2.55 GBytes   365 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55221
[  4]  0.0-60.0 sec  2.55 GBytes   365 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 55222
[  5]  0.0-60.0 sec  2.56 GBytes   367 Mbits/sec

Average Throughput ~366.5Mbits/sec

Dev-Kit - 3.2.0-00229-g6c32ff7 1GHz Module (3354-IX-X38-RI)

root@am335x:~# iperf -t 60 -c 10.0.102.122

On the server side
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35842
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec  3.14 GBytes   449 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35843
[  5]  0.0-60.0 sec  3.16 GBytes   452 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35844
[  4]  0.0-60.0 sec  3.15 GBytes   451 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35845
[  5]  0.0-60.0 sec  3.17 GBytes   453 Mbits/sec
[  4] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35846
[  4]  0.0-60.0 sec  3.13 GBytes   448 Mbits/sec
[  5] local 10.0.102.122 port 5001 connected with 10.0.63.70 port 35847
[  5]  0.0-60.0 sec  3.17 GBytes   454 Mbits/sec

Average Throughput ~451.2Mbits/sec

Go to top
Add picture from clipboard (Maximum size: 1 GB)