To read all comments associated with this story, please click here.
Shmoopty,
"I've found SetCPU to be the best battery saver beyond any of those recommended apps. It will allow your CPU to be progressively underclocked when it reaches certain battery levels if your phone is rooted."
I don't have an ARM processor to test this on, but I hear that these processors are extremely aggressive in conserving power when they're not in use. This way, when they're idle, they should have a similar energy footprint regardless of clock speed. And when they're busy, the clock speeds are inversely proportional to the length of time spent being busy. So slowing down the clock isn't necessarily more efficient.
Here is data from a test I just completed on my Intel Xeon 3.00GHZ E3110.
A simple work load: ( 21.5B loops )
xor ax, ax
xor bx, bx
xor cx, cx
again:
add ax, 1
adc bx, 0
adc cx, 0
cmp cx, 5
jb again
int 20h
3GHZ Throttling enabled:
Idle = 5.2watt
Workload = 16.5watt for 23s = .105 watt-hours
3GHZ Full throttle:
Idle = 6.6watt
Workload = 17.6watt for 22s = .108 watt-hours
2GHZ Throttling enabled:
Idle = 5.1watt
Workload = 9.1watt for 98s = .248 watt-hours
2GHZ Full throttle:
Idle = 6.6watt
Workload = 17.6watt for 33s = 0.161 watt-hours
I can't explain what went on with cpu throttling at 2GHZ, a guess is that maybe it wasn't designed to work with an underclocked CPU? Never the less, take note that in all instances (with and without dynamic throttling), the CPU clocked at 3GHZ was more energy efficient under load than when it was clocked at 2GHZ. Interestingly the 2GHZ throttled test used the lowest wattage but required the greatest total energy because it was so slow. At idle, the cpu frequency made no difference, as I anticipated.
So, if the CPU's idle energy footprint is the same regardless of clock speed, then it may make the most sense to empty the work queues as quickly as possible to return to idle.
Comparing this to ARM processors is obviously apples to oranges, but it should provide a good warning against taking improved energy/frequency ratios for granted.
Can anyone shed light on empirical data for ARM processors specifically, like those used in Android phones?
Edit: I should add that my test didn't play with voltages levels, which were left at auto. The cpu throttling utility for my mainboard is supposed to do that, though I'm not sure exactly what it does since it's been end-user dumbified.
Edited 2011-11-03 05:30 UTC
SetCPU shouldn't be needed on most modern devices running Android 2.3. CPU speed should be automatically controlled by default now. At least, it is on my Xperia Pro, as shown by System Monitor (goes as low as 200 Mhz and various steps up to the max of 1 GHz).
SetCPU isn't needed with Cyanogenmod 7.x either, as similar features are built in.
About the only time you need SetCPU anymore is if you are going to overclock the CPU.
Probably mostly because it acts as a signal / limiter for you, to use it much less (while, per task, possibly actually using more power)
When people become (almost) obsessed about some goal desired by them, about tricks supposedly leading to it - they often overlook how much, during search for the holy grail, they modify their own behaviour (and, subsequently, lead themselves to feedback loop, reinforce their self-perception that tricks work)





Member since:
2011-01-03
I've found SetCPU to be the best battery saver beyond any of those recommended apps.
It will allow your CPU to be progressively underclocked when it reaches certain battery levels if your phone is rooted.
At 30% battery, my phone becomes slow. At 15%, it becomes *very slow*.
Because slow is always better than dead, and the net effect is significantly longer battery life.