Mobile/Powersaving: Difference between revisions

 
(6 intermediate revisions by the same user not shown)
Line 5: Line 5:
== Metrics ==
== Metrics ==


* # of wakeups/second, that prevent the CPU from sleeping. See [http://www.lesswatts.org/projects/powertop/ powertop]. Relevant in low CPU load.
* N900 - use [http://www.mauve.plus.com/bat.tar.gz this useful tool], run ././bq27220.sh -r
** Fennec currently has 1.5 wakeups/second when idle.
* # of wakeups/second, that prevent the CPU from sleeping. See [http://www.lesswatts.org/projects/powertop/ powertop]. Relevant in low CPU load. See [[Mobile/Powersaving/Wakeups]]
* CPU %. Relevant in high CPU load.
* CPU %. Relevant in high CPU load.
* Disk usage (tools: iostat, atop).
* Disk usage (tools: iostat, atop).
Line 13: Line 13:


== Ideas ==
== Ideas ==
=== OS-level hinting ===
Different OSes have different application lifecycles. Depending on application states, we might want to do certain things. Information on different OSes is tracked [[Mobile/PowerManagement|here]].


=== OS-level process control ===
=== OS-level process control ===


The 'nuclear option': Use OS-level operations to make processes sleep or use low CPU % when they should. On Linux this can be done with SIG_STOP, SIG_CONT (see e.g. [http://cpulimit.sourceforge.net/ cpulimit]).
The 'nuclear option': Use OS-level operations to make processes use low CPU % when they should. On Linux this can be done with SIG_STOP, SIG_CONT (see e.g. [http://cpulimit.sourceforge.net/ cpulimit]). Note that we are **not** completely freezing the process, that would be too bug-prone.


'''Tracked in {{bug|568054}}'''
'''Tracked in {{bug|568054}}'''


'''Uses''':
'''Uses''':
* Put background tabs to sleep (requires one process per tab).
* Force plugins to use low CPU % (Flash etc.)
* Force plugins to use low CPU % (Flash etc.)
* Suspend top tab (or all tabs) when panning, or during other certain types of activity.
* Throttle all tabs when battery is low (kind of like laptops dim their monitors on low battery).
* Throttle all tabs when battery is low (kind of like laptops dim their monitors on low battery).
** User-controllable speed setting, to save power by throttling?
** User-controllable speed setting, to save power by throttling?
* Put all tabs to sleep when idle (sort of like a screensaver). Although the mobile OS might already do this to us when it decides the device is idle.


'''Availability''': Probably Meego. Android lacks it in the Java API (but other signals are present, so perhaps it will be added), perhaps using the NDK it is possible though?
'''Availability''': Probably Meego. Android lacks it in the Java API (but other signals are present, so perhaps it will be added), perhaps using the NDK it is possible though?
Line 37: Line 38:


A more messy option: Add separate options throughout our codebase to allow things to be temporarily frozen - JavaScript, animations, plugins, etc. etc.
A more messy option: Add separate options throughout our codebase to allow things to be temporarily frozen - JavaScript, animations, plugins, etc. etc.
=== Platform-specific control ===
* On Android, processes have a [http://developer.android.com/guide/topics/fundamentals.html#lcycles lifecycle]. We currently pause the main thread - but no others - when we get OnPause.
** Should we do more in OnStop?
* Need to investigate other OSes


== Tests ==
== Tests ==
Line 44: Line 51:
** [http://www.webhamster.com/ Hamster dance]
** [http://www.webhamster.com/ Hamster dance]
** [http://www.cnn.com/ CNN] (takes 100% CPU in fennec for no user-apparent reason)
** [http://www.cnn.com/ CNN] (takes 100% CPU in fennec for no user-apparent reason)
* [[N900 tests]]


== Bugs ==
== Bugs ==
* {{bug|446418}} + dependencies - Investigate power management issues
* {{bug|446418}} + dependencies - Investigate power management issues
* {{bug|567339}} - Excessive wake-ups after visiting start page
* {{bug|567339}} - Excessive wake-ups after visiting start page
213

edits