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