CE Performance page
UX & Performance team
- Communications
- IRC-channel #meego-arm at freenode
- CE daily meetings (time tbd)
- meego-handset mailing list
- Contributors
- Vesa-Matti Hartikainen IRC-nick: veskuh
- Vijay Nayani IRC-nick: vnayani
- Timo Rongas IRC-nick: ronksu
- Miroslav Safr IRC-nick: mirek or mirek2
- Gary Birkett IRC-nick: lcuk
Problems
- Startup time of applications
- Right after the homescreen has loaded, after the first boot, device is unusable for a while
- Memory use
- UI scrolling freezes for 1-2s from time to time
- Startup time of the device
Task list
UX fixes
Tasks
- Theming bugs
- Localization issues (Apps team in apps, gabor, zgyarmati in control panels)
- SMS does not not notify user (mkainu)
- Orientation issue with meego-ux-apps (Ronksu)
- Close button for meego-ux based apps (selesnie)
- This should be done on generic component itself, not to individual apps
- Remove systemui looking bar from meego-ux apps (it's confusing since it is not fully functional)
Tasks Done
- Meta bug for UX and usability issues for Summer Release created:
Bug 18862 - [META] [DE] UX glitches and bad usability in N900 DE Summer Release
Reducing App Startup time
Tasks
- last resort type of thing: taking NAND to use as swap (and destroying maemo installation)
- Investigate impact of Locale parsing (see #Locale further down)
Tasks Done
- Investigate effect on newer booster
- Investigate I/O priorities of daemons
- Should be ok, or maybe themedaemon's could be icnreased
- Investigate if booster really helps (veskuh)
- Helps about 2s for widgetsgallery and settings (MTF apps that know how to utilze it properly)
- Does not help others. => booster-m can be disabled
- launcher set I/O priority to IDLE for home this slows down startup of apps. Increase it to Normal (stskeeps)
- eMMC performance investigation, maemo is 2-20x faster? see bug #18295 (Q/A team to rerun the tests)
- Not that much slower, and in fact many cases faster
- eMMC vs. MMC, according to Sage, no major difference in old experiments
Reducing memory use
Tasks
- Merge meego-volume-control to systemui (jpeltonen)
- adjust stack sizes
- zram (formerly known as ramzswap and compcache) trial (tazpa)
- remove mdecorator
Tasks Done
- lower GLES ParamBuffer size (veskuh)
- Investigtate GLES ParamBuffer size
- @1MB ParamBuffer for widgetsgallery uses ~1.5MB total memory reduction, ~2.5MB less private memory, and ~1MB more shared memory (measuerd with smaps)
- @1MB ParamBuffer ~10MB increase in available memory (free + buffers + cache) measured with top after boot
- meego-ux to drop GL-context: https://bugs.meego.com/show_bug.cgi?id=18268
- Remove unused applifed processes. (Ronksu)
Improving first boot
Tasks
- Reduce the number of .desktop files and icons meegohome scans at first boot (vnayani)
Tasks Done
- delay start of tracker indexing (maitrey)
- System does this already: reduce I/O priority of tracker-miner and tracker-store (use ionice to to launch)
Not doable
- tracker to preindex filesystem to improve first boot. see bug #18759 (maitrey)
Improving system startup
Tasks
- Reduce the list of autostarted apps.
- Delay the startup of dialer, trackers, etc. to happen once destop is ready (lamikr) [1]
- tracker configuration (maitrey)
Tasks Done
- autostarted backlight setup.desktop file removed from the nokia-n900-configs (mce handles backlight) (lamikr)
- bootchart generated svg from the N900 processes starting up attached to bug https://bugs.meego.com/show_bug.cgi?id=9527 (lamikr)
- avahi changed to started on demand via dbus service file instead of launching automatically. (lamikr) [2]
- fixed the meegotouch-home io-priority. Affects to all apps launched from desktop. (stskeeps)
Improving UI Performance
Tasks
- Check if newer MTF improves performance (mirek)
- Check if newer Qt improves performance
Tasks Done
Misc
Tasks
- optimizing MTF packages, there might be some configuration options, etc.?
- CGROUPS optimization, most likely still not done
- cache some often used data in NAND and symlink there
- real microsdhc tests based on class speed rating
- actually answer specific questions about how write/read speed effect perf
- app startup times
- general usage
- media write times
- cataloguing media
- Swap on memory card (probably will not help if the os is on the card also, otherwise might)
- Taking fennec more frequently from upstream beta repository http://lists.meego.com/pipermail/meego-handset/2011-June/000467.html
- Profile startup of simple MTF, QML, and Qt apps
- Profile memory use of simple MTF, QML, and Qt apps
- Investigate configuration options for MTF
- Investigate configuration options for Qt
- Investigate configuration options for QML
- Update MTF (libmeegotouch, mcompositor, home, system ui, etc. ) to get latest optimizations from upstream (mirek)
- Update Qt
Tasks Done
- test overclock with known testing (from qa-tools guys perhaps)
- kjokinie: Tested on my set up boot-times with some overclock configurations already
- practically it does not help at least boot time
- however, at least audio player seemed much more responsive, so application performances should still be tested by QA.
- Carsten tweaked kernel virtual memory settings (increased swappiness), Fennec bootup improved a lot and also system responsivness
- thumbnails images for pre-installed images should be done during the build time. (Now thumbnails are generated only when user wants to get the image list and that takes times)
Benchmark results
- Results from Q/A http://wiki.meego.com/ARM/N900/QA/Performance
- Different class SD card benchmarking
-
- Used image 05-30.1 acceptance image
- With class 10 card image worked really unstable. Measurements were got after several tries.
- Current class10 measurements are not comparable but give somekind of direction
- SunSpider (JavaScript performance
- 6.1s with GPE MiniBrowser (image DE.2011-05-30 acceptance)
- 6.8s with Fennec (image DE.2011-05-30 acceptance)
- These are actually pretty good results. Indicates that raw CPU perfomance is ok.
- widgetsgallery -timedemo -log-fps
Page name StaticPageBenchmark (0) PanningBenchmark (0) RotationBenchmark (90) StaticPageBenchmark (90) PanningBenchmark (90) RotationBenchmark (0)
ApplicationMenu 48fps | 2988ms n/a | n/a 25fps | 557ms 53fps | 2984ms n/a | n/a 29fps | 578ms
DisplayModes 55fps | 2989ms 54fps | 421ms 40fps | 574ms 53fps | 2983ms n/a | n/a 47fps | 546ms
ToolBar 51fps | 2972ms 41fps | 503ms 34fps | 602ms 55fps | 2998ms 46fps | 298ms 20fps | 250ms
CustomNavigationBar 53fps | 2989ms n/a | n/a 46fps | 579ms 54fps | 2980ms n/a | n/a 52fps | 572ms
Label 50fps | 3157ms 45fps | 87ms n/a | n/a 54fps | 2989ms n/a | n/a 40fps | 573ms
Image 55fps | 2996ms 55fps | 379ms n/a | n/a 52fps | 2989ms 54fps | 129ms 7fps | 139ms
ProgressBar 49fps | 2981ms n/a | n/a 34fps | 644ms 54fps | 2973ms n/a | n/a 36fps | 627ms
Spinner 52fps | 2989ms n/a | n/a n/a | n/a 53fps | 2989ms n/a | n/a 27fps | 436ms
PushButton 48fps | 2982ms 45fps | 3427ms 28fps | 671ms 47fps | 2985ms 44fps | 4521ms n/a | n/a
IconButton 52fps | 2991ms n/a | n/a 35fps | 674ms 54fps | 2989ms n/a | n/a 38fps | 621ms
Switch 54fps | 2989ms n/a | n/a 31fps | 694ms 54fps | 2991ms n/a | n/a 28fps | 657ms
Checkbox 52fps | 2989ms n/a | n/a 30fps | 780ms 54fps | 2997ms n/a | n/a 38fps | 649ms
ButtonGroup 53fps | 3005ms 27fps | 323ms n/a | n/a 50fps | 2988ms 52fps | 491ms n/a | n/a
SingleSelectionDialogsPage 56fps | 2998ms 46fps | 345ms n/a | n/a 53fps | 3004ms n/a | n/a 42fps | 654ms
QueryDialogsPage 50fps | 2997ms n/a | n/a 35fps | 696ms 53fps | 2987ms n/a | n/a 36fps | 655ms
SheetsPage 54fps | 2988ms 59fps | 151ms n/a | n/a 55fps | 2982ms n/a | n/a 40fps | 666ms
BannersPage 51fps | 2996ms n/a | n/a 37fps | 740ms 54fps | 3000ms n/a | n/a 38fps | 671ms
NotificationsPage 54fps | 2994ms n/a | n/a 35fps | 733ms 55fps | 3000ms n/a | n/a 39fps | 678ms
List 54fps | 2989ms 53fps |20539ms 2fps | 485ms 56fps | 2973ms 51fps |19630ms n/a | n/a
Grid 16fps | 2961ms 48fps | 2777ms 16fps | 1016ms 42fps | 3147ms 48fps | 3252ms n/a | n/a
ObjectMenu 44fps | 2988ms 52fps | 248ms n/a | n/a 54fps | 2991ms 55fps | 181ms n/a | n/a
ComboBox 52fps | 2946ms n/a | n/a 25fps | 856ms 53fps | 2984ms n/a | n/a 30fps | 784ms
ContentItems 55fps | 2987ms 39fps | 4197ms n/a | n/a 54fps | 2988ms 29fps | 3483ms 7fps | 407ms
SpeechBubble 52fps | 2986ms 47fps | 3842ms n/a | n/a 51fps | 2989ms 29fps | 3906ms n/a | n/a
TextEntry 54fps | 2988ms 43fps | 3209ms n/a | n/a 52fps | 2988ms 35fps | 2541ms n/a | n/a
TextEntryNavigation 53fps | 2989ms n/a | n/a 18fps | 912ms 50fps | 2982ms n/a | n/a 22fps | 794ms
TextEntryAttributeExtension 54fps | 2988ms 41fps | 192ms n/a | n/a 53fps | 2988ms n/a | n/a 19fps | 860ms
Slider 54fps | 2997ms 37fps | 404ms n/a | n/a 53fps | 2989ms n/a | n/a 18fps | 865ms
InputFeedback 52fps | 2988ms 55fps | 90ms 19fps | 902ms 40fps | 2988ms 43fps | 69ms n/a | n/a
Information Display 53fps | 3001ms 26fps | 188ms 24fps | 930ms 54fps | 2999ms n/a | n/a 28fps | 857ms
Take a screenshot 49fps | 3217ms n/a | n/a 23fps | 1028ms 55fps | 2978ms n/a | n/a 26fps | 893ms
- Conclusion: Graphis performance seems to be ok
- processes eating more than 2000kb of memory (2010-06-08)
- (ps -e -orss=,args= | sort -b -k1,1n | pr -TW100)
2016 /usr/sbin/ofonod
2228 /usr/sbin/connmand -W nl80211,wext
2400 uxlaunch
2616 /sbin/mce -d
2624 /usr/libexec/upowerd
2952 /usr/sbin/dsme -p /usr/lib/dsme/libstartup.so
3084 /usr/libexec/mission-control-5
3440 /usr/bin/meego-volume-control
3616 /usr/sbin/sensord -c=/etc/sensorfw/sensord-rx_51.conf -d --log-target=4 --log-file-path=/var/l
3900 /usr/bin/timed
3984 /usr/lib/tumbler-1/tumblerd
4084 /usr/bin/pulseaudio --start -n --file=/etc/pulse/arm_nokia_rx_51_board.pa
4564 /usr/sbin/ohmd
7172 /usr/libexec/tracker-miner-fs
7460 /usr/bin/applifed
12384 /usr/bin/applauncherd.bin
14160 /usr/libexec/tracker-store
14524 /usr/bin/messageserver
16568 /usr/bin/Xorg :0 -dpi 120 -nolisten tcp -noreset -auth /home/meego/.Xauthority -nocursor vt2
20108 /usr/bin/mthemedaemon
21676 /usr/bin/mcompositor
26820 /usr/bin/meego-im-uiserver -remote-theme
27344 booster-m
27852 /usr/bin/mdecorator -software -remote-theme
32620 /usr/bin/sysuid -remote-theme
33172 /usr/bin/meegotouchhome -remote-theme
38544 /usr/bin/dialer -prestart
- Conclusion: meego-volume-control went down from 26000 kb to 3440 thanks for the qml ripout
- Can we reduce the mem usage of processes like sysuid, mdecorator, mthemedaemon
- Is booster-m really improving our performance as it takes itself a lot of from our memory that we do not have any extra without swapping?
- by removing the applauncherd (process starting booster-m) and tracker-store and delaying the dialer ui (40000 kb) launch by 30 second, bootup time will improved from 72 second to 59.
Locale Parsing
Currently inside N900-CE image, the folder /usr/share/locale contains over 500 items many of these are placeholders for real language support and do not contain much.
Veskuh said that we only include the Community translations in this image.
Having such a cluttered folder with placemarks only puts a negative impact in file system performance and app startup time.
In rough tests, removing this folder improves startup time.
Proper analysis of this is required and a compromise where translations are still working but without wasted space is important.
For later investigation, find other filesystem hotspots which have similar large folders full of placeholders.
- <lcuk> veskuh, is there a tool which tells which folders are scanned whilst starting app?
- <Stskeeps> strace?
- <veskuh> strace
- <lcuk> hmm looking now
- <lcuk> strace is on the n900-ce image :)
- <lcuk> thx
Tools & Links
Ideas
Use settings from M5 rc scripts, such as reducing ptys, etc to save memory
Team meeting minutes
http://irclogs.meego.com/meetbot/meego-meeting/2011/meego-meeting.2011-06-10-06.58.html