[ECOS] A&M Rattler and TCP performance

John Doe johndoe935@hotmail.com
Thu Dec 15 13:21:00 GMT 2005


Hi, all.

I'm developing an embedded application using eCos on a PowerPC target, and 
I'm experiencing very poor ethernet (TCP) performance with my target, 
wondering if it is an eCos/HAL bug, poor configuration (user error, user 
being me...), or a hardware problem.

The problem is only for TCP reads (host->target), giving typically 
100-200kBytes/sec. TCP writes are fine, with 6-8MBytes/sec. UDP read/write 
also seems OK, giving around 1-2MBytes/sec depending on the application used 
for testing.

Using tcpdump and ethereal on a minimal test application sending data from 
the host to the eCos target, I can see several odd things :

1) The preformance is very good in short bursts, typically for a few 
milleseconds, before it stalls. The host stops sending data. The target 
seems to have ACKed perfectly OK, indicating a TCP window with plenty of 
space left. Then there is a delay, before the target probaly times out and 
resends an ACK, and the host continues transferring. The target time-out 
occurs exactly every 100ms.
- It seems the host is causing the problem here, since it stops sending for 
no apparent reason
- this only happens when the target is eCos.

2) there are quite a few (~10%) retransmits, but the host detects these, and 
does fast retransmits, giving no stalls in the data transfers.
- Should I worry about these? I guess it should never happen.

3) Before every stall, ethereal labels the last ACK from the target as a 
"TCP window update". I have no clue what to make of this, but it seems very 
consistent...

The problem seems to be similar to the one in this thread : 
http://sources.redhat.com/ml/ecos-discuss/2002-04/msg00379.html
but since the problem did not seem to be resolved, I'm still stuck.

The thread mentioned above suggested collisions due to misconfiguration of 
duplex on the target. My target has a LED to indicate collisions, which 
remains unlit.

The target is a Analogue&Micro Rattler with a 200MHz MPC8250 processor. eCos 
is from CVS, I have testet up to 2005-12-07 without any difference in 
behaviour.

eCos/HAL was build with default configuration values. I have also tested 
increasing the number of input and output buffers for the ethernet device 
driver, and increasing the memory designated for the FreeBSD stack, giving 
exactly the same results.

In an attempt to eliminate the host from the search, I have tried both 
Fedora Core 2 and Core 4 (Intel, 32 bit) . I also tried compiling the same 
test application using a Linux target, which gave excellent performance 
(11MBytes/sec on a 100Mbit ethernet).

As for hardware, I have tested on the A&M board and on a homebrewed board 
derived from the A&M schematics, giving the same results.

Does anyone have any ideas? Any tests I should do to narrow down the search 
area?

Best regards,
  Ola BÃ¥rd Langlo

_________________________________________________________________
Are you using the latest version of MSN Messenger? Download MSN Messenger 
7.5 today! http://messenger.msn.co.uk


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list