Needs a custom kernel that has "lulzactive" cpu governor.
Based on "interactive" governor
Inspired by erasmux's "smartass" governor (included in Flykernel)
cpu frequency changes from (Lx) to (Lx - pump_up_step)
up sampling time = 24000us (from smartass governor)
eg )
(L0)1200 - (L1)1000 - (L2)800 - (L3)500 - (L4)200
inc_cpu_load=60%, pump_up_step=1
cpu_load load="" frequency="">
cpu_load load="" frequency="">
(L0)1200 - (L1)1000 - (L2)800 - (L3)500 - (L4)200
inc_cpu_load=50%, pump_up_step=2
cpu_load load="" frequency="">
cpu_load load="" frequency="">
cpu work load cpu frequency keeps the current value or changes from (Lx) to (Lx + pump_down_step)
down sampling time = 49000us (from smartass governor)
eg )
(L0)1200 - (L1)1000 - (L2)800 - (L3)500 - (L4)200
inc_cpu_load=60%, pump_down_step=1
cpu_load load="" frequency="">
cpu_load load="" frequency="">
screen off
cpu frequency is locked at scaling min freqeuncy.
default min freq of Galaxy S II is 200MHz.
you don't need to use "screen off" profile of SetCPU.
eg )
(L0)1200 - (L1)1000 - (L2)800 - (L3)500 - (L4)200
screen_off_min_step=3
(L4)200 ~ (L3)500
screen_off_min_step=1
(L4)200 ~ (L1)1000
Values
Following values are in /sys/devices/system/cpu/cpufreq/lulzactive/
inc_cpu_load: 0~100%, default is 60%
pump_up_step: 0 ~ (frequency_table_size - 2), default is 1
pump_down_step: 0 ~ (frequency_table_size - 2), default is 1
screen_off_min_step: 0 ~ (frequency_table_size - 1), default is (frequency_table_size - 2)
up_sample_time: 10,000 ~ 50,000μs, default is 24,000μs
down_sample_time: 10,000 ~ 100,000μs, default is 49,000μs
debugging
1 = print screen on/off message
2 = print governor start/stop message
4 = print frequency changing
7 = print all above (bitwise or, 1|2|4 = 7, default 1|2 = 3)
cat /proc/kmsg | busybox grep "lulzactive"
Feedback
http://tegrak2x.blogspot.com/2011/11/lulzactive-governor-v2.html