erpalma / throttled

Workaround for Intel throttling issues in Linux.
MIT License
2.68k stars 166 forks source link

Expand support / documentation for other laptops #15

Closed galfwender closed 6 years ago

galfwender commented 6 years ago

Thanks for your work on this. I just wanted to let you know that it also works on laptops from other manufacturers, e.g. Dell XPS 9370 with the same cpu. Perhaps the documentation could be updated to include this? I am also interested to know if the undervolting would work (I felt it best not to try it)?

On my XPS it now manages to sustain between 2.8 and 3.0 Ghz with temp between 97-99C depending on ambient. It no longer scales back to 2.2-2.4 Ghz with temps of 80C.

However I did note that the service fails if a temp of more than 97C is specified. In my case, although pushing the limits, it seems to be OK with the value manually set at 98 using wrmsr and it eeks out a further 50-100Mhz.

erpalma commented 6 years ago

Yeah, I guess it should work on almost any (>6th gen) Intel laptop! I'm glad that you can confirm my theory. I can certainly update the doc to reflect this and I would encourage other people to try it on different brands/models too.

The undervolting should work since I set the voltage planes directly to the cpu model-specific registers. Of course you need to find the right values for your system. As a starting point you can try mine:

[UNDERVOLT]
# CPU core voltage offset (mV)
CORE: -105
# Integrated GPU voltage offset (mV)
GPU: -85
# CPU cache voltage offset (mV)
CACHE: -105
# System Agent voltage offset (mV)
UNCORE: -85
# Analog I/O voltage offset (mV)
ANALOGIO: 0

However I suggest you to try with lower values first and you can also check some online tutorials about this. I use prime95 to verify the stability of my system. Once you have found the lowest stable value I suggest you to raise it by 10-20 mV to be even more safe (i.e. avoid any crash or errors).

About the maximum trip temperature, in the script I only allow values in the range 40 < temp < 98. I really suggest you not to go over 95/96C as if the CPU reaches 100C it will automatically shut down. If you set e.g. 98C the temperature will fluctuate around this value and it can easily reach +2C under some circumstances. Still, if you want to set 98C you can just remove line 86 of my script (assert 40 < config.getfloat(power_source, 'Trip_Temp_C') < 98).

galfwender commented 6 years ago

Thanks - I can confirm the undervolting works too. Perhaps instead of silently failing, the script could cap the limit at 97 instead? I was puzzled for a few minutes as to why it was not working.

erpalma commented 6 years ago

Good advice thank you! I've just updated the config loading code.