[maemo-users] Battery Benchmarking?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tim!

On Tue, 2007-01-09 at 19:07 +0100, ext Tim Teulings wrote:
> Hello!
> 
> > the apps you have installed are buggy and generate activity
> > and i mean any type of activity, 1% CPU load is still too much:
> > if the app is idle, it must have 0% CPU activity
> 
> What does that exactly mean (especially for non GTK-based applications
> like mine that cannot expect some GTK magic)?
First of all my deepest and most sincere thanks for this question.
So maybe for once it won't look like i just rant against application
developers.

> Say for example I have an editor with has a blinking cursor. The GUI
> library internally uses select with a timer as main event loop. Does
> above statement mean, that my application is still running and select
> still lopping and timer can run out and the cursor still blinks while I
> put the cover on the device?

Let's take the editor example and see it throughthe whole sw stack.

*First of all the timer you are using from userspace is mapped to a
queue in the kernel, which in turns uses a hw timer.

*The kernel has _NON_ periodic system tick timer, meaning that system
ticks are skipped when there is no activity scheduled.

(So that means that if nothing perturbs the state of the system, it
won't wake up, even if the cover is not present and you are looking at a
static image of the text in your editor.
As a matter of fact it does wake up every now and then, but the number
of times can be approximated with 0, when compared to a system where
there is a interrupt every tick.)

*select will be (hopefully) implemented in a sane way that doesn't busy
loop, but rather relies again on asynchronous events (notification from
the kernel that the timer has expired) and therefore the library code
shouldn't generate unnecessary activity.

*finally the editor application: personally i consider blinking cursors
to be evil, however putting aside personal feelings, in general it makes
sense to do screen updates only when they are visible. So if the cover
is on, what good is to update the blinking cursor? Same applies to cover
off (open) but screen blanked. Again nobody will enjoy your nice
blinking effect but that will cause the processor to periodically wake
up. Certainly not for long, but if I may quote Depeche Mode,
	 "Everything Counts in a Large Amount"

> I always assumed that it goes in some kind
> of hibernate mode where machine state is (nearly) completely frozen,
Yes and no:
-yes because it does go to hw specific power saving states
-no because it is transparent to sw (well, most of it and certainly user
space stuff) and if the sw doesn't keep quiet, the power saving state
won't be reached. (Actually there are significant differencies between
omap1710 and omap2420, with the latter having finer granularity of what
hw blocks can sleep and how.)

> but
> your statement sounds like it just switches of some stuff of while CPU
> is still running?

I consider the "OFF" button on your everyday PDA just smoke in the eyes.
Many people have compleined for the absence of a hybernate
functionality.
They have not understood that we are already doing it dynamically. All
the time, at _runtime_, not just when the user presses the "OFF" button.

Of course it takes more effort, but that's the way to go, since modern
mobile processors would have ridiculous use-times if they were running
constantly at full power.
Or the size of the battery would become incredibly large.

> How can I work around this?
*Don't do unnecessary stuff
*Don't poll
*Don't busyloop
*Check system state (by listening for events, again, never poll)
*Keep updates at minimum
*Do updates only if your application is visible, otherwise completely
stop updating the UI till you become again king of the hill

> Do I need to catch DBus events to get
> informed that I have to go in some application specific low power mode?

Yes, screen blanked should be enough.
Also because N800 doesn't have a cover, but certainly that doesn't
prevent us to do the very same power saving that was already available
on 770. :-D

The cover would just be the cause for an _immediate_ rather than timed
screen blanking.

-- 
Cheers, Igor

Igor Stoppa <igor.stoppa at nokia.com>
(Nokia M - OSSO /Helsinki Finland)



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Big List of Linux Books]    

  Powered by Linux