ec
ec copied to clipboard
Use temperature-based hysteresis
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.
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?
Initial attempt done in fan-temp-hyst.
Nice!