Let the fan settle downward on a re-assert
A symmetric deadband catches the fan on the way up and holds it there: on iz-pve0 under load, 17 of 20 samples ran at 38% while the curve wanted 34-36%, and nothing would bring it down until the request fell a full 8 points. Damping was turning into a permanently louder machine. A re-assert may now settle the speed downward to the current request. Upward moves still require a full deadband crossing, so the drift this was built to prevent cannot come back - covered by a test. Verified under a live migration: settled 38 -> 36 on the first re-assert, then one change in ten minutes while the request wandered 36-42, CPU stable at 66-69c and disks a degree cooler. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,13 @@ settle — measurably worse than stock. Measured on iz-pve0: stock iDRAC held on
|
||||
minutes off the same signal. A request for full speed is never held back, and the held
|
||||
value is re-pushed every `FAN_REASSERT_INTERVAL` in case the BMC forgets it.
|
||||
|
||||
A deadband alone makes a machine permanently louder: it catches the fan on the way up and
|
||||
then nothing brings it down until the request falls a full deadband. Measured on `iz-pve0`
|
||||
under load, 17 of 20 samples ran at 38% while the curve wanted 34-36%. So a re-assert -
|
||||
and only a re-assert - is allowed to settle the speed **downward** to what is actually
|
||||
wanted. Upward moves still need a full deadband crossing, which is what stops this
|
||||
reintroducing the drift it was built to prevent.
|
||||
|
||||
Note that iDRAC's own profile regulates to a target *RPM* (closed loop, rock steady),
|
||||
while manual control sets a *PWM* percentage (open loop, so measured RPM still wanders a
|
||||
percent or two at a fixed setpoint). That residual is inherent to manual control, not
|
||||
|
||||
Reference in New Issue
Block a user