mirror of
https://github.com/ergosteur/ergo-proxmox-scripts.git
synced 2026-10-28 13:00:37 -04:00
Make IPMI fan control temperature-aware without Docker
Manual fan mode pins the fans at a fixed duty and never ramps, so a sustained load had no cooling response until the BMC's own critical-temperature override stepped in. docker-idrac.sh solved that, but needs Docker, which is not installed on the host. ipmi-fancontrol-daemon polls the CPU sensors and switches between the fixed duty and the BMC's automatic curve around a threshold, which is what that container did. Measured on the host: 1440 RPM pinned versus roughly 4200 RPM on the automatic curve at the same 60C. - Hysteresis, default 5C, stops the fans oscillating at the boundary. - An unreadable temperature fails safe to automatic rather than staying pinned. - SIGTERM restores the automatic curve, with ExecStopPost as the backstop for an outright kill. Default to the local "open" interface. It needs no credentials and no network, which matters for the shutdown path, where lanplus to the iDRAC could fail once networking is down. ipmi-fancontrol-auto and -manual honour the same setting and stay available for ad-hoc use. Enable the third-party PCIe cooling response suppression that docker-idrac.sh was configured with, so the automatic curve is not held to a raised floor by the aftermarket NICs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
af838987dd
commit
00384e7463
@@ -1,4 +1,4 @@
|
||||
# Credentials for the BMC user driving ipmi-fancontrol-manual / ipmi-fancontrol-auto.
|
||||
# Configuration for the ipmi-fancontrol scripts and daemon.
|
||||
#
|
||||
# Copy to conf/ipmi-fancontrol.conf next to the scripts and lock it down:
|
||||
# cp conf/ipmi-fancontrol.conf.example conf/ipmi-fancontrol.conf
|
||||
@@ -7,11 +7,34 @@
|
||||
# The scripts look for it relative to their own location, so this works both in a
|
||||
# checkout and deployed at /opt/ergosteur. Override with IPMI_FANCONTROL_CONFIG.
|
||||
|
||||
# How to reach the BMC.
|
||||
# open - local /dev/ipmi0, needs no credentials or network (recommended
|
||||
# on the host itself; requires the ipmi_si and ipmi_devintf modules)
|
||||
# lanplus - over the network, using the host/user/password below
|
||||
IPMI_INTERFACE=open
|
||||
|
||||
# Only used when IPMI_INTERFACE=lanplus.
|
||||
IPMI_HOST=169.254.0.1
|
||||
IPMI_USER=fancontrol
|
||||
|
||||
# Read by ipmitool -E, so it never appears in the process table.
|
||||
IPMI_PASSWORD=changeme
|
||||
|
||||
# Fan speed applied in manual mode, as a raw hex byte (0x15 = 21%).
|
||||
# Fan duty held while the CPUs are cool, as a raw hex byte (0x15 = 21%).
|
||||
FAN_SPEED=0x15
|
||||
|
||||
# --- Daemon settings (ipmi-fancontrol-daemon only) ---
|
||||
|
||||
# At or above this CPU temperature in degrees C, hand control back to the BMC's
|
||||
# automatic curve so the fans can actually ramp.
|
||||
CPU_TEMP_THRESHOLD=70
|
||||
|
||||
# Cool back down to (CPU_TEMP_THRESHOLD - CPU_TEMP_HYSTERESIS) before the fixed
|
||||
# speed is re-engaged. Stops the fans oscillating around the threshold.
|
||||
CPU_TEMP_HYSTERESIS=5
|
||||
|
||||
# Seconds between temperature checks.
|
||||
CHECK_INTERVAL=60
|
||||
|
||||
# Dell raises the fan floor whenever it sees a third-party PCIe card. Set true to
|
||||
# suppress that, which is usually what you want with aftermarket NICs or HBAs.
|
||||
DISABLE_THIRD_PARTY_PCIE_COOLING_RESPONSE=false
|
||||
|
||||
Reference in New Issue
Block a user