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
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to