Some questions about performance optimization relatedtoGUIframework on Genode

王硕 kloisiie at ...236...
Sat Sep 6 10:19:41 CEST 2014

Dear w_schmidt,

Thank you for your advice on measurement. My advisor hope me to solve the performance bottleneck on IPC, so it will reduce the side effect of measurement.

 Shuo Wang, 
University of Chinese Academy of Sciences. 

------------------ Original Mail ------------------
"w_schmidt";<w_schmidt at ...181...>;
"genode-main"<genode-main at>; 
 Re: Some questions about performance optimization relatedtoGUIframework on Genode

 just a side advice: do not use RTC as i also tried to measure some  actions.
 I tried the following
    rtc1 = rtc.get_current_time();
    rtc2 = rtc.get_current_time();
 and always got a difference of 1 second. (in a loop) – and that was only  with calling rtc.
 So i looked at RTC ( ) and found:  “return mktime(day, mon, year, hour, min, sec) * 1000000ULL;”  so  it only has a precision of one second and only gives you a value that looks like  it could have a higher precision.
 Take alook at RDTSC in\timestamp.h
 This  will inline the code so you do not have costly RPC  calls.
 RDTSC  will give you huge numbers, the prozessor counters. If your prozessor is running  at for example 2.4 Ghz you will see values for one second around 2.400.000.000  (can differ a bit as machines are not running exactly at x  Mhz).
 With  the machine i tested it is still not completly accurate, but has a standard  deviation less then 50 microseconds.
 Best  regards
  From: 王硕 
 Sent: Friday, September 5, 2014 10:24 PM
 To: genode-main 
 Subject: Re: Some questions about performance optimization related  toGUIframework on Genode


 Hello  Norman,
In Genode, it takes approximately 3 seconds for qt_launchpad to launch, and  more than 1 seconds for other apps to launch. This is too slow, so my task is to  reduce the launch time of qt_launchpad and apps. But I don't know what the  reason of the low performance is. So I turn to you for some advice.
I use Rtc (\os\src\drivers\rtc\x86) to record the launch time of qt_launchpad  and apps as listed below:
in main.cpp of qt_launchpad:
int main(int argc, char *argv[])
/*Use Rtc to  record the time*/
/*Use Rtc to record  the time again*/ 
in launch_entry.cpp of qt_launchpad: 
void Launch_entry::on_launchButton_clicked()
/*Use Rtc to record the  time*/ 
_launchpad->start_child(_filename, ...);
/*Use Rtc to record the time again*/ 
   Shuo Wang, 
University of Chinese Academy of Sciences.

 ----‍--‍--‍Original mail----‍--‍--
Sender: norman.feske  <norman.feske at ...1...>    
(by  genode-main-bounces at )
Time: 2014-09-01 (Mon) 12:00  (UTC+02:00)    
Receiver: genode-main  <genode-main at>
Hello Shuo  Wang,

> The Git branch of our genode is listed below:

thanks for making your modifications  publicly available. But I am wondering:

Why haven't you just forked the  Genode repository? See

By having imported a snapshot of the  source code to a new repository,
you removed all the history and cannot  easily follow the mainline
development. For me, this makes it almost  impossible to spot your
modifications. Why haven't you just applied your  changes as a topic
branch on top of the regular Genode  repository?

Moreover, why have you removed the LICENSE file from  top-level
directory? The license is important information and should always  be
prominently visible.

I would also recommend to keep the original  README file or, at least,
provide a link to the original Genode  repository.

> * Have you tried to run your GUI application on  base-linux? If yes,
> have you compared its performance to the same  application compiled for
> native Linux w/o Genode?
> Our apps is  Fiasco.OC-specific, so I don't know how to run these apps on
>  base-linux.
> * On base-linux, you could use normal Linux  profiling tools such as
> oprofile to find out where the CPU time  goes.
> Please recommend some similar tools on base-foc.

There is  no such tool for base-foc. For this reason, I recommended to
run the  application on base-linux in the first place.

Even if you application  depends on Fiasco.OC, you might still use any of
the other (portable) example  applications to investigate an eventual
performance problem of Qt. First  check if the behavior that you noticed
can be reproduced with one of those  example applications. If that is the
case, run the same application on Linux  and use oprofile to investigate.

> * Can you make a Git branch with  your application publicly available‍
> To run the vsos, use
> $  ./create_builddir fox_x86_32 build_dir=~/<build-directory>
> to  create a build directory, and then execute
> $ make run/verify
> in  build directory.

Unfortunately, I am not able to compile it. I get an  error as follows:

   /open/incoming/vsos/base/include/base/rpc_server.h:152:41:  error:
‘l4_utcb_id’ is not a member of ‘Fiasco’

The type 'l4_utcb_id'  does not exist in the 'base-foc/contrib' source
tree. It seems like you  changed the kernel but invoking 'make prepare'
within 'base-foc' fetches the  original kernel.

Best regards

Dr.-Ing. Norman  Feske
Genode Labs ·

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 ·  Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian  Helmuth

Slashdot  TV.  
Video for Nerds.  Stuff that  matters.
genode-main  mailing  list
genode-main at


Slashdot  TV.  
Video for Nerds.  Stuff that  matters.  

genode-main mailing  list
genode-main at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the users mailing list