Hi!
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, ...) 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? ...)
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?
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?
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.
Thank you, Eduard Benes
Hi,
--- Eduard Benes xbenes29@stud.fit.vutbr.cz wrote:
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?
I wrote simple code examples for Fiasco "hiworld": http://www.shakthimaan.com/installs/fiasco-x86.html
SK
-- Shakthi Kannan http://www.shakthimaan.com
____________________________________________________________________________________ Don't pick lemons. See all the new 2007 cars at Yahoo! Autos. http://autos.yahoo.com/new_cars.html
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
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? http://www.inf.tu-dresden.de/index.php?node_id=1314&ln=en http://www.inf.tu-dresden.de/index.php?node_id=1315&ln=en
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.
Bjoern
l4-hackers@os.inf.tu-dresden.de