Tuning L4Linux on Fiasco

Frank Mehnert fm3 at os.inf.tu-dresden.de
Wed Sep 25 10:43:46 CEST 2002


Hi,

On Tuesday 24 September 2002 23:53, Jacob Gorm Hansen wrote:

> the original l4linux papers mention performance about 4% lower than
> native linux. When running l4linux on top of Fiasco, performance seems
> to be more like 50% of what we get with native 2.2. For example,
> encoding a .wav-file to ogg-vorbis takes 2 minutes native, and almost 4
> minutes with l4linux. LMBench also gives way-different figures.

We have not done benchmarks for many time because Fiasco is still under
heavy development. Next weeks we want to merge several CVS trees into
the main tree giving support for additional architectures and giving more
speed for the common IPC path.

> Is there anything we can do to tune Fiasco for better performance? Are
> other people experiencing the same speed differences as we are?

Some tuning tips for Fiasco:

Create a file 

  l4/kernel/fiasco/src/Makeconf.local:
  EXTRA_FLAGS += -march=i686 -malign-functions=4  # optimize for >= PPro
  EXTRA_FLAGS += -DNDEBUG                         # don't compile assertions
  EXTRA_FLAGS += -DNO_FRAME_PTR -fomit-frame-pointer
                                                  # frame pointer is only
                                                  # needed for debugging

Further, edit

  l4/kernel/fiasco/src/kern/config.cpp

and replace 

  kernel_mem_per_cent = 20;

by

  kernel_mem_per_cent = 10;

This gives additional memory for user space applications. You have to
consider that nevertheless Fiasco + L4Linux has significant less memory
available than plain Linux.

In the linux22 configuration, disable "L4Linux/Compile kernel with frame
pointer" and enable "L4Linux/Use Assembler version of l4_idle".

And last but not least don't enable any tracing events in Fiasco since 
they give additional costs.


Additional speedup for L4Linux could be achieved by patching the syscalls
in the libc by direct jumping into the emulib of the process preventing the
trampoline mechanism (int 0x80 => general protection => int 0x30 => l4linux
server). I don't know if such a patch if floating around somewhere. See
linux22/arch/l4/x86/emulib/int_entry.S, function entry13.

Frank
-- 
Frank Mehnert
## Dept. of Computer Science, Dresden University of Technology, Germany ##
## E-Mail: fm3 at os.inf.tu-dresden.de    http://os.inf.tu-dresden.de/~fm3 ##




More information about the l4-hackers mailing list