Meego Wiki
Views

ARM/N900/Performance

From MeeGo wiki
< ARM | N900(Difference between revisions)
Jump to: navigation, search
(Team meeting minutes)
(Improving UI Performance)
 
(13 intermediate revisions not shown)
Line 1: Line 1:
= CE Performance page =
= 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 ==
== Problems ==
Line 19: Line 7:
* 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
* 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)
 
-
* Remove systemui looking bar from meego-ux apps (it's confusing since it is not fully functional)
 
-
 
-
'''Tasks Done'''
 
-
* 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
 
-
* Meta bug for UX and usability issues for Summer Release created:
 
-
  [http://bugs.meego.com/show_bug.cgi?id=18862 Bug 18862] - [META] [DE] UX glitches and bad usability in N900 DE Summer Release
 
=== Reducing App Startup time ===
=== Reducing App Startup time ===
Line 59: Line 32:
=== Reducing memory use ===
=== Reducing memory use ===
'''Tasks'''
'''Tasks'''
-
 
-
* Merge meego-volume-control to systemui (jpeltonen)
 
* adjust stack sizes
* adjust stack sizes
-
* zram (formerly known as ramzswap and compcache) trial [[User:Tazpa/zram|results]] (tazpa)
 
* remove mdecorator
* remove mdecorator
'''Tasks Done'''
'''Tasks Done'''
 +
* Merge meego-volume-control to systemui (jpeltonen)
* lower GLES ParamBuffer size (veskuh)
* lower GLES ParamBuffer size (veskuh)
* Investigtate GLES ParamBuffer size
* Investigtate GLES ParamBuffer size
Line 72: Line 43:
* 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'''
Line 88: Line 59:
'''Tasks'''
'''Tasks'''
* Reduce the list of [[ARM/N900/Performance/autostart|autostarted apps.]]
* Reduce the list of [[ARM/N900/Performance/autostart|autostarted apps.]]
-
* tracker configuration (maitrey)
 
'''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)
Line 99: Line 70:
=== Improving UI Performance ===
=== Improving UI Performance ===
'''Tasks'''
'''Tasks'''
-
* Check if newer MTF improves performance (mirek)
+
 
-
* Check if newer Qt improves performance
+
'''Tasks Done'''
'''Tasks Done'''
 +
* Check if newer Qt improves performance
 +
* Check if newer MTF improves performance (mirek)
=== Misc ===
=== Misc ===
Line 114: Line 86:
* Investigate configuration options for Qt
* Investigate configuration options for Qt
* Investigate configuration options for QML
* Investigate configuration options for QML
-
* Update MTF (libmeegotouch, mcompositor, home, system ui, etc. ) to get latest optimizations from upstream (mirek)
 
* Update Qt
* Update Qt
* Tweak readahead. blockdev --setra 2048 /dev/mmcblk0 seems to help application start-up and boot. (phdeswer)
* 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'''
'''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
Line 259: Line 232:
== Team meeting minutes ==
== Team meeting minutes ==
-
Team meetings will be held every monday at 8:00 (UTC) at #meego-meeting IRC-channel on freenode.
+
* 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
+

Latest revision as of 13:00, 6 October 2011

Contents

CE Performance page

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

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
    • 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 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

  • adjust stack sizes
  • remove mdecorator

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
  • Remove unused applifed processes. (Ronksu)
  • zram (formerly known as ramzswap and compcache) trial results (tazpa) No definite upside due to slow cpu and small ram of n900

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

Tasks Done

  • tracker configuration (maitrey)
  • 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) [1]
  • 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) [2]

Improving UI Performance

Tasks

Tasks Done

  • Check if newer Qt improves performance
  • Check if newer MTF improves performance (mirek)

Misc

Tasks

  • CGROUPS optimization
  • optimizing MTF packages, there might be some configuration options, etc.?
  • 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)
    • 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
  • 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
  • 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)

Benchmark results

  • Results from Q/A http://wiki.meego.com/ARM/N900/QA/Performance
  • Different class SD card benchmarking
    • SDcard benchmarking 060611.jpg
    • 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

Personal tools