1G/10G performance testing for PS Ethernet, PL Ethernet and PS+PL Ethernet

1. Introduction

This page provides the performance number for XAPP1305 and XAPP1306. It also includes procedure to run tests.
Netperf is used to to take this performance number(TCP and UDP).

Performance numbers for all combinations are on below link.
With Linux ( xapp 1305):
1. 2017.1
2. 2017.3

With LWIP (xapp 1306):
1. 2017.1

2. Setting up and testing PS Ethernet


2.1 PS Ethernet with Linux

Kernel version used (4.4)
ZYNQMP ( ZCU102 Rev 1.1 board )
Please review the section 5 of this page for details about commands to run throughput.

2.1.1 Setup

Connect DUT with Linux based host machine.
In below image Ethernet port of ZC102 is connected to Linux based laptop.

setup.JPG

In order to get benchmark performance numbers
-> use a standard Linux machine on the other end
-> Make sure CPU frequency is of the order of 1GHz for ZynqMP.
-> Bus speed should be negotiated at 1000Mbps/Full duplex

2.2 PS Ethernet with LWIP


2.2.1 LWIP Configuration Options

Include lwip library in fsbl and create a new application of iperf by including iperf soruce for A53 or R5.
For further configurable options, refer to documentation in lwip141_vx_x/doc/lwip141_vx_x

For bench-marking on ZynqMP, the following lwip settings were modified from default, to be optimal:
MEM_SIZE 524288
MEMP_NUM_PBUF 1024
MEMP_NUM_TCP_SEG 1024
PBUF_POOL_SIZE 8192
N_RX_DESCRIPTORS = 512
N_TX_DESCRIPTORS = 512
TCP_SND_BUF 65535
TCP_WND 65535
TCP_IP_TX_CHECKSUM_OFFLOAD= true
TCP_IP_RX_CHECKSUM_OFFLOAD= true

Please review the section 6 of this page for details about commands to run throughput.

2.2.2 Setup

connect DUT with Linux machine. Here in below image zc102 is connected to
Please note that the static IP address assignment on the laptop/PC should be done.

3. Setting up and testing PL Ethernet

3.1 PL Ethernet with Linux (1G)

Kernel version used (4.4)
ZYNQMP ( ZCU102 Rev 1.1 board and SFP to RJ45 connector ( cisco GLC-T) )
Please review the section 5 of this page for details about commands to run throughput.
zcu102_wiki.jpg

3.1.1 Setup

Refer to section 3.1 for details about setup.
In order to get benchmark performance numbers
-> use a standard Linux machine on the other end
-> Make sure CPU frequency is of the order of 1GHz for ZynqMP.
-> Bus speed should be negotiated at 1000Mbps/Full duplex

3.2 PL Ethernet with LWIP (1G)


3.2.1 LWIP Configuration Options

Include lwip library in fsbl and create a new application of iperf by including iperf soruce for A53 or R5.
For further configurable options, refer to documentation in lwip141_vx_x/doc/lwip141_vx_x
For benchmarking on ZynqMP, the following settings were modified from default, to be optimal:
MEM_SIZE 524288
MEMP_NUM_PBUF 1024
MEMP_NUM_TCP_SEG 1024
PBUF_POOL_SIZE 8192
N_RX_DESCRIPTORS = 512
N_TX_DESCRIPTORS = 512
TCP_SND_BUF 65535
TCP_WND 65535
TCP_IP_TX_CHECKSUM_OFFLOAD= true
TCP_IP_RX_CHECKSUM_OFFLOAD= true

Please review the section 6 of this page for details about commands to run throughput.

3.2.2 Setup
Refer to section 3.1 for setup.
Please note that the static IP address assignment on the laptop/PC should be as per guidelines in the appnote.

3.3 PL Ethernet with Linux (10 G)

Kernel version used (4.4)
ZYNQMP ( ZCU102 Rev 1.1 board and SFP+ to RJ45 optical connector ( Avago AFBR-709SMZ) )
Please review the section 5 of this page for details about commands to run throughput

3.2.1 Setup

Refer to section 3.1 for setup.
In order to get benchmark performance numbers
-> use a standard Linux machine with 10G NIC on the other end
-> Make sure CPU frequency is of the order of 1.3 GHz for ZynqMP.
-> Bus speed should be negotiated at 10gbps/Full duplex

4.Setting up and testing PS+PL Ethernet


4.1 PS+PL Ethernet with Linux

Kernel version used (4.4)
ZYNQMP ( ZCU102 Rev 1.1 board and SFP to RJ45 connector ( cisco GLC-T) )
Please review the section 5 of this page for details about commands to run throughput.

4.1.1 Setup


Refer to section 3.1 for setup.

