[prev in list] [next in list] [prev in thread] [next in thread] 

List:       microblaze-uclinux
Subject:    RE: [microblaze-uclinux] TCP transmit performance
From:       "Brettschneider Falk" <fbrettschneider () baumergroup ! com>
Date:       2008-05-19 19:27:27
Message-ID: BBAE756DD108364190F99D76BF1B4101FB9616 () srv-com-1-bode ! bode ! local
[Download RAW message or body]

Hi again,

Jim Van Vorst wrote some days ago:
> Can you compile and run netperf to get Mbits/sec TCP tx throughput?
> I get around 11Mbits/sec running at 66mhz with no optimizations
> and a third party mac/phy.

Well, now with the awesome help of Jim I was able to run "netperf" to measure how
much the TCP throughput has improved. I use the PetaLinux driver
./software/linux-2.6.x-petalogix/drivers/net/xilinx_emac with the
"hardware" EMAC as FPGA module, on a 96MHz microblaze, 4.00 CPU version.



with original PetaLinux-v0.3-rc1 kernel
---------------------------------------
netperf on uClinux site:
  # ./netperf -H x.x.x.x -l 60
  TCP STREAM TEST to x.x.x.x
  Recv   Send    Send
  Socket Socket  Message  Elapsed
  Size   Size    Size     Time     Throughput
  bytes  bytes   bytes    secs.    10^6bits/sec
    8192  16384  16384    60.02       6.86

wireshark on PC site:
  Packets:			56565
  Avg. packets/sec	941,923
  Avg. packet size	975,000 bytes
  Bytes			55196742
  Avg. bytes/sec		919138,816
  Avg. MBit/sec		7,353


same kernel with me patch
-------------------------
netperf on uClinux site:
  # ./netperf -H x.x.x.x -l 60
  TCP STREAM TEST to x.x.x.x
  Recv   Send    Send
  Socket Socket  Message  Elapsed
  Size   Size    Size     Time     Throughput
  bytes  bytes   bytes    secs.    10^6bits/sec
    8192  16384  16384    60.02       9.14

wireshark on PC site:
  Packets:			75351
  Avg. packets/sec	1254,898
  Avg. packet size	963,000 bytes
  Bytes			72637370
  Avg. bytes/sec		1209705,151
  Avg. MBit/sec		9,678




Jim Van Vorst wrote
> Here is my output:
> # netperf -d -H x.x.x.x
...
> Recv   Send    Send                          
> Socket Socket  Message  Elapsed              
> Size   Size    Size     Time     Throughput  
> bytes  bytes   bytes    secs.    10^6bits/sec  
> 
> 8192  16384  16384    10.02      15.32   
Great performance on your system. This should become 19MBit/sec with my full patch. I \
wonder why you have so much throughput although you just have 66MHz. I've debugged \
that my EMAC doesn't trigger delay events, so I think it is not used to full \
capacity. I compared your and my kernel settings but just see that \
CONFIG_INET_XFRM_MODE_... stuff. Is it important for speed. Where can I switch it on \
in 'make menuconfig'? Please, compare the kernel settings below:


Jim Van Vorst also wrote:
> Here is the network portion.
> 
> #
> # Networking
> #
> CONFIG_NET=y
> 
> #
> # Networking options
> #
> # CONFIG_NETDEBUG is not set
> CONFIG_PACKET=y
> # CONFIG_PACKET_MMAP is not set
> CONFIG_UNIX=y
> CONFIG_XFRM=y
> # CONFIG_XFRM_USER is not set
> # CONFIG_NET_KEY is not set
> CONFIG_INET=y
> # CONFIG_IP_MULTICAST is not set
> # CONFIG_IP_ADVANCED_ROUTER is not set
> CONFIG_IP_FIB_HASH=y
> # CONFIG_IP_PNP is not set
> # CONFIG_NET_IPIP is not set
> # CONFIG_NET_IPGRE is not set
> # CONFIG_SYN_COOKIES is not set
> # CONFIG_INET_AH is not set
> # CONFIG_INET_ESP is not set
> # CONFIG_INET_IPCOMP is not set
> # CONFIG_INET_XFRM_TUNNEL is not set
> # CONFIG_INET_TUNNEL is not set
> # CONFIG_IPSEC_NAT_TRAVERSAL is not set
> CONFIG_INET_XFRM_MODE_TRANSPORT=y
> CONFIG_INET_XFRM_MODE_TUNNEL=y
> CONFIG_INET_XFRM_MODE_BEET=y
> CONFIG_INET_DIAG=y
> CONFIG_INET_TCP_DIAG=y
> # CONFIG_TCP_CONG_ADVANCED is not set
> CONFIG_TCP_CONG_CUBIC=y
> CONFIG_DEFAULT_TCP_CONG="cubic"
> # CONFIG_IPV6 is not set
> # CONFIG_INET6_XFRM_TUNNEL is not set
> # CONFIG_INET6_TUNNEL is not set
> # CONFIG_NETWORK_SECMARK is not set
> # CONFIG_NETFILTER is not set
> # CONFIG_BRIDGE is not set
> # CONFIG_VLAN_8021Q is not set
> # CONFIG_DECNET is not set
> # CONFIG_LLC2 is not set
> # CONFIG_IPX is not set
> # CONFIG_ATALK is not set
...


