FORUMS
Remove All Ads from XDA

[Module] | X8 | X10 mini/pro | AX8_SMARTASS v002 | 'smartass' governor | [2011-07-19]

195 posts
Thanks Meter: 457
 
By AnDyX, Senior Member on 8th July 2011, 06:10 PM
Post Reply Email Thread
EASY ENGLISH: Differences between this module and the others:
- allows to set max CPU freq when screen is off (to save battery),
- allows to set starting CPU freq when phone awakes (to speed up awake process),
- allows set/change almost all aspects of governor (to suite needs),
- should be a bit more responsive when parameters are well chosen.

Note: Don't use DSP Manager when this governor is enabled (it consumes more CPU then player itself). When screen goes off - sound will be distorted. Use player with equalizer build-in instead.

Governor have some predefinied values - more info in "Available settings".

Start:
The goal was bring 'smartass' governor to work with X8 and also make some improvements.

Quote:

What Is A CPUFreq Governor?
==============================

Most cpufreq drivers (in fact, all except one, longrun) or even most
cpu frequency scaling algorithms only offer the CPU to be set to one
frequency. In order to offer dynamic frequency scaling, the cpufreq
core must be able to tell these drivers of a "target frequency". So
these specific drivers will be transformed to offer a "->target"
call instead of the existing "->setpolicy" call. For "longrun", all
stays the same, though.

How to decide what frequency within the CPUfreq policy should be used?
That's done using "cpufreq governors". Two are already in this patch
-- they're the already existing "powersave" and "performance" which
set the frequency statically to the lowest or highest frequency,
respectively. At least two more such governors will be ready for
addition in the near future, but likely many more as there are various
different theories and models about dynamic frequency scaling
around. Using such a generic interface as cpufreq offers to scaling
governors, these can be tested extensively, and the best one can be
selected for each specific use.

Quote:

SMARTASS GOVERNOR - is based on the concept of the interactive governor.
I have always agreed that in theory the way interactive works - by taking over the idle loop - is very attractive. I have never managed to tweak it so it would behave decently in real life. Smartass is a complete rewrite of the code plus more. I think its a success. Performance is on par with the "old" minmax and I think smartass is a bit more responsive. Battery life is hard to quantify precisely but it does spend much more time at the lower frequencies.
Smartass will also cap the max frequency when sleeping to 245Mhz (or if your min frequency is higher than 245 - why?! - it will cap it to your min frequency). Lets take for example the 600/245 kernel, it will sleep at 245. No need for sleep profiles any more!

Info:
- information about governors is here,
- more information about 'smartass' governor is here,
- how different governors work is explained here: [Q] SetCPU governors (explained).


Prerequisites:
- X8,
- Baseband x15
- desire to replace SetCPU - when used only for 'ScreenOff' profile.

Manual installation:
- push ax8_smartass.ko to /system/lib/modules
- run the following command

Code:
insmod /system/lib/modules/ax8_smartass.ko
echo "smartass" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Available settings:

Note: there is no need to add following commands without changed value. The values are already implemented in module.

- up_rate_us:
The minimum amount of time to spend at a frequency before we can ramp up.
Default value:
Code:
echo "24000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/up_rate_us
- down_rate_us:
The minimum amount of time to spend at a frequency before we can ramp down. Default value:
Code:
echo "49000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/down_rate_us
- up_min_freq:
When ramping up frequency with no idle cycles jump to at least this frequency.
Zero disables. Set a very high value to jump to policy max freqeuncy.
Code:
echo "0"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/up_min_freq
- sleep_max_freq:
When sleep_max_freq>0 the frequency when suspended will be capped by this frequency. Also will wake up at max frequency of policy to minimize wakeup issues.
Set sleep_max_freq=0 to disable this behavior.
Default value:
Code:
echo "122880"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/sleep_max_freq
- sleep_wakeup_freq:
The frequency to set when waking up from sleep.
When sleep_max_freq=0 this will have no effect.
Default value:
Code:
echo "600000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/sleep_wakeup_freq
- awake_min_freq: When awake_min_freq>0 the frequency when not suspended will not go below this frequency.
Set awake_min_freq=0 to disable this behavior.
Default value:
Code:
echo "0"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/awake_min_freq
- sample_rate_jiffies:
Sampling rate, I highly recommend to leave it at 2.

