Tuning L4Linux on Fiasco
Jacob Gorm Hansen
jg at ioi.dk
Tue Oct 1 16:00:53 CEST 2002
On Tue, Oct 01, 2002 at 02:50:07PM +0200, Frank Mehnert wrote:
> Hi Jacob,
> 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.
> Encoding of 185MB .wav-file into mp3/128kBit/s with lame 3.92
> on Pentium III Coppermine 800 MHz:
> Plain Linux 2.2.21
> real 6m32.000s
> user 4m16.290s
> sys 0m7.360s
> L4Linux 2.2.21 on Fiasco (current CVS version):
> real 6m46.943s
> user 0m0.010s
> sys 0m0.000s
This looks good. I've rerun the benchmarks after your original tuning advice,
and this look much better now.
> Don't depend on the usr/sys times! The only time you can believe in
> is the time after "real". L4Linux doesn't have its own scheduler but
> L4Linux tasks are scheduled by the scheduler of the underlaying L4
> implementation. The time a L4Linux task is running is determined by
> the l4_thread_schedule() system call. But thread time accounting is
> disabled by default in Fiasco because of the additional costs. You
> can enable it by setting config::fine_grained_cputime to TRUE (but
> it isn't fully tested yet so without any warranty :-)).
OK, we'll pull out a real clock then ;-)
> BTW: What about your L4Linux migration? Do you have a website?
> We are very interested ...
Things are going very well indeed. Today, we migrated a running (though
not very busy) kernel with 16M ram to another computer, with a downtime
around 1/10th of a second, on a 100mbit network. We're using precopy, so
that first all pages get copied, then dirty pages are copied over. This
is repeated a few times to minimize the size of the last transfer,
minimizing downtime as well.
We currently have the following features:
* An OSkit-based 'bios' which abstract an ethernet-device, and has its
own IP-stack, so that kernel can be sent to it for boot or resume via
sockets. We do not have zero-copy networking though :-(
* Run multiple l4linuxes atop the bios, on the same cpu (nfs-booted).
* Migrate running l4linuxes between bioses on different CPUs, with
minimal downtime (lower bound is probably the transferral of one 4k page
per linux process).
We do not have a website (yet?) and the setup is a bit complicated. You
need an NFS-server for the filesystems, and you probably need
etherbooted grub as well. Bootp in oskit is broken, so right now some
manual editing of the bios will be needed to get things running.
There is also a small problem when migrating to a different set of task
numbers, due to the lack of C&C in Fiasco. I've hacked it to return 0x10
for out-of-clan ipcs here though.
We would like to make sources available, but we've been a bit brutal to
l4linux, so we better keep it in our own CVS for now.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: not available
More information about the l4-hackers