And here are my settings:
#
# Platform options
#
...
CONFIG_XILINX_ETHERNET_0_INSTANCE="Ethernet_MAC"
CONFIG_XILINX_ETHERNET_0_DEV_BLK_ID=1
CONFIG_XILINX_ETHERNET_0_DEV_MIR_ENABLE=1
CONFIG_XILINX_ETHERNET_0_BASEADDR=0x40C00000
CONFIG_XILINX_ETHERNET_0_HIGHADDR=0x40C0FFFF
CONFIG_XILINX_ETHERNET_0_RESET_PRESENT=1
CONFIG_XILINX_ETHERNET_0_INCLUDE_DEV_PENCODER=1
CONFIG_XILINX_ETHERNET_0_DMA_PRESENT=1
CONFIG_XILINX_ETHERNET_0_DMA_INTR_COALESCE=1
CONFIG_XILINX_ETHERNET_0_OPB_AWIDTH=32
CONFIG_XILINX_ETHERNET_0_OPB_DWIDTH=32
CONFIG_XILINX_ETHERNET_0_OPB_CLK_PERIOD_PS=10417
CONFIG_XILINX_ETHERNET_0_FAMILY="spartan3"
CONFIG_XILINX_ETHERNET_0_IPIF_RDFIFO_DEPTH=32768
CONFIG_XILINX_ETHERNET_0_IPIF_WRFIFO_DEPTH=32768
CONFIG_XILINX_ETHERNET_0_MIIM_CLKDVD=0x0000001F
CONFIG_XILINX_ETHERNET_0_SOURCE_ADDR_INSERT_EXIST=1
CONFIG_XILINX_ETHERNET_0_PAD_INSERT_EXIST=1
CONFIG_XILINX_ETHERNET_0_FCS_INSERT_EXIST=1
CONFIG_XILINX_ETHERNET_0_MAC_FIFO_DEPTH=64
CONFIG_XILINX_ETHERNET_0_MAC_FIFO_BRAM_1_SRL_0=0
CONFIG_XILINX_ETHERNET_0_HALF_DUPLEX_EXIST=1
CONFIG_XILINX_ETHERNET_0_ERR_COUNT_EXIST=1
CONFIG_XILINX_ETHERNET_0_CAM_EXIST=0
CONFIG_XILINX_ETHERNET_0_CAM_BRAM_0_SRL_1=1
CONFIG_XILINX_ETHERNET_0_JUMBO_EXIST=1
CONFIG_XILINX_ETHERNET_0_MII_EXIST=1
CONFIG_XILINX_ETHERNET_0_TX_DRE_TYPE=0
CONFIG_XILINX_ETHERNET_0_RX_DRE_TYPE=0
CONFIG_XILINX_ETHERNET_0_TX_INCLUDE_CSUM=0
CONFIG_XILINX_ETHERNET_0_RX_INCLUDE_CSUM=0
CONFIG_XILINX_ETHERNET_0_HW_VER="1.04.a"
CONFIG_XILINX_ETHERNET_0_IRQ=5
...
CONFIG_XILINX_ETHERNET_NUM_INSTANCES=1

#
# Processor type and features
#
CONFIG_PREEMPT=y
# CONFIG_PREEMPT_TIMES is not set
CONFIG_XILINX_UNCACHED_SHADOW=y
CONFIG_LARGE_ALLOCS=y
CONFIG_USE_BRAM=y
CONFIG_IRQ_IN_BRAM=y
# CONFIG_SIGNALS_IN_BRAM is not set
CONFIG_ENTRY_IN_BRAM=y
# CONFIG_CACHEFLUSH_IN_BRAM is not set
# CONFIG_EXCEPTIONS_IN_BRAM is not set
# CONFIG_FASTCALLS_IN_BRAM is not set

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IPSEC_NAT_TRAVERSAL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set

#
# Network device support
#
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set

#
# PHY device support
#

#
# Ethernet (10 or 100Mbit)
#
# CONFIG_NET_ETHERNET is not set
# CONFIG_OPEN_ETH is not set
# CONFIG_MTIP1000_ETH is not set
# CONFIG_NE2000 is not set
CONFIG_XILINX_EMAC=y
# CONFIG_XILINX_EMACLITE is not set

#
# Ethernet (1000 Mbit)
#

#
# Ethernet (10000 Mbit)
#
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set

# Network File Systems
#
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set



Cheers, F@lk

___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic