ec icon indicating copy to clipboard operation
ec copied to clipboard

Use temperature-based hysteresis

Open crawfxrd opened this issue 11 months ago • 3 comments

We currently use a time-based hysteresis of the duty (output value). This method results in poor behavior of fans.

With HEATUP, it can result in:

  • slow response of increasing temps that could lead to the CPU throttling before fan reaches its max point

With COOLDOWN, it can result in:

  • fans being held at higher duties than necessary over periods of time
    • such as short temp spike at start of a CPU-intense workload like compilation
  • not reducing temps sufficiently below the point threshold, resulting in rapid oscillation of fan duty
    • noticeable at point 0, which can result in near-constant fan on/off

Use a temperature-based (input value) hysteresis instead.

crawfxrd avatar Jan 04 '25 00:01 crawfxrd

I was just looking at the source code trying to figure out how to do this. Are you actively working on this problem or just noting the issue hoping someone will pick it up?

Any idea why the fan duty cycle is set to never exceed 65%, no matter how hot the system gets?

earlruby avatar Feb 03 '25 02:02 earlruby

Initial attempt done in fan-temp-hyst.

crawfxrd avatar Feb 03 '25 15:02 crawfxrd

Nice!

earlruby avatar Feb 03 '25 18:02 earlruby