I've been doing some performance tests comparing eCos and
uClinux on a NIOS2 platform. TCP throughput is comparable
(uClinux does a bit better with only 1 connection&thread, and
eCos does a bit better at 32 connections&threads). But, latency
on uClinux is much worse. The table below shows the time in
milliseconds required for a user-space thread on an otherwise
idle system to receive a small message (two bytes) via TCP and
echo it back (10 trials):
eCos uClinux
------- -------
1.864 8.151
2.079 4.509
1.972 7.699
1.871 7.189
1.728 5.152
1.842 6.803
1.733 7.041
1.847 3.758
1.850 7.703
1.842 1.785
min 1.728 1.785
avg 1.863 5.979
max 2.079 8.151
range 0.351 6.366
The average latency is 3X worse in uClinux, the worst-case
latency is 4X worse, and the range is 20X worse. We'd like to
be able to use uClinux for it's better support of wireless and
wider availability of application code, but the large and
variable latency times are giving us pause.
I tried using real-time scheduling of the user threads, but it
didn't help latency and it completely ruined TCP throughput for
cases where multiple threads were receiving data.
Can anybody provide any hints on what I can do to improve the
latency under uClinux?
I'm currently using 2.6.26-rc6. What kernel configuration
parameters should I be looking at?
--
Grant Edwards grante Yow! I have a TINY BOWL in
at my HEAD
visi.com
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev