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