This is the mail archive of the
mailing list for the eCos project.
A&M Rattler and TCP performance
- From: "John Doe" <johndoe935 at hotmail dot com>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Thu, 15 Dec 2005 13:21:26 +0000
- Subject: [ECOS] A&M Rattler and TCP performance
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
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
The problem seems to be similar to the one in this thread :
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
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
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
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