Move the shelf ramp above the drives' working range, add a deadband
Retiring 8x2TB for 4x8TB + a 16TB moved the hottest drive to 40-41c, exactly the old 40c ramp start, and the fan flipped 10<->15% every 30 seconds. The ramp is now 44-56c, which puts the drives back on the floor with 19c of headroom to their 60c limit. Adds the deadband from fan_speed.sh so the shelf does not chase every degree once drives do climb into the ramp, with a downward-only periodic settle so damping cannot leave it permanently loud. selftest and disks no longer take the serial lock - they do not open the port, and refusing to run them while the service is up is unhelpful. The new tests caught a real bug: in `local a=$1 b=$a` bash expands the right-hand sides before the locals exist, so the held value was silently empty. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
22
README.md
22
README.md
@@ -113,14 +113,28 @@ All knobs are at the top of `das_fanctl.sh`:
|
||||
| `PORT` | `/dev/ttyS1` | Serial device the service cable lands on |
|
||||
| `CHECK_INTERVAL` | `30` | Seconds between temperature readings |
|
||||
| `KEEPALIVE_INTERVAL` | `5` | How often to re-send `_shutup` |
|
||||
| `DISK_LOW_TEMPERATURE_THRESHOLD` | `40` | At/below this, run at `LOW_FAN_SPEED` |
|
||||
| `DISK_HIGH_TEMPERATURE_THRESHOLD` | `50` | At/above this, run at `HIGH_FAN_SPEED` |
|
||||
| `DISK_LOW_TEMPERATURE_THRESHOLD` | `44` | At/below this, run at `LOW_FAN_SPEED` |
|
||||
| `DISK_HIGH_TEMPERATURE_THRESHOLD` | `56` | At/above this, run at `HIGH_FAN_SPEED` |
|
||||
| `FAN_SPEED_DEADBAND` | `8` | Hold the current speed until the request moves this far |
|
||||
| `SETTLE_INTERVAL` | `300` | Allow a downward settle this often |
|
||||
| `LOW_FAN_SPEED` | `10` | Percent |
|
||||
| `HIGH_FAN_SPEED` | `60` | Percent |
|
||||
| `BP_*_THRESHOLD` | `30` / `45` | Fallback curve, backplane air sensors |
|
||||
|
||||
The defaults were sized against an idle spread of 32–39c across nine mixed SATA/SAS
|
||||
drives. Your airflow is not that airflow — watch a day of log before trusting them.
|
||||
**Start the ramp above the drives' normal working range.** This is the single most
|
||||
common way to make a shelf cycle audibly: if the ramp starts inside the range the drives
|
||||
already occupy, ordinary drift crosses it and the fans flip every cycle. The curve is
|
||||
~4%/degC, so one degree moves the fan noticeably.
|
||||
|
||||
Worked example: the original 40–50c was sized for 8×2TB drives idling at 32–39c. Retiring
|
||||
those for 4×8TB + a 16TB moved the hottest drive to 40–41c — exactly the old ramp start —
|
||||
and the fan flipped 10↔15% every 30 seconds (18 samples at 10, 22 at 15). Moving the ramp
|
||||
to 44–56c put the drives back on the floor: 11 consecutive samples at 10%, and they still
|
||||
have 19c of headroom to their 60c limit.
|
||||
|
||||
`FAN_SPEED_DEADBAND` damps what remains, so once drives do climb into the ramp it does not
|
||||
chase every degree. A settle is permitted every `SETTLE_INTERVAL`, downward only —
|
||||
a symmetric deadband would catch the fan on the way up and never let it back down.
|
||||
|
||||
`KEEPALIVE_INTERVAL` is inherited from the 5s cadence the original setup used, not
|
||||
measured. How fast the EMM actually reverts is unknown; if the fans audibly surge
|
||||
|
||||
Reference in New Issue
Block a user