From: Carsten H. (T. R. <ra...@ra...> - 2009-10-12 13:17:30
|
On Mon, 12 Oct 2009 20:07:25 +0800 Brian Wang <bri...@gm...> said: > On Mon, Oct 12, 2009 at 5:40 PM, Cedric BAIL <ced...@fr...> wrote: > > On Mon, Oct 12, 2009 at 7:59 AM, Brian Wang <bri...@gm...> > > wrote: > >> On Mon, Oct 12, 2009 at 11:30 AM, David Seikel <on...@gm...> wrote: > >>> On Mon, 12 Oct 2009 10:49:03 +0800 Brian Wang > >>> I do remember a time when we managed to get the startup time of e17 > >>> itself down to a fraction of a second on a typical desktop. Maybe 5 > >>> seconds tops on the sort of device you mentioned. I don't know what it > >>> is these days. > >> > >> You mean e17 spends 5 seconds all by itself? Hm... sounds like a > >> daunting task ahead of me... > > > > It really depend on your hardware and your configuration. During the > > bootup process of E17, what count is IO operation. Most are due to > > module, so by carefully choosing them you will reduce the boot time. > > The second source of IO is library dependencies. If you reduce to the > > minimum the number of needed library to be loaded, you can win a lot > > of time. You can currently build all the library from eina to efreet, > > including evas as a static library only. If you have only one user of > > the EFL, this could help you. > > Too bad that I will have multiple applications that are based on EFL. > > > > But the best things to do, is to try, then profile and improve things. > > So just let us know what you test give on your hardware :-) > > -- > > Cedric BAIL > > > > OK. I just tried. :-) > On my device, from power-on to Illume taskbar + empty desktop, it > currently takes ~18 seconds. I guess it's not as bad as seen in the > demo videos (Openmoko and Palm targets). There's always room for > improvements. I will have to steal 15 seconds off that. I have lots > to learn as a newbie... > > Any optimization tips are welcome. :-) 1. profile profile profile. find out where your time is being spent. take a look at bootchart. it's not a bad place to start to see just whats going on at an overview level. 2. do less. dont do anything you dont NEED to (e17 WILL do things u probably dont neeed - file load a theme of its own, set a wallpaper and render it, scan for .desktop files for apps and looks for system app menus like freedesktop.org xdg standards). 3. how long does the boot take if you JUST boot into an empty x? 4. how much into an empt x + an elementary (or efl app). (note that efl has a lot of libraries it uses and depends on - each dependency needs to be found in the fileystsem (ld.so hunts for it) and then symbols need to be resolved. this literally is string matching every function call used to an entry in a hash table in the library). the more libs are used - the more symbols need looking for and thus the more library symbol tables need paging in from disk 5. do some bencmarks on disk io - where are you booting from? nand? mmc/sd? nmote that u'll likely find mmc/sd has much better io performance than nand. also note that the fs you use will matter - eg jffs2 doesnt allow mmap and needs to to decompress and rebuild logs. ubifs as well ned to rebuild from logs and decomrpess. cramfs too. all these compressed fs's will reduce raw io requirements at the expense of cpu - thus u're losing cpu that can be used for apps starting up. so look deeply at your IO. not to mention time spent mounting the filesystem when the kernel starts - all of init and shells loaded in. now.. 1. look into prelink. that can help avoid much of #4. also ldconfig and ld.so.cache - make sure it's pre-built and populated, not done on each boot. note that if u dont use e - u'll end up paging in the symbols for libraries anyway for evas, elementary etc. etc. anyway so either u pay the price for getting that all cached when e starts or when your efl app starts. one way or another you will pay that price. 2. just disable features you dont need - modules u dont need for evas (loaders, savers, engines etc.). dont build ecore libs u dont need. etc. etc. etc. 3. profile and see just how much time is spent prior to e coming up. you may find that is quite significant and you're barking up the wrong tree. so as i said for #1 profile profile profile profile -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ra...@ra... |