georgewhewell / undervolt

Undervolt Intel CPUs under Linux

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature] Dynamic undervolt based on frequency

UnicodeMan opened this issue · comments

Hi. I have this idea.
I have noticed that my Intel CPU (core+cache) can tolerate quite a huge undervolt (~-150mV), but only on a high frequency. Lets say, I start a CPU miner, then I undervolt my CPU. Miner runs well for any amount of time, but when I close it and CPU frequency dips, system freezes.
I confirmed this by increasing minimum frequency to a higher value. I've seen similar stories in a few forums, too.

So in theory, there could be some kind of undervolting curve instead of a static undervolt value that is applied for all and any frequency, resulting in greater undervolt when it matters the most - at high load.
In practice this may seem daunting as the drivers in the Linux kernel as well as the hardware itself are responsible for CPU frequency changes, not this tool.

I am not sure how implementation would come about (if it is at all possible), or if simplier workarounds would have to suffice (changing min frequency when game/something-that-eats-cpu starts, then undervolting, reverting both on game/something-that-eats-cpu exit)...

Is this something you would consider, or maybe thought about it already?

It's an interesting idea for sure.. as you say, we need to supply some curve instead of fixed offset but Intel CPU don't seem to expose this functionality, i think. Possibly it could be implemented as kernel module to change offset when frequency changes, but i think at a minimum it would require disabling intel_pstate HWP- i understand this feature gives performance/power improvements itself, so setting frequency manually with increased undervolt may not even perform better. i think implementing in userspace (this tool) is pretty much impossible.. i checked and can replicate your result (can undervolt greater amounts under load), but cpu crashes as soon as load is removed, no time to increase voltage again

It may be quite a trivial fix from Intels' side (firmware+driver update), so quite possibly enthusiasts may have to nag Intel. Unless they manage voltages linearly (in some unchangeable hardware level), with initial min-max values. I mean their, "autonomous" mode (probably ME or ME + something). I may have misspoken here (somewhat ignorant, as I have never read Intel documentation, so I am "assuming" how the voltage/frequency control is handled in accelerated way)

Recently I have stumbled upon a less promising test result.
Could you try reproducing this scenario: set minimum frequency of your device same as maximum, launch CPU-intense application, undervolt, run for a while, then kill the application.
My laptop, dunno why, still hangs after removing load even though the frequency shouldn't dip.
If that scenario is reproduceable, I am not sure this improvement should be pursued. It may be useful to test this on a larger sample size and variety (different architectures, form-factors, etc).

I kinda anticipated userspace implementation with everything as-is would not be plausible, so no surprise there.