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