Hi there,

I'm currently doing tests of IPC on different microkernels using Genode framework.

I modified hello_tutorial repo to utilize this very simple scenario where server and client communicate via RPC.

My set up is as follows:
I ran "make run/hello" in each build directory of fiasco_x86, nova_x86_32, okl4_x86, pistachio_x86.
These build directories are all created as is instructed on genode website.
Then I modified etc/build.conf to enable kvm, and uncommented "libports" repo, and added "hello_tutorial" repo.

In client.h, re-implement the add() function as to invoke 10 call<Rpc_add>() functions in sequence (to mitigate the variation of elapse cycles). 
Before the first invocation and after the tenth invocation of call<Rpc_add>(), I invoke two rdtsc respectively and store the current cycle in two variables.
Then before this add() function returns, I print out the difference between the two rdtsc results.

Depend on the different microkernel, the cycles elapsed along the 10 Rpc_add execution varies from around 80000(for okl4_x86) to 170000 (for fiasco_x86).
That is, the cycles elapsing while executing ONE Rpc_add would be around 8000 to 17000 cycles, which seems very long.

So I want to know: is these results reasonable? Or I missed anything in my tests?

Thank you very much!

Yelly