lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [lwip-users] Max throughput and LWIP


From: Bill Auerbach
Subject: RE: [lwip-users] Max throughput and LWIP
Date: Mon, 4 Feb 2008 11:41:42 -0500

I’ve been doing a lot of benchmarking and tweaking to maximize incoming TCP throughput.

 

On a 1GbS (GBE) connection with lwIP’s TCP and my NO_SYS socket-like API (uncomplicated wrapper on the raw API), my best numbers for receiving are 930-946MbS.

 

This was to test pure lwIP and the wire speed.  The sending system is a WinXP PC.  Note that the theoretical maximum for GBE is around 980MbS.  I do nothing with the incoming data (I do have an option to periodically check the transfer since the data is known).  The biggest thing which significantly increased the speed was to turn off incoming IP/UDP/TCP checksum checking.  If I leave the checking on, I get around 650MbS with jumbo frames.  This ~940MbS was standard frames.  Since the Ethernet controller has CRC checks, I don’t think the lwIP checking is required.  I was going to pose to the group this week what is the downside of this disabling of the checksumming, because the speed impact is substantial.

 

My system is a PowerPC (8239) at full speed (533Mhz).  For me, memory bandwidth is the killer.  If I simply copy the incoming data to make it contiguous, throughput drops to 550MbS.  What we wanted to know is what is the maximum speed for WinXP to the PowerPC with lwIP.

 

Bill Auerbach

 


From: address@hidden [mailto:address@hidden On Behalf Of Josh Rothstein
Sent: Friday, February 01, 2008 7:08 PM
To: 'Mailing list for lwIP users'
Cc: 'John Zigrang'
Subject: [lwip-users] Max throughput and LWIP

 

I know this is a common topic on the mailing list, but I wanted to hear about people’s results trying to maximize throughput with lwIP.

 

I am current running lwIP 1.2 on an Atmel AVR32 UC3 at 66MHz.  Using the sequential API with the best lwiopt.h tweaks I can come up with, I am geting about 350kbps (2.8Mbps). I am not sure how the processor would fair running NO_SYS using the raw api, but at the moment that is not really an option.  Would that be considered good throughput or is there any simple tweaks to reach anything closer to wire-speed (10Mbps or even better 100Mbps)?

 

I have read in the mailing list where people were getting approximately 8 – 12Mbps. I am unsure if that was with the standalone raw api, faster processors, or my settings are just poor.

 

 

Any suggestions would be appreciated.

 

Best,

 

Josh Rothstein

Embedded Systems Engineer

DCX-CHOL Enterprises, Inc.

12831 South Figueroa Street

Los Angeles, CA 90061-1157

310.516.1692x134

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]