This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

A&M Rattler and TCP performance


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]