Introducing XDA:DevCon – A Conference For Developers By Developers
XDA Developers Android and Mobile Development Forum
Forgot your password?
 
Post Reply+
Tip us?
 
AnDyX
Old
(Last edited by AnDyX; 22nd February 2012 at 10:45 AM.)
#1  
AnDyX's Avatar
Senior Member - OP
Thanks Meter 444
Posts: 180
Join Date: May 2008
Location: Ruda Śląska
Angry [Module] | X8 | X10 mini/pro | AX8_SMARTASS v002 | 'smartass' governor | [2011-07-19]

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

|Xperia U on ICS| currently powered by SMARTASS / SIO
GIT
Xperia U | SMARTASS | ONDEMANDAX | PEGASUSQ | LULZACTIVEQ | SIO | VR
Neo V | SMARTASSV2 / ONDEMANDX
X8 | AX8NETFILTER | AX8_SMARTASS | AX8MT | AX8NOALS
The Following 43 Users Say Thank You to AnDyX For This Useful Post: [ Click to Expand ]
 
khartaras
Old
#2  
Senior Member
Thanks Meter 106
Posts: 222
Join Date: Feb 2011
Very nice Andy! Apparently we found ourselves a new Module Man
Samsung Galaxy Note II | ClockworkMod is my drug.
 
firdausmbois
Old
(Last edited by firdausmbois; 8th July 2011 at 06:37 PM.)
#3  
firdausmbois's Avatar
Senior Member
Thanks Meter 109
Posts: 203
Join Date: Jan 2011

 
DONATE TO ME
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?
 
biscoitu
Old
#4  
biscoitu's Avatar
Senior Member
Thanks Meter 138
Posts: 665
Join Date: Apr 2011
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

"Never tell your problems to anyone...20% don't care and the other 80% are glad you have them."

Lou Holtz
 
AnDyX
Old
#5  
AnDyX's Avatar
Senior Member - OP
Thanks Meter 444
Posts: 180
Join Date: May 2008
Location: Ruda Śląska
Quote:
Originally Posted by biscoitu View Post
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.

|Xperia U on ICS| currently powered by SMARTASS / SIO
GIT
Xperia U | SMARTASS | ONDEMANDAX | PEGASUSQ | LULZACTIVEQ | SIO | VR
Neo V | SMARTASSV2 / ONDEMANDX
X8 | AX8NETFILTER | AX8_SMARTASS | AX8MT | AX8NOALS
 
Aashrey99
Old
#6  
Senior Member
Thanks Meter 33
Posts: 194
Join Date: May 2011
Location: Gopalpur
so in plain english(sorry im a noob) this changes the CPU freq scaling behavior? does it improve preformance?
 
AnDyX
Old
#7  
AnDyX's Avatar
Senior Member - OP
Thanks Meter 444
Posts: 180
Join Date: May 2008
Location: Ruda Śląska
Quote:
Originally Posted by Aashrey99 View Post
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.

|Xperia U on ICS| currently powered by SMARTASS / SIO
GIT
Xperia U | SMARTASS | ONDEMANDAX | PEGASUSQ | LULZACTIVEQ | SIO | VR
Neo V | SMARTASSV2 / ONDEMANDX
X8 | AX8NETFILTER | AX8_SMARTASS | AX8MT | AX8NOALS
 
doixanh
Old
#8  
Recognized Developer
Thanks Meter 4710
Posts: 1,247
Join Date: Jan 2011

 
DONATE TO ME
Nice module AnDyX I'm gonna check it. Did you have to hijack many calls?
IScreamDX v004 | GingerDX v028 | GingerDX v015 for GT-I9000 | LinuxDX v004 | FroyoBread v023b FINAL | X8Gesture v007
X8Overclock v004 | X8Undervolt v001 | X8MDDI v001 | X8Kconfig v001 | X8Netfilter dev | FroyoBeam dev | X10MPMultitouch

shakira/gdx31stock - best experience ever | galaxysmtd/slimbean | p1/cm | anzu/slimbean | maguro/slimbean
 
AnDyX
Old
#9  
AnDyX's Avatar
Senior Member - OP
Thanks Meter 444
Posts: 180
Join Date: May 2008
Location: Ruda Śląska
Quote:
Originally Posted by doixanh View Post
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

|Xperia U on ICS| currently powered by SMARTASS / SIO
GIT
Xperia U | SMARTASS | ONDEMANDAX | PEGASUSQ | LULZACTIVEQ | SIO | VR
Neo V | SMARTASSV2 / ONDEMANDX
X8 | AX8NETFILTER | AX8_SMARTASS | AX8MT | AX8NOALS
 
lukewong01
Old
#10  
Senior Member
Thanks Meter 13
Posts: 318
Join Date: May 2011
AndyX...Is this an AI SetCPU??....when we push it to out phone..it will auto config or we config ourself?

 
Post Reply+
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Go to top of page...