(→Reducing App Startup time) |
(→Improving UI Performance) |
||
| (41 intermediate revisions not shown) | |||
| Line 1: | Line 1: | ||
= CE Performance page = | = CE Performance page = | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
== Problems == | == Problems == | ||
* Startup time of applications | * Startup time of applications | ||
| - | |||
* Right after the homescreen has loaded, after the first boot, device is unusable for a while | * Right after the homescreen has loaded, after the first boot, device is unusable for a while | ||
* Memory use | * Memory use | ||
| - | |||
* UI scrolling freezes for 1-2s from time to time | * UI scrolling freezes for 1-2s from time to time | ||
| + | * Startup time of the device | ||
| - | == | + | === Reducing App Startup time === |
| - | + | ||
'''Tasks''' | '''Tasks''' | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
* last resort type of thing: taking NAND to use as swap (and destroying maemo installation) | * 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''' | '''Tasks Done''' | ||
| + | * Investigate effect on newer booster | ||
| + | ** For boosted MTF apps, slightly less memory use for daemons, no improvement in startup (veskuh) | ||
| + | ** For meego-ux apps, not yet working (msugano) | ||
| + | * 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 utilize it properly) | ||
| + | ** first launch of settings (duicontrolpanel) with booster: 4 sec, launches after that: 2.5 sec | ||
| + | ** first launch of settings (duicontrolpanel) without booster: 6 sec, launches after that: 3 sec | ||
| + | ** 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 [https://bugs.meego.com/show_bug.cgi?id=18295 bug #18295] (Q/A team to rerun the tests) | * eMMC performance investigation, maemo is 2-20x faster? see [https://bugs.meego.com/show_bug.cgi?id=18295 bug #18295] (Q/A team to rerun the tests) | ||
** Not that much slower, and in fact many cases faster | ** Not that much slower, and in fact many cases faster | ||
| Line 47: | Line 32: | ||
=== Reducing memory use === | === Reducing memory use === | ||
'''Tasks''' | '''Tasks''' | ||
| - | |||
| - | |||
* adjust stack sizes | * adjust stack sizes | ||
| - | * | + | * remove mdecorator |
'''Tasks Done''' | '''Tasks Done''' | ||
| + | * Merge meego-volume-control to systemui (jpeltonen) | ||
| + | * 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 | * meego-ux to drop GL-context: https://bugs.meego.com/show_bug.cgi?id=18268 | ||
* Remove unused applifed processes. (Ronksu) | * Remove unused applifed processes. (Ronksu) | ||
| + | * zram (formerly known as ramzswap and compcache) trial [[User:Tazpa/zram|results]] (tazpa) No definite upside due to slow cpu and small ram of n900 | ||
=== Improving first boot === | === Improving first boot === | ||
'''Tasks''' | '''Tasks''' | ||
| - | |||
* Reduce the number of .desktop files and icons meegohome scans at first boot (vnayani) | * Reduce the number of .desktop files and icons meegohome scans at first boot (vnayani) | ||
| - | + | ||
| - | + | ||
'''Tasks Done''' | '''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 [https://bugs.meego.com/show_bug.cgi?id=18759 bug #18759] (maitrey) | ||
=== Improving system startup === | === Improving system startup === | ||
'''Tasks''' | '''Tasks''' | ||
* Reduce the list of [[ARM/N900/Performance/autostart|autostarted apps.]] | * Reduce the list of [[ARM/N900/Performance/autostart|autostarted apps.]] | ||
| - | |||
| - | |||
'''Tasks Done''' | '''Tasks Done''' | ||
| + | * tracker configuration (maitrey) | ||
* autostarted backlight setup.desktop file removed from the nokia-n900-configs (mce handles backlight) (lamikr) | * 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) | * 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) [https://bugs.meego.com/show_bug.cgi?id=19297] | ||
| + | * fixed the meegotouch-home io-priority. Affects to all apps launched from desktop. (stskeeps) | ||
| + | * Delay the startup of dialer, trackers, etc. to happen once destop is ready (lamikr) [https://bugs.meego.com/show_bug.cgi?id=19287] | ||
=== Improving UI Performance === | === Improving UI Performance === | ||
'''Tasks''' | '''Tasks''' | ||
| - | + | ||
| - | + | ||
'''Tasks Done''' | '''Tasks Done''' | ||
| + | * Check if newer Qt improves performance | ||
| + | * Check if newer MTF improves performance (mirek) | ||
=== Misc === | === Misc === | ||
'''Tasks''' | '''Tasks''' | ||
| + | * CGROUPS optimization | ||
* optimizing MTF packages, there might be some configuration options, etc.? | * optimizing MTF packages, there might be some configuration options, etc.? | ||
| - | |||
* cache some often used data in NAND and symlink there | * cache some often used data in NAND and symlink there | ||
| + | * 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 Qt | ||
| + | * Tweak readahead. blockdev --setra 2048 /dev/mmcblk0 seems to help application start-up and boot. (phdeswer) | ||
| + | ** We did a test build and Q/A did not find any improvement instead actually a bit of regression. This would need more analysis. | ||
| + | |||
| + | '''Tasks Done''' | ||
| + | * Update MTF (libmeegotouch, mcompositor, home, system ui, etc. ) to get latest optimizations from upstream (mirek) | ||
* test overclock with known testing (from qa-tools guys perhaps) | * test overclock with known testing (from qa-tools guys perhaps) | ||
** kjokinie: Tested on my set up boot-times with some [[ARM/N900/Performance/OverclockBootTimeTest | overclock configurations]] already | ** kjokinie: Tested on my set up boot-times with some [[ARM/N900/Performance/OverclockBootTimeTest | overclock configurations]] already | ||
*** practically it does not help at least boot time | *** 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. | *** 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 | ||
* real microsdhc tests based on class speed rating | * real microsdhc tests based on class speed rating | ||
** actually answer specific questions about how write/read speed effect perf | ** actually answer specific questions about how write/read speed effect perf | ||
| Line 95: | Line 103: | ||
*** media write times | *** media write times | ||
*** cataloguing media | *** cataloguing media | ||
| + | * 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) | ||
| + | '''Not realistic''' | ||
* Swap on memory card (probably will not help if the os is on the card also, otherwise might) | * Swap on memory card (probably will not help if the os is on the card also, otherwise might) | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
== Benchmark results == | == Benchmark results == | ||
| Line 190: | Line 189: | ||
* 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? | * 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. | ** 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 == | == Tools & Links == | ||
| Line 197: | Line 217: | ||
* [[ARM/N900/Performance/bootchart|Bootchart for measuring bootup details ]] | * [[ARM/N900/Performance/bootchart|Bootchart for measuring bootup details ]] | ||
* Gprof | * Gprof | ||
| - | * Perf http://omappedia.org/wiki/Using_perf | + | * Perf (this is on images by default) http://omappedia.org/wiki/Using_perf |
| - | * IOtop http://guichaz.free.fr/iotop/ | + | * IOtop (this is on images by default) http://guichaz.free.fr/iotop/ |
* vmstat | * vmstat | ||
* iostat | * iostat | ||
| Line 205: | Line 225: | ||
* QML Performance Monitor: http://labs.qt.nokia.com/2011/04/07/qml-perfomance-monitor/ | * QML Performance Monitor: http://labs.qt.nokia.com/2011/04/07/qml-perfomance-monitor/ | ||
* libmeegotouch benchmarks: http://meego.gitorious.net/meegotouch/libmeegotouch/trees/master/benchmarks | * libmeegotouch benchmarks: http://meego.gitorious.net/meegotouch/libmeegotouch/trees/master/benchmarks | ||
| + | * strace (see locale above) | ||
== Ideas == | == Ideas == | ||
| Line 211: | Line 232: | ||
== Team meeting minutes == | == Team meeting minutes == | ||
| - | http://irclogs.meego.com/meetbot/meego-meeting/2011/meego-meeting.2011-06-10-06.58.html | + | * http://irclogs.meego.com/meetbot/meego-meeting/2011/meego-meeting.2011-06-10-06.58.html |
Contents |
Tasks
Tasks Done
Tasks
Tasks Done
Tasks
Tasks Done
Not doable
Tasks
Tasks Done
Tasks
Tasks Done
Tasks
Tasks Done
Not realistic
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
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
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.
Use settings from M5 rc scripts, such as reducing ptys, etc to save memory