[krn.module] smartass governor for X10 GB (updated, configurable!)
I've managed to compile the module from here: http://forum.xda-developers.com/show....php?t=1159899
updated by AnDyX for X8 which I updated for X10. Initially the module was offered by erasmux
It works for 2.3.3 kernel that is: 2.6.29-00054-g5f01537.
You can configure various parameters:
Copy the cpufreq_smartass.ko to the root of your SD card and then execute the following commands with the phone connected to the PC:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cp /sdcard/cpufreq_smartass.ko /system/lib/modules
echo "smartass" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
You can confirm that installation works either by SetCPU (it will report scaling "smartass") or by executing the following command:
Below are my 17 hours run
I was running this governor today and I managed to get 47% of battery in 17 hours (listening to music 2 hours, with screen on at 0% brightness, reading the news in the metro 10-15 minutes, and 4 email accounts syncing every 15 minutes). During the night (6 hours), it only lost 2% of the battery.
As far as I can see, when it goes to deep sleep, it stays there, if you minimally use the phone, it should last a long time. But once you turn on the phone, it will kick into high gear (998Mhz) very fast, to allow for fast response - and won't use any other intermediate frequencies.
* The minimum amount of time to spend at a frequency before we can ramp up.
#define DEFAULT_UP_RATE_US 24000;
* The minimum amount of time to spend at a frequency before we can ramp down.
#define DEFAULT_DOWN_RATE_US 49000;
* 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.
#define DEFAULT_UP_MIN_FREQ 0
* 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.
#define DEFAULT_SLEEP_MAX_FREQ 245760
* The frequency to set when waking up from sleep.
* When sleep_max_freq=0 this will have no effect.
#define DEFAULT_SLEEP_WAKEUP_FREQ 998400
* 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.
#define DEFAULT_AWAKE_MIN_FREQ 0
* Sampling rate, I highly recommend to leave it at 2.
#define DEFAULT_SAMPLE_RATE_JIFFIES 2
* Freqeuncy delta when ramping up.
* zero disables and causes to always jump straight to max frequency.
#define DEFAULT_RAMP_UP_STEP 220000
* Freqeuncy delta when ramping down.
* zero disables and will calculate ramp down according to load heuristic.
#define DEFAULT_RAMP_DOWN_STEP 160000
* CPU freq will be increased if measured load > max_cpu_load;
#define DEFAULT_MAX_CPU_LOAD 75
* CPU freq will be decreased if measured load < min_cpu_load;
#define DEFAULT_MIN_CPU_LOAD 25
* When screen if off behave like conservative governor;
#define DEFAULT_SLEEP_RATE_US (usecs_to_jiffies(500000))
To update one of the settings, the standard echo command should be executed:
echo "80" > /sys/devices/system/cpu/cpu0/cpufreq/smartass/max_cpu_load
(in this example, the max_cpu_load will get the value 80, meaning that the CPU should be 80% at least, before a jump in frequency happens.
User biscoitu has a list of settings here http://forum.xda-developers.com/show...&postcount=161
but for X8 I think. They could be a starting point for X10 tuning
I will also try to see which settings work best, but it will take a while.
Use it at your own risk!
Special thanks to:
a) wolf which gave me hope with X10
b) all guys that made flashing X10 a reality
c) AnDyX for the source code and the workaround for the missing kernel symbols.