Writing simple "hiworld" server using L4Env packages

Bjoern Doebel doebel at os.inf.tu-dresden.de
Tue Apr 10 16:46:10 CEST 2007

Hash: SHA1


> My goal is to create, using l4env pkgs, some simple servers that would 
> run on top of microkernel and compare their performance when running 
> on native Linux and on L4 ukernel.   
> They should run single and more paraller "processes" that would
> do some simple numerical algorithms (sorting, Monter Carlo, ...)

There shouldn't be a big difference, if you chose the right test setup.
Those numerical applications are CPU-bound and don't do a lot of system
calls. Therefore they will have the same performance regardless of the
underlying OS.

> So, I would like to ask for help with creation of such servers.
> Better said, it can be few single servers without any clients.
> (integer/float data types? forks? mallocs? time measurement? ...)

Data types are a language construct, not an OS one. fork() is a Unix
concept and does not exist on L4.

malloc is implemented by the C library. The only difference here is where
you get memory from. In L4 this will typically be a dataspace you get from
a dataspace manager. After this has been mapped to your address space, it
means processing some data structures in memory - should be the same
performance again.

For measuring time you could have a look at l4/pkg/l4util/ARCH-x86/rdtsc.h.

> Is there available l4env "programming tutorial", some notes from 
> lectures provided at TU-Dresden, or some more advanced "example"
> server code that could be modified without much knowledge of l4env 
> specifics? 

Did you already investigate our lecture notes and the ones from our lab?

> I've found the BID tutorial, but for me it would be more helpful 
> to know what basic functions, libraries, data types can be used, 
> and how. (e.g. the hello world example could be modified)
> Could someone please show me the right way to go?

Some of the packages in l4/pkg contain a doc directory that you can build
to produce documentation about what a server does and what interfaces it
provides. If you want to dig further into it, you should investigate the
source code or ask more specific questions here.

For the design of server interfaces you may be interested in the manual of
Dice, our IDL compiler.

For details about the kernel ABI, have a look at the L4v2 reference manual,
which is available, e.g., from http://www.l4hq.org/docs/manuals/ .

> I'm running out of time, so I would really appreciate all help :)
> Right now I'm working on benchmarking L4Linux and native Linux 
> to get idea of the overhead. And It would be interesting to 
> get idea of the performance when apps/servers are running on L4 
> kernel without the L4Linux overhead.

I don't exactly understand, what you are trying to do. Before evaluating
the performance of a system, I'd recommend to gain some knowledge about it.
If you even want to compare multiple systems, you should be aware of what
these systems are and where the differences are so that you know what the
performance evaluation should target.

Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


More information about the l4-hackers mailing list