[HTC One Mini] Ruud033:
Disable D2W, I also had this issue. D2W is the problem.

I'm running InsertCoin 4.0.6 (android 4.4.4) with the latest Xceed kernel for 4.4.3

I know most are on 3.0.7 but this version runs fine for me. I have some BT issues every now and then with my Moto 360 (not connecting etc..) but that's acceptable I think. I'd rather stay on 4.4.4

I'm experimenting with battery life, governors and I/O schedulers. I'm trying to max out the battery / performance rate.

I am willing to sacrifice

some

performance in the form of stuttering / lag / loading times for a better battery life.

My aim is to use my phone for a full 2 days (starting 07:00 the first day, ending at 23:00 the last day) and not changing my habits too much. The main issue I had was the screen-on time. As described in this post by user [MENTION=2309555]pure.by[/MENTION] you can gain some performance with the MSM-DCVS CPU governor.

Please figure out your own device's sleep yourself, I do not care about screen-off time, I already have this covered by reducing wake locks etc and removing apps I don't need. I use Amplify (go get that) for wake control. I assume that you can optimise your device's sleep yourself. This is all about screen-on time on the M4.

(Please read pure.by his post, it's very usefull as it also was my starting point)

However, I still had a lot of battery drain during the screen-on time. I was wondering how this came to be? I figured that it had to be something to do with the clock rates of the CPU and voltages. I've read about underclocking and undervolting before but as a new guy on this block I was a bit scared to play with those values at first. (I do now)

I figured that, after monitoring a lot, the MSM-DCVS governor scales the CPU clocking rates (and voltages) a LOT up and down. It gave me the feeling that it was either all or nothing (in terms of MHz). Apps like CoolTool and BetterBatteryStats told me that my CPU was either in 384 MHz or 1728 MHz.. nothing in between really. I also noticed that the MSM-DCVS governor had a sample time (the amount of time that a CPU stays in a certain speed before going back down) that was longer than expected.

I figured that there has to be an other way to just 'apply a governor and hope for the best' by tweaking certain parameters to my needs. Notice that this is MY setup for MY needs based upon MY experiences. This does not mean that it can be useful for you as well.

Apps I've used to get the results I wanted (before reading any further):

- Synapse (for disabling krait voltage boost, checking the C2 sleep state to true)

- Trickster Mod (for setting the maximum frequency, does not work in Synapse and also for playing around with MinFree)

I've been reading and searching a lot in these forums to get the best battery life with a governor, I found the most interesting to be the "Interactive" governor, not only due to it's great capabilities, but also for it's tweakabilities.

After reading this post, starting from there I learned the logic from this post that included changing the parameters to my needs.

After tweaking and experimenting for weeks and weeks I've come to these settings in both Synapse and Trickster Mod (I have both installed)

Synapse:

Max core frequency: 1404 MHz (you really do not need any more)

Min core frequency: 384 MHz(if you have a custom kernel, the frosted kernel for example, you can also set it to 192 MHz)

Governor: Interactive

Min_sample_time: 30000 (the amount of time before we upscale in MHz, in this case 30ms, this is quite low to still have performance)

Boost: 0 (no boost enabled)

Hispeed_Freq: 864000 (864 MHz as target frequency once the load has exceeded 90% (as stated in go_hispeed_load))

Timer_Rate: 20000 (timer tick rate, in my case 20ms.. I tried setting it to 30ms but then my phone reboots on regular basis)

Above_hispeed_delay: 60000 (the amount of time before we downscale in MHz, in this case 60ms to keep some speed when scrolling and releasing) (once your finger untouches the screen the CPU easily goes back to 384 MHz due to the load being 'gone' and thus causing stuttering)

go_hispeed_load: 90 (the amount of load in % before we go to the hispeed_freq (in my case 864 MHz)) (it will upscale even more if the load is even more)

The thing is, that in the first post which I linked to, there is a mention of the target_load variable. I could not find this variable in the Xceed 4.4.3 kernel.. I think the developer didn't include this in the kernel. :( That's to bad.

Set lower frequencies undervolt: 50 mV

Set higher frequencies undervolt: 50 mV

Krait voltage boost: Disabled

Krait C-states settings:

[Checked] Enable C0 (WFI)

[Checked] Enable C2 (stand alone power collapse)

[Unchecked] Enable C3 (power collapse)

GPU didn't change.

I/O Scheduler: SIO (I've also tried deadline, that's also a really nice scheduler)

Internal storage read-ahead: 512 kB

[Unchecked] I/O Stats (only logs stuff and eats battery, don't need this unless you're doing something with it)

Small scheduler readout:

I've tried many schedulers and found out that they really have an influence on battery life, a significant one, especially in the Interactive governor. I think that the I/O scheduler sort of determines the amount of load on the processor (and thus controls more of the MHz scaling since we trigger via a % of load to set a higher MHz).

FIOPS is the best in performance I've noticed, but with the same setup (and only a different scheduler) I have had 12 hours of battery life with it. With other schedulers such as SIO and Deadline it was much much better (I think mostly due to the CPU scaling correctly/better)

D2W and HTC logo remapping are all DISABLED. DO NOT USE D2W it's a battery killer!!!

Vibrator Intensity Control:

set to 1600 mV (less volt is less battery usage! I can still feel it thou)​

Trickster Mod:

First of all, I've bought (donated) for the PRO version of this, I recommend you do this for all the features!

Minfree control:

I've experimented with this, didnt really work out for me. I can imagine that we can save some RAM and thus have less stuttering and more performance, but to date I didnt mess around with it too much.

Scheduler as set in Synapse (if you set it in one it will also be in the other)

CPU Frequency Control:

Frequency Lock [ON] (VERY IMPORTANT!!! Else the CPU will still go to 1728 MHz!!)

Max core frequency: 1404 MHz (you really do not need any more)

Min core frequency: 384 MHz (if you have a custom kernel, the frosted kernel for example, you can also set it to 192 MHz)

Governor as set in Synapse (if you set one it will be in the other)

MP-Decision [OFF]

I've noticed that when turning this on, the CPU does not scale as I want it to scale, It starts to act like 'all or nothing' again so I can't really set the proper frequency trough the load % trigger!

In other words, it easily sets the load to 100% VERY fast and thus maxxing out the frequency VERY fast (we do not want this)​

That's about it! The rest is not modified so just leave it as it.

Keep in mind that I:

- Whatsapp a lot

- Check Facebook every now and then

- Play a game called 'Trivia Crack' every now and then

- Browse websites a lot

- Make a phone call every now and then

The results are in the attachments!