In order to get benchmark performance numbers
-> use a standard Linux machine on the other end
-> Make sure CPU frequency is of the order of 1 GHz for ZynqMP.
-> Bus speed should be negotiated at 1000Mbps/Full duplex

4.2 PS+PL Ethernet with LWIP


4.2.1 LWIP Configuration Options

Include lwip library in fsbl and create a new application of iperf by including iperf soruce for A53 or R5.
For further configurable options, refer to documentation in lwip141_vx_x/doc/lwip141_vx_x
For benchmarking on ZynqMP, the following settings were modified from default, to be optimal:
MEM_SIZE 524288
MEMP_NUM_PBUF 1024
MEMP_NUM_TCP_SEG 1024
PBUF_POOL_SIZE 8192
N_RX_DESCRIPTORS = 512
N_TX_DESCRIPTORS = 512
TCP_SND_BUF 65535
TCP_WND 65535
TCP_IP_TX_CHECKSUM_OFFLOAD= true
TCP_IP_RX_CHECKSUM_OFFLOAD= tru

Please review the section 6 of this page for details about commands to run throughput.

4.2.2 Setup

Please note that the static IP address assignment on the laptop/PC should be as per guidelines in the appnote.

5. Commands and Outputs with Linux


5.1 TCP (default)

Netserver on DUT and netperf on Linux machine.
dut> ./netserver -D -4
x86> ./netperf -H 192.168.1.10 -D 5 -l 500

Netserver on Linux machine and netperf on DUT
x86> ./netserver -D -4
dut> ./netperf -H 192.168.1.100 -D 5 -l 500

5.2 UDP

In order to run test with UDP, add below switches to TCP command:
-t UDP_STREAM -- -m <mtusize>
For ex.
dut> netperf -H 192.168.1.10 -l 500 -t UDP_STREAM – -m 1500

5.4 CPU load option

In order to get the CPU load, add:
-c -C
For ex.
netperf -H 192.168.1.10 -c -C -t UDP_STREAM

5.5 Expected output


Netserver on DUT
root@Xilinx-ZCU102-2016_1:~# netserver -D -4
Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_INET
Netperf on DUT
root@localhost xhdpssa]# netperf -H 192.168.1.4 -c -C -t TCP_STREAM
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.4 () port 0 AF_INET
Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB
 
 87380  16384  16384    10.00      2956.76   1.62     27.39    0.359   3.036

6. Commands and Outputs with LWIP


6.1 How to run throughput

Run fsbl and iperf application with Appropriate TCP and UDP support.

6.1.1 TCP Traffic

To run rxperf test, run the following on client side:
#$ iperf -c <board ip> -i 5 -t 100

To run txperf test, run the following on server side:
#$ iperf -s -i 5 -w 64k (on host with IP matching that in txperf.c)
Refer to appnote for further information.

6.1.2 UDP Traffic

In order to run test with UDP, add below switches to TCP command:
-u -b 1G
For ex.
dut> iperf -c <board_ip> -i 5 -u -b 1G -t 100

6.2 Expected output

txperf, board
-----lwIP RAW Mode Demo Application ------
Board IP:       192.168.1.5
Netmask :       255.255.255.0
Gateway :       192.168.1.20
Start PHY autonegotiation
Waiting for PHY to complete autonegotiation.
autonegotiation complete
link speed for phy address 12: 1000
              Server   Port Connect With..
-------------------- ------ --------------------
         echo server      7 $ telnet <board_ip> 7
       rxperf server   5001 $ iperf -c <board ip> -i 5 -t 100
       txperf client    N/A $ iperf -s -i 5 -w 64k (on host with IP 192.168.1.20)
         tftp server     69 $ tftp -i 192.168.1.10 PUT <source-file>
         http server     80 Point your web browser to http://192.168.1.10
txperf: Connected to iperf server

txper, PC
external image txperf.png?version=1&modificationDate=1468401827193&api=v2

rxperf, board

-----lwIP RAW Mode Demo Application ------
Board IP:       192.168.1.5
Netmask :       255.255.255.0
Gateway :       192.168.1.20
Start PHY autonegotiation
Waiting for PHY to complete autonegotiation.
autonegotiation complete
link speed for phy address 12: 1000
              Server   Port Connect With..
-------------------- ------ --------------------
         echo server      7 $ telnet <board_ip> 7
       rxperf server   5001 $ iperf -c <board ip> -i 5 -t 100
       txperf client    N/A $ iperf -s -i 5 -w 64k (on host with IP 192.168.1.20)
         tftp server     69 $ tftp -i 192.168.1.10 PUT <source-file>
         http server     80 Point your web browser to http://192.168.1.10
rxperf: Connection Accepted

rxperf, PC
external image rxperf.png?version=1&modificationDate=1468401862588&api=v2