- ramp_up_step:
Freqeuncy delta when ramping up.
zero disables and causes to always jump straight to max frequency.
Default value:
Code:
echo "220000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/ramp_up_step
- ramp_down_step:
Freqeuncy delta when ramping down.
zero disables and will calculate ramp down according to load heuristic.
Default value:
Code:
echo "160000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/ramp_down_step
- max_cpu_load:
CPU freq will be increased if measured load > max_cpu_load.
Default value:
Code:
echo "75"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/max_cpu_load
- min_cpu_load: CPU freq will be decreased if measured load < min_cpu_load.
Default value:
Code:
echo "25"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/min_cpu_load
- sleep_rate_us: Sleep rate when screen is off
Code:
echo "500000"  > /sys/devices/system/cpu/cpu0/cpufreq/smartass/sleep_rate_us
Release history:


v002:
- sleep_max_freq set to 122880 - more battery saving,
- sleep_wakeup_freq set to 600000 - faster wake up,
- ramp_down_step set to 160000 - to slow down decreasing CPU freq,
- when screen is off - governor acts like its 'conservative' version, just checks CPU loads using 500ms rate,
- added sleep_rate_us parameter - sleep rate when screen is off can be changed using this parameter.

v001:
- just initial version fixed to work with X8.

Sources at: GitHub
The Following 45 Users Say Thank You to AnDyX For This Useful Post: [ View ] Gift AnDyX Ad-Free
 
 
8th July 2011, 06:25 PM |#2  
Senior Member
Thanks Meter: 111
 
More
Very nice Andy! Apparently we found ourselves a new Module Man
8th July 2011, 06:25 PM |#3  
firdausmbois's Avatar
Senior Member
Thanks Meter: 112
 
Donate to Me
More
i don't really know what this is all about, its some kind of an AI for cpu governor?
i like the kuyadroid setting(its use native cm setting not setcpu), so its gonna be an setup on cm setting?
8th July 2011, 06:31 PM |#4  
biscoitu's Avatar
Senior Member
Thanks Meter: 147
 
More
Downloading to make some tests
As I can see it is a custom CPU governors, like one "Do it yourself"
Maybe now some people stop complaining about battery life in every ROM. Thx AnDyX
8th July 2011, 06:47 PM |#5  
AnDyX's Avatar
OP Senior Member
Flag Ruda Śląska
Thanks Meter: 457
 
More
Angry
Quote:
Originally Posted by biscoitu

Downloading to make some tests
As I can see it is a custom CPU governors, like one "Do it yourself"

It is rather - get abandoned project ('erasmux') and refresh it . I tried to resolve one of annoying issue:

Quote:

12. Using smartass the CPU frequency does go above 352Mhz (with screen off)
Intentional to keep standby battery life under control.

13. Using smartass the CPU frequency is always at its max (or always at 352Mhz when screen is off)
See "Monitoring the CPU frequency" in the "Advanced subjects".

I will test it now and I let know how it compares to 'ondemand' tomorrow.
8th July 2011, 06:52 PM |#6  
Senior Member
Flag Hyderabad
Thanks Meter: 169
 
More
so in plain english(sorry im a noob) this changes the CPU freq scaling behavior? does it improve preformance?
8th July 2011, 07:16 PM |#7  
AnDyX's Avatar
OP Senior Member
Flag Ruda Śląska
Thanks Meter: 457
 
More
Quote:
Originally Posted by Aashrey99

so in plain english(sorry im a noob) this changes the CPU freq scaling behavior? does it improve preformance?

I will add better explanation soon.
8th July 2011, 07:29 PM |#8  
Nice module AnDyX I'm gonna check it. Did you have to hijack many calls?
8th July 2011, 07:37 PM |#9  
AnDyX's Avatar
OP Senior Member
Flag Ruda Śląska
Thanks Meter: 457
 
More
Quote:
Originally Posted by doixanh

Nice module AnDyX I'm gonna check it. Did you have to hijack many calls?

Only two

But your:

Code:
kallsyms_lookup_name_ax = (void*) OFS_KALLSYMS_LOOKUP_NAME;
is irreplaceable
9th July 2011, 02:50 AM |#10  
Senior Member
Thanks Meter: 13
 
More
Exclamation
AndyX...Is this an AI SetCPU??....when we push it to out phone..it will auto config or we config ourself?
9th July 2011, 07:32 AM |#11  
AnDyX's Avatar
OP Senior Member
Flag Ruda Śląska
Thanks Meter: 457
 
More
Quote:
Originally Posted by lukewong01

AndyX...Is this an AI SetCPU??....when we push it to out phone..it will auto config or we config ourself?

Module has predefinied value - I changed info and explained this in main post.
The Following User Says Thank You to AnDyX For This Useful Post: [ View ] Gift AnDyX Ad-Free
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes