Hacker News new | ask | show | jobs
by blagie 719 days ago
Simplest? Perhaps.

Stupidest? Definitely.

What one really wants is a target temperature. There are two pieces I'd use here:

- Baseline open-loop controller based on power usage (integrated over some time; e.g. past 30 seconds)

- Closed-loop controller for fine-tuning with feedback from measured temperature to fan speed (PID is fine, but the integral term is critical)

The latter can be used to periodically calibrate the former.

You do not want a simple mapping of temperature to fan speed.

The odd issue about the above is that done wrong, continuously-changing fan speeds can be upsetting to users. Once can use a discrete approximation with hysteresis to avoid that.

1 comments

I wrote a very simple script that did linear scaling between 36 to 70c, and it did a fantastic job of keeping my GPU at reasonable temps. It really doesn't need to be that complicated to function well.
For some meanings of "well."

Setting fan speed to max would also do a "fantastic job of keeping my GPU at reasonable temps."

Linear scaling means your fan is not going fast enough at high temps, and is going too fast at low temps. If your GPU is at 30C, the fan should slow down. It will be at 45C instead, which has no effect on ageing. Likewise, if your target is 45C, your fan isn't going nearly fast enough at